Jump to content

bc-vnt

Active Members
  • Posts

    595
  • Joined

  • Last visited

  • Days Won

    4

Everything posted by bc-vnt

  1. Scanning result Download it Print with tool : Source : Imports System.Xml Imports System.IO Public Class Form1 Private Sub btn_resolve_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_resolve.Click GetIPInfo(txt_IPAddress.Text) End Sub Public Sub GetIPInfo(ByVal IP As String) Dim resolver As New XmlUrlResolver() Dim myUri As New Uri("http://freegeoip.appspot.com/xml/" & IP) Dim s As Stream = DirectCast(resolver.GetEntity(myUri, Nothing, GetType(Stream)), Stream) ' Construct a reader using the Stream object. Dim xmlTextReader As New XmlTextReader(s) Dim xdoc1 As New XmlDataDocument() xdoc1.DataSet.ReadXml(xmlTextReader, XmlReadMode.Auto) Dim ds As DataSet = xdoc1.DataSet 'DG_LiveRates.DataSource = xdoc1.DataSet; 'DataSet ds = new DataSet(); Dim dt As DataTable = ds.Tables(0) DG_IPInfo.DataSource = dt End Sub Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load lbl_myip.Text = GetIP.GetExternalIp() End Sub End Class Sorry pentru treaba cu " ping www.rstcenter.com " era doar pentru demonstratie , am pus consola CMD peste date .
  2. Introduction If you're new to UDP, I suggest you reading UDP Send and Receive using threads in VB.NET - CodeProject by Kumudu Gunasekara. I used his work as a take-off point, and wish to thank him. There's also a TinyUDP - Simple UDP Client/Server Components for .NET - CodeProject article on Code Project, which also looks very promising. What I'm doing here is going a bit more in depth, to show a possible way of UDP communication. As you may already heard UDP is well-know as "unreliable" protocol. Unreliable means that you have no guarantees that the packets you send will ever reach their destination. UDP also doesn't guarantees that individual packets of a transmission will arrive in the same order they were sent. There is also a problem of duplicate messages (you sent 1 and 3 arrived, woah!). If any kind of reliability for the information transmited is needed, it must be implemented in upper layers - i.e. in your application. So your first task as UDP coder is to design a low-level protocol, which will be handling datagram transfers for you. Two things it must do: ensure delivery and ensure delivery-in-correct-order. On top of that protocol you may later add a protocol for actual communications (i.e. chat message commands, nickname changes, etc). I do not recommend you to use my code in your real-world client/server applications. Just see how it works (not too good at times!) and build a better one. Protocols As mentioned before, this design uses 2 protocols, low-level or delivery protocol for datagram transmissions and and high-level or actual protocol for application communications. Both protocols benefit from BinNumerization proccess, which I must explain before we go on. BinNum, UnBinNum and packet delimiting Imagine a task: transfer 2 vairables A and B (they containt numbers 34 and 257) over a network. What are the possible ways to do this? ASCII. Encode like this (most common way): 34|257 Numbers are delimited by a special ASCII character, called.. delimiter. Some times CrLf is used for such purpose. The main downfall of this method is a guy, who comes to your chat with a name like 'TheE||vis' . And even more serious problem lies in a sphere of file transfer. Binary files tend to use all kind of bytes in them, you know. Delimiting is the most obious way to do things, and because of that, I strongly recommend avoiding it. Encode like this (sometimes used in ASCII protocols): 0003400257 Each number uses 5 digits to represent itself and adds trailing zeros. This way, dividing the string into 2 parts will give you 00034 and 00257. Downfalls: you lose some bytes on stupid zeros. Encode like this : 2.343.257 What's actually going on here is a length of string representing your number delimited from the actual number with an ASCII character. This way, parser reads up everything you need before the dot (will get "2"), then eats out exactly 2 characters ("34"), which will leave him with a "3.257" string, and all he has to do is.. repeat. By the way, if you're developing a protocol, consider the above scheme! This is ofcourse more imortant on TCP, where the packets are streamed and cutting/fitting chunks is a number one priority. Binary. That's easy. Each number is encoded as a byte. Or as a word. This is almost a perfect way to transfer data. The only downfall of which is: I can encode 34 into a byte, but have no way to fit 257 into a byte, so, I have to use a word for it. If variable B (257) becomes 255 someday, it will spare 3 extra bytes for it's word encoding. BinNumerization. This method requires some work on the sending and receiving sides, but NEVER spares even a single byte with unnessecery data. The number is encoded as byte, if it is below 248 and as a string with it's length added if it's above. 255-248 = 7 digit numbers maximum. You can adjust those values for your needs. But be sure to do this on both sides! Public Function UnBinNum(ByRef S$, Optional ByVal EatOut As Boolean = True) As Integer 'MsgBox("CALL FOR UNBIN NUM:" & S$) Dim l As Int16 Dim nval As Long Dim h As String 'On Error GoTo Error If Asc(Left(S$, 1)) < 249 Then nval = Asc(Left(S$, 1)) If EatOut = True Then S$ = Right$(S$, Len(S$) - 1) Else l = Asc(Left$(S$, 1)) - 248 h = Mid$(S$, 2, l) If Len(S$) < l + 1 Then nval = -1 : GoTo ErrorS 'Debug.Print "len: " & l 'Debug.Print "hex:" & h 'Debug.Print "unhex:" & HexToDecimal(h) nval = HexToDecimal(h) If EatOut = True Then S$ = Right$(S$, Len(S$) - l - 1) End If ErrorS: 'MsgBox("nval:" & nval) Return CInt(nval) End Function Function BinNum(ByVal NUM) As String Dim h As String, l As Byte If NUM > 248 Then h = Hex(NUM) l = Len(h) + 248 If l > 255 Then MsgBox("L:" & l & "...." & h & "..." & Len(h)) Return (Chr(l) & h) Else Return (Chr(NUM)) End If End Function Yeah, I use those 2 in VB6 too. They also rely on HexToDecimal function found in the source (written not by me). Also note, that UnBinNum takes it's argument ByRef!Anyways, this implementation is not perfect (one of the downfalls is that you can't use negative numbers), but should give you a fair idea and prove, that the concept IS perfect. Well, at least almost: you still lose some bytes when encoding numbers in range 249-255 (they are encoded as strings, not as bytes). LOW-Level Delivery Protocol Each packet begins with 2 bytes and 1 BinNum representing the ClientID, PacketType and Sequence. The rest is a HIGH-level data and shouldn't be used on a low level. All three are vital. Since there is no way to determine a single connection in UDP (all you have to deal with is: IP, PORT, DATA that came) clientID comes in place. On my server example IP+ClientID form a unique client, while IP+Port are only used while there's no ClientID at all. But that happens only during the handshake. Handshake Client begins to transmit the NIL packet (made of three empty bytes, or 2 empty bytes and 1 empty BinNum, which is the same at the moment). Basicly client is saying: I'm new client, no ClientID, no transmission history, no previous experience, please give me a ClientID, I could work with. The server assigns a new ClientID to a pair of IP+port, and sends a welcoming message (one from the high level protocol). PacketTypes & Delivery The most usefull PacketType is INF (byte 2). It suggests a real data inside. With each INF received, receiver should send back the packet with type ACK (byte 0) or BUF (byte 1) which mean basicly the same: PACKET RECEIVED, DO NOT RESEND. The sender keeps sending the INF from the queue until it gets an ACK (or a BUF). What is the differnce between ACK and BUF you ask? BUF is sent whenever the packet is out of sequence (too old or came from the future), and might be not implemented by your client (if you have no buffering mechanism), but the receiver MUST ACK every incoming packet. 'Sending side Function Compose(ByVal RAWDATA as String) 'increment counter outSeq += 1 'add header RAWdata = Chr(clientID) & Chr(typ) & BinNum(outSeq) & RAWdata Dim dlg As New UDPMaster.DGram dlg.IP = IP dlg.Port = port dlg.data = UDPMaster.StringToBytes(RAWdata) 'add to sending buffer sendBuffer.Add(dlg) End Function '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ' the sending side then loops through sendbuffer and sends it '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' 'Receiving side Function CollectData() ' read Header ' byte(0) - clientID, byte(1) - type, UnBinNum (seqNum) If seqNum = mCl.inSeq Then ' ONE WE WAITED FOR udp.Send(mCl.IP, mCl.port, mCl.ComposeACK) 'ACK immidiatly 'increment the counter mCl.inSeq += 1 End if End Function ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ' the sending side now receives an ACK and removes packet ' from sendBuffer ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' There is also a 255 or TERMINATION PacketType, which is sent upon disconnection. It is not mandatory, cause UDP is connection-less, and applications usually know their ways to tell disconnected clients (i.e. long time without a single ACK, or a simple ping time out). Each packet you queue to send is assigned a Sequnence number, which increases with every such action. Your ClientID as also packed inside the header as the first byte. The PacketType is INF, ACK or BUF. Only INF packets contan actual data, the rest are for signaling and managment. Reconnection. Server could send a NIL packet to the client, which means, that they have to perform a handshake again. This option should be used after a long disconnection time. HIGH-level actual protocol Nothing fancy here. It's mostly ASCII, with simple uppercased words as commands. Availible commands are "WHO" to list all connected clients, "SAY text" to transmit said text to everyone, and "FILE filename" to request a file transfer. The Code I've extracted the most generic bit to a UDPMaster class, which can serve both as a client and a server. UDPMaster also contains DGram class which is a structure to hold incoming datagrams. Here's how you use it to make a client (OR! a server). Dim udp as new UDPMaster(2002) ' local port you are listening too Do If udp.hasnews then 'Receive data Dim dgram as UPDMaster.Dgram udp.poll(dgram) 'Show data Console.WriteLine ("DATAGRAM received ") ; Console.WriteLine ("Sender: " & dgram.IP & ":" & dgram.port) 'the data is holded in dgram.data() byte array 'Work with data... ' ........... end if 'Send data... udp.send(drgam.IP, dgram.port, "REPLY") Loop Both client and the server are built on top of that code, but that's it. The UDPMaster does not contain any of the protocol specific features described above. It just reports new datagrams (or sends yours). Working with packets, deciding which goes to where, buffering them and acknowledging - all that is done on a higher level. The other class shared by both programs is client class. No particular reason for this, it was just convnient to use: this class stores IP, data, ping times etc, of 1 given client, so instead of declaring all those variables on the client side, I just stole the class from the server and declared a single instance. This makes files UDPMaster.vb and Helper.vb, found in both sollutions, identical. I've left alot of comments, but they more point to something, then explain anything (my comment righting skills are very low). To get a better understanding of what is going on you may uncomment all of those <code>BetCon</code> lines, they do the reporting to the console. Pressure control Only implement at server and should ONLY be seen as TEST-DEMO-DIRECTION-ETC. The pressure parameter (each client has one) is an ammount of ticks (1/1000 of second) the server will wait for ACK before retransmitting the data. Lowering this value will increase the pressure and the ammount of packets sent. Slow start I've tried to implement a slow start method (as seen in TCP), but with not much luck. The default pressure is 1000, which is then reduced to a suitable value, depending on packetloss. Packetloss The calculation of packetloss is made every 10 packet sends. The server divides ammount of sent packets to the ammount of received ACKs. If packet loss is high it will reduce pressure, and vice versa. Round trip times Time it takes for a packet to travel to it's destination and back. Calcualted by 2 timestamps (sent, received). This value should be aproximated (that's what gurus suggest), and that's exactly what those commented lines of code do (found in Done method of Client class) I hope, you'll be able to build a desent pressure control system, cause I kinda failed on that task. If you're really up to this task, try reading TCP/IP RFCs, they provide alot of intersting techniques. Download source Download project demo http://www.codeproject.com/Articles/13935/Building-a-UDP-Client-Server-application-in-VB-NET
  3. Si eu am acer , dar din pacate am facut greseala de l-am folosit cu bateria atasata si tot odata atasat direct la priza ,bateria = nu mai tine decat 10 minute .... Trage tu concluziile .
  4. Introduction We will learn to write a simple web server which can send responses to the most well-known HTTP methods (GET and POST), in C#. Then we will make this server accessible from the internet. This time we will really say "Hello world!" Background HTTP Protocol HTTP is a communication protocol between servers and clients. It uses TCP/IP protocol to send/receive requests/responses. There are a few HTTP methods and we will implement two of them; GET and POST. GET What happens when we write an address into address bar of our web browser and hit enter? (We mostly don't specify a port number although it is required for TCP/IP, because it has a default value for http and it is 80. We don't have to specify it if it is 80.) GET / HTTP/1.1\r\n Host: atasoyweb.net\r\n User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:14.0) Gecko/20100101 Firefox/14.0.1\r\n Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\r\n Accept-Language: tr-tr,tr;q=0.8,en-us;q=0.5,en;q=0.3\r\n Accept-Encoding: gzip, deflate\r\n Connection: keep-alive\r\n\r\n This is the GET request which is sent by our browser to the server using TCP/IP. This means the browser requests the server to send the contents of "/" from the root folder of "atasoyweb.net". We (or browsers) can add more headers. But the most simplified version of this request is below: GET / HTTP/1.1\r\n Host: atasoyweb.net\r\n\r\n POST POST requests are similar to GET requests. In a GET request, variables are appended to the urls using ? character. But in a POST request, variables are appended to the end of the request after 2 line break characters and total length (content-length) is specified. POST /index.html HTTP/1.1\r\n Host: atasoyweb.net\r\n User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:15.0) Gecko/20100101 Firefox/15.0.1\r\n Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\r\n Accept-Language: tr-tr,tr;q=0.8,en-us;q=0.5,en;q=0.3\r\n Accept-Encoding: gzip, deflate\r\n Connection: keep-alive\r\n Referer: http://atasoyweb.net/\r\n Content-Type: application/x-www-form-urlencoded\r\n Content-Length: 35\r\n\r\n variable1=value1&variable2=value2 Simplified version of this request: POST /index.html HTTP/1.1\r\n Host: atasoyweb.net\r\n Content-Length: 35\r\n\r\n variable1=value1&variable2=value2 Responses When a request is received by the server it is parsed and a response with a status code is returned: HTTP/1.1 200 OK\r\n Server: Apache/1.3.3.7 (Unix) (Red-Hat/Linux)\r\n Content-Length: {content_length}\r\n Connection: close\r\n Content-Type: text/html; charset=UTF-8\r\n\r\n the content of which length is equal to {content_length} This is the response header. "200 OK" means everything is OK, requested content will be returned. There are many status codes. We will use just 200, 501 and 404: "501 Not Implemented": Method is not implemented. We will implement only GET and POST. So, we will send response with this code for all other methods. "404 Not Found": Requested content is not found. Content Types Servers must specify the type of the content in their response. There are many content types and these are also called "MIME (Multipurpose Internet Mail Extensions) types" (because they are also used to identify non-ASCII parts of emails). Here are the content types that we will use in our implementation: (you can modify the code and add more) text/html text/xml text/plain text/css image/png image/gif image/jpg image/jpeg application/zip If servers specify the wrong content types contents will be misinterpreted. For example, if a server sends plain text using the "image/png" type, the client tries to show the text as an image. Multithreading If we want our server to be available even if a response is being sent to an another client at that time, we must create new threads for every request. Thus, every thread handles a single request and exits after it completes its mission. (Multithreading also speeds up page loadings, because if we request a page that uses CSS and includes images, different GET requests are sent for every image and CSS file.) Implementation of a Simple Web Server Now we are ready to implement a simple web server. First of all, let's define variables that we will use: public bool running = false; // Is it running? private int timeout = 8; // Time limit for data transfers. private Encoding charEncoder = Encoding.UTF8; // To encode string private Socket serverSocket; // Our server socket private string contentPath; // Root path of our contents // Content types that are supported by our server // You can add more... // To see other types: http://www.webmaster-toolkit.com/mime-types.shtml private Dictionary<string, string> extensions = new Dictionary<string, string>() { //{ "extension", "content type" } { "htm", "text/html" }, { "html", "text/html" }, { "xml", "text/xml" }, { "txt", "text/plain" }, { "css", "text/css" }, { "png", "image/png" }, { "gif", "image/gif" }, { "jpg", "image/jpg" }, { "jpeg", "image/jpeg" }, { "zip", "application/zip"} }; Method to start our server: public bool start(IPAddress ipAddress, int port, int maxNOfCon, string contentPath) { if (running) return false; // If it is already running, exit. try { // A tcp/ip socket (ipv4) serverSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); serverSocket.Bind(new IPEndPoint(ipAddress, port)); serverSocket.Listen(maxNOfCon); serverSocket.ReceiveTimeout = timeout; serverSocket.SendTimeout = timeout; running = true; this.contentPath = contentPath; } catch { return false; } // Our thread that will listen connection requests // and create new threads to handle them. Thread requestListenerT = new Thread(() => { while (running) { Socket clientSocket; try { clientSocket = serverSocket.Accept(); // Create new thread to handle the request and continue to listen the socket. Thread requestHandler = new Thread(() => { clientSocket.ReceiveTimeout = timeout; clientSocket.SendTimeout = timeout; try { handleTheRequest(clientSocket); } catch { try { clientSocket.Close(); } catch { } } }); requestHandler.Start(); } catch{} } }); requestListenerT.Start(); return true; } Method to stop the server: public void stop() { if (running) { running = false; try { serverSocket.Close(); } catch { } serverSocket = null; } } The most important part of the code: private void handleTheRequest(Socket clientSocket) { byte[] buffer = new byte[10240]; // 10 kb, just in case int receivedBCount = clientSocket.Receive(buffer); // Receive the request string strReceived = charEncoder.GetString(buffer, 0, receivedBCount); // Parse method of the request string httpMethod = strReceived.Substring(0, strReceived.IndexOf(" ")); int start = strReceived.IndexOf(httpMethod) + httpMethod.Length + 1; int length = strReceived.LastIndexOf("HTTP") - start - 1; string requestedUrl = strReceived.Substring(start, length); string requestedFile; if (httpMethod.Equals("GET") || httpMethod.Equals("POST")) requestedFile = requestedUrl.Split('?')[0]; else // You can implement other methods... { notImplemented(clientSocket); return; } requestedFile = requestedFile.Replace("/", @"\").Replace("\\..", ""); start = requestedFile.LastIndexOf('.') + 1; if (start > 0) { length = requestedFile.Length - start; string extension = requestedFile.Substring(start, length); if (extensions.ContainsKey(extension)) // Do we support this extension? if (File.Exists(contentPath + requestedFile)) //If yes check existence of the file // Everything is OK, send requested file with correct content type: sendOkResponse(clientSocket, File.ReadAllBytes(contentPath + requestedFile), extensions[extension]); else notFound(clientSocket); // We don't support this extension. // We are assuming that it doesn't exist. } else { // If file is not specified try to send index.htm or index.html // You can add more (default.htm, default.html) if (requestedFile.Substring(length - 1, 1) != @"\") requestedFile += @"\"; if (File.Exists(contentPath + requestedFile + "index.htm")) sendOkResponse(clientSocket, File.ReadAllBytes(contentPath + requestedFile + "\\index.htm"), "text/html"); else if (File.Exists(contentPath + requestedFile + "index.html")) sendOkResponse(clientSocket, File.ReadAllBytes(contentPath + requestedFile + "\\index.html"), "text/html"); else notFound(clientSocket); } } Responses for different status codes: private void notImplemented(Socket clientSocket) { sendResponse(clientSocket, "<html><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\"> </head><body><h2>Atasoy Simple Web Server</h2><div>501 - Method Not Implemented</div></body></html>", "501 Not Implemented", "text/html"); } private void notFound(Socket clientSocket) { sendResponse(clientSocket, "<html><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\"></head><body><h2>Atasoy Simple Web Server</h2><div>404 - Not Found</div></body></html>", "404 Not Found", "text/html"); } private void sendOkResponse(Socket clientSocket, byte[] bContent, string contentType) { sendResponse(clientSocket, bContent, "200 OK", contentType); } The method that will send responses to clients: // For strings private void sendResponse(Socket clientSocket, string strContent, string responseCode, string contentType) { byte[] bContent = charEncoder.GetBytes(strContent); sendResponse(clientSocket, bContent, responseCode, contentType); } // For byte arrays private void sendResponse(Socket clientSocket, byte[] bContent, string responseCode, string contentType) { try { byte[] bHeader = charEncoder.GetBytes( "HTTP/1.1 " + responseCode + "\r\n" + "Server: Atasoy Simple Web Server\r\n" + "Content-Length: " + bContent.Length.ToString() + "\r\n" + "Connection: close\r\n" + "Content-Type: " + contentType + "\r\n\r\n"); clientSocket.Send(bHeader); clientSocket.Send(bContent); clientSocket.Close(); } catch { } } Usage // to create new one: Server server = new Server(); // to start it server.start(ipAddress, port, maxconnections, contentpath); // to stop it server.stop(); Let's Say "Hello" to All The World! Our simple web server is ready. Now we will make it accessible from the internet. To achieve this, we must redirect requests that come to our modem to our computer. It is simple if our modem supports UPnP. Download this http://www.atasoyweb.net/dosyaver.php?dosyaid=49&ver and run it. Click "Search For Devices" button. If your modem supports UPnP, it will be added to the combobox. Click "Update List" button to list forwarded ports. Then click "Add New" button and fill the form. If you check "IP" checkbox and type an IP, only requests from this IP will be redirected. So, do not fill it. Internal port must be equal to our server's port. "Port" and "Internal port" don't have to be equal. From now on all requests come to "externalip:port" will be redirected from the modem to our computer. To test the server if it is accessible from the internet you can use View HTTP Request and Response Header http://www.codeproject.com/Articles/452052/Build-Your-Own-Web-Server
  5. Introduction In this article, we introduce a new version of the "Self-Tracking Entity Generator for WPF/Silverlight" built as a Visual Studio 2012 Extension, and we will look into how to build a demo application SchoolSample with this Extension. Please note that this article is based on a previous article on Self-Tracking Entity Generator for Visual Studio 2010 with updates on all the new features and enhancements. Before we start, let us first take a look at the Extension's main features: Auto-generate IClientChangeTracking interface implementation for all entity classes that provide client-side change tracking through each entity object. The interface includes methods and properties such as AcceptChanges(), RejectChanges(), HasChanges, and GetObjectGraphChanges() etc. Auto-generate INotifyDataErrorInfo interface (for .NET 4.5) or IDataErrorInfo interface (for .NET 4.0) implementation for all WPF entity classes and/or auto-generate INotifyDataErrorInfo interface implementation for all Silverlight entity classes. Auto-generate Display attributes and auto-generate validation attributes for validation logic on both property and entity levels. Optionally auto-generate ClientQuery class implementation for all entity classes that provides client-side LINQ queries for filtering, paging and sorting. Optionally auto-generate IEditableObject interface implementation for all entity classes that provides functionality to commit or rollback changes to an object that is used as a data source. With these auto-generated functionalities, along with authentication and authorization through Windows Identity Foundation (WIF), we should be able to build WPF LOB applications much more quickly. This, however, does not mean that we can develop any type of WPF applications with self-tracking entities. First, using self-tracking entities usually means that we need to develop both client and server assemblies with Microsoft .NET 4.0 and beyond. For non-.NET clients, it is a big obstacle to create change-tracking behaviors and consume WCF services built with self-tracking entities. Another limitation is that we need to share the full entity classes on both client and server sides. In cases where we do not want to send all of an entity's properties to the client, we may have to develop an application with part of the data model using self-tracking entities, and the remaining part using DTO classes. The Demo Application The demo SchoolSample is a WPF application built with MVVM (MVVM Light Toolkit), Self-Tracking Entity Generator for WPF/Silverlight, and MEF. This simple application allows users to add/delete/update a student, an instructor, or a course and its enrollments. The Save button saves changes to the current selected item, and the Cancel button cancels any change made to that item. The Save All button loops through the whole list and saves changes for every item, and the Cancel All button loops through and cancels changes for all items. This sample does not show how to do authentication and authorization using WIF. For information about WIF, you can check Vittorio Bertocci's book Programming Windows Identity Foundation (Dev - Pro): Vittorio Bertocci: 9780735627185: Amazon.com: Books System Requirements n order to build the demo application, we need: Supported Operating Systems: Windows 7, Windows 8, Windows Server 2008 R2, or Windows Server 2012 Other requirements: Microsoft SQL Server 2005, 2008, 2008 R2, or 2012 Microsoft Visual Studio 2012 Self-Tracking Entity Generator for WPF and Silverlight MVVM Light Toolkit V4 (included in the sample solution) Installation After downloading the demo application source code on your local disk, we need to complete the following two steps: First, we need to download Self-Tracking Entity Generator for WPF/Silverlight Setup from the Downloads section of the Self-Tracking Entity Generator for WPF and Silverlight Extract its content, and run the installation package. This Visual Studio Extension Installer adds the following Extension to Visual Studio 2012, and you can verify that by going from "TOOLS" -> "Extensions and Updates..." as shown below. The Visual Studio Extension, C# Self-Tracking Entity Generator for WPF and SL, is a C# Entity Framework project item that generates self-tracking entity classes for WPF/Silverlight applications. Installing the Sample Database To install the demo database, please run SQL script School.sql included in the download source code. This script creates the SCHOOL database schema needed for our demo application. Building and Running the Sample After completing the two installation steps above, we are now ready to start building and running the demo application. Please double check that the connectionStrings of the Web.config file in project SchoolSample.Wcf is pointing to your newly created database. Currently, it is set as follows: <connectionStrings> <add name="SchoolEntities" connectionString="metadata=res:// */EntityModel.SchoolModel.csdl|res://*/EntityModel.SchoolModel.ssdl|res:// */EntityModel.SchoolModel.msl;provider=System.Data.SqlClient; provider connection string="data source=localhost;initial catalog=SCHOOL; integrated security=True;multipleactiveresultsets=True;App=EntityFramework"" providerName="System.Data.EntityClient" /> </connectionStrings> When the demo compiles and runs successfully, we should be able to see this WPF application running like the screen shot below: Architecture Solution Structure nside the demo's solution file, projects are organized into several solution folders. The Client folder comprises all the projects that eventually builds and runs as client-side WPF demo application. While the Server folder consists of all the projects that provide WCF Services and run inside a web server environment. Next, let us briefly go over the main functionality of each project: For the projects inside the Server folder: Project SchoolSample.Data.Wcf contains the server-side auto-generated data access entity classes, resource files and any custom validation logic for each entity class. Project SchoolSample.Wcf is the main server-side project with WCF Service classes, which query and update the SCHOOL database through the data access entity classes from project SchoolSample.Data.Wcf. For the projects inside the Client folder: Project SchoolSample.Common contains all the common classes and interfaces that shared among other client projects. Project SchoolSample.Data is the client-side counterpart of project SchoolSample.Data.Wcf, and stores file links to the auto-generated self-tracking entity classes, resource files and any custom validation logic from project SchoolSample.Data.Wcf. Project SchoolSample.WCFService contains the service proxy class for the class SchoolService from project SchoolSample.Wcf. Project SchoolSample.Model defines class SchoolModel that needed for all ViewModel classes of this demo application. Project SchoolSample.ViewModel keeps all ViewModel classes as follows: MainPageViewModel StudentPageViewModel InstructorPageViewModel CoursePageViewModel Project SchoolSample is the main client-side project, and also hosts all the UI logic. Project SchoolSample.Data.Wcf Next, let us take a closer look at the server-side data access layer project SchoolSample.Data.Wcf. The folder EntityModel hosts the ADO.NET Entity Data Model EDM file along with three T4 template files created by Self-Tracking Entity Generator for WPF/Silverlight. The Validation folder includes all custom validation logic defined on entity classes, and the folder Resource keeps resource files needed by both entity classes and validation functions. To add the three T4 template files, we first open file SchoolModel.edmx, and then right-click and select "Add Code Generation Item...". Next, we will be prompted with the "Add New Item" dialog box. Select "Self-Tracking Entity Generator for WPF/Silverlight", type "SchoolModel.tt" in the Name field, and hit the Add button. This will lead us to the second dialog box where we need to enter the entity class namespace "SchoolSample.EntityModel", choose whether to generate optional features, and whether to generate code for WPF, Silverlight, or both. After clicking OK, three T4 template files will be created, and these T4 template files will auto-generate all the self-tracking entity classes based on SchoolModel.edmx. Project SchoolSample.Data Project SchoolSample.Data contains the file links to the auto-generated self-tracking entity classes, resource files and any custom validation logic from project SchoolSample.Data.Wcf. In order to set up project SchoolSample.Data, we first open file SchoolModel.edmx of project SchoolSample.Data.Wcf and select its design surface. From the Properties windows, choose "STE Settings" as shown below: Next, we will see the "STE Settings" dialog box where we can choose all the settings needed to set up the client-side data access project SchoolSample.Data: After making our selections on the dialog box, the "Update" button will become available, and one click of that button completes the set up for project SchoolSample.Data. If you are curious of what actually has been done when you click the update button, here is the list of tasks: For client project SchoolSample.Data, verify whether model class folder and validation files folder are different Verify whether the resource namespace is valid or not Add a minimum set of required references to client project SchoolSample.Data If necessary, create the validation files folder for server project SchoolSample.Data.Wcf If necessary, create the resource files folder for server project SchoolSample.Data.Wcf If necessary, create the model class folder for client project SchoolSample.Data If necessary, create the validation files folder for client project SchoolSample.Data If necessary, create the resource files folder for client project SchoolSample.Data Add conditional compilation symbol "WPF" to client project SchoolSample.Data Run custom tool on T4 template files Create T4 template file links from server project SchoolSample.Data.Wcf to client project SchoolSample.Data Create validation file links from server project SchoolSample.Data.Wcf to client project SchoolSample.Data Create resource file links from server project SchoolSample.Data.Wcf to client project SchoolSample.Data http://www.codeproject.com/Articles/440703/Building-WPF-Applications-with-Self-Tracking-Entit
  6. Getting Started ObjectScript is a dynamically typed language. That means you do not have to specify the data type of a variable when you declare it, and data types are converted automatically as needed during script execution. So, for example, you could define a variable as follows: var a = 12; And later, you could assign the same variable a string value, for example: a = "Hello World!"; Because ObjectScript is dynamically typed, this assignment does not cause an error message. ObjectScript is case-sensitive, null is not the same as Null, NULL, or any other variant. Types and Values ObjectScript recognizes the following types of values: null, a special keyword denoting a `null` value boolean, either `true` or `false` number, such as `10`, `0x123`, `2.3`, `5.7e23` string, such as `"Hello World!"` object, such as `{"one", "two", 12:"at index 12"}` array, such as `["one", 31]` function, such as `function(){ print "Hello World!" }` userdata, allows arbitrary C data to be stored in ObjectScript variables null, boolean, number and string are primitive types. object, array, function and userdata are not primitive types and could be used as named containers for values. Nulls Null is a type with a single value null. All variables have a null value by default, before a first assignment, and you can assign null to a variable to delete it. ObjectScript uses null as a kind of non-value. Bolleans The boolean type has two values, false and true, which represent the traditional boolean values. However, they do not hold a monopoly of condition values: In ObjectScript, any value may represent a condition. Conditionals (such as the ones in control structures) consider false, null and NaN (not a number) as false and anything else as true. Beware that ObjectScript considers both zero and the empty string as true in conditional tests. Numbers The number type represents real (double-precision floating-point) numbers. You can write numeric constants with an optional decimal part, plus an optional decimal exponent. Examples of valid numeric constants are: 12 // decimal, base 10 3.14 2e10 0xfe // hexadecimal, "hex" or base 16 0123 // octal, base 8 Strings A string literal is zero or more characters enclosed in double (") quotation marks. The following are examples of string literals. "Hello World!" "one line \n another line" You can call any of the methods of the String object, for example, you can use the String.length property with a string literal. "Hello World!".length or just use length operator: #"Hello World!" Objects An object is a list of zero or more pairs of property names and associated values of an object. {"one", "two", 12:"at index 12", ["on" .. "e"]: "at index one", some = "extended syntax"} The simplest constructor of object is the empty constructor `{}` a = {}; // create an empty object and store its reference in a You should not use an object literal { at the beginning of a statement. This will lead to not behave as you expect, because the { will be interpreted as the beginning of a block: { var a = 12; } Let's view some examples: days = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"} will initialize days[0] with the string "Sunday" (the first element has always index 0), days[1] with "Monday", and so on: print(days[4]) --> Thursday Constructors do not need to use only constant expressions. You can use any kind of expression for the value: tab = {sin(1), sin(2), sin(3), sin(4)} To initialize an object to be used as a record, ObjectScript offers the following syntax: a = {x=0, y=0} is equivalent to: a = {["x"]=0, ["y"]=0} a = {x:0, y:0} a = {x:0; y:0} a = {x:0, y:0,} a = {x=0, y=0} a = {x:0, y=0} So you can always put a comma after the last entry, you can use ":" or "=" to make pair of a property. You can always use a semicolon ( instead of a comma (,) a = {x=1, y=3; "one", "two"} Finally, you can avoid usage of comma and semicolon: a = {x=1 y=3 "one" "two"} b = "one"; a = { [b] = "great" }; // the same as { [b]: "great" } print(a[b]) --> great print(a["one"]) --> great print(a.one) --> great a = { one = "great" }; // the same as { "one": "great" } print(a[b]) --> great print(a["one"]) --> great print(a.one) --> great a = { one="great", two="awesome" }; a = { one: "great", two: "awesome" }; // JavaScript object notation is fully supported a = { one: "great", two: "awesome", }; // a comma after the last entry is valid a = { one: "great" two="awesome" 1="value at index 1" }; // syntax without "," is also valid a = {"one", "two"}; print(#a) --> 2 Arrays An array is a list of indexed values: a = ["zero", "one", "two"] print(a[1]) --> one print(#a) --> 3 Functions You can think of functions as procedures that your application can perform: var max = function(a, { return a < b ? a : b } Functions are first-class values in ObjectScript. That means that functions can be stored in variables, passed as arguments to other functions, and returned as results. An unconventional, but quite convenient feature of ObjectScript is that functions may return multiple results: var func = function(){ return 1, 2 } var x, y = func() print x --> 1 print y --> 2 The functions are objects themselves. As such, they have properties and methods. Any reference to a function allows it to be invoked using the () operator: var func = function(){ print arguments } var func2 = function(f){ f.apply(null, ...) } func2(func,1,2,3) --> {1,2,3} Moreover, ObjectScript supports nested functions and closures. The nested functions are functions defined within another function. They are created each time the outer function is invoked. In addition to that, each created function forms a lexical closure: the lexical scope of the outer function, including any local variables and arguments, become part of the internal state of each nested function object, even after execution of the outer function concludes: var a = function(){ var x = 2 return function(){ retutn x++ } } var b = a() print b() --> 2 print b() --> 3 print b() --> 4 ObjectScript can call functions written in ObjectScript and functions written in C++ or C. All the standard library in ObjectScript is written in C++. Application programs may define other functions in C. int test(OS * os, int, int, int, void*) { os->pushNumber(123); return 1; } int main(int argc, char* argv[]) { OS * os = OS::create(); os->pushCFunction(test); os->setGlobal("test"); os->eval("print(test())"); // outputs 123 os->release(); return 0; } Userdata An userdata allows arbitrary C++ or C data to be stored in ObjectScript variables. It's used to represent new types created by an application program or a library written in C++ or C. Assignment and Multiple assignment operator Assignment is the basic means of changing the value of a variable or a object property: a = "Hello" .. " world!" t.n = t.n + 1 ObjectScript allows multiple assignment, where a list of values is assigned to a list of variables in one step. Both lists have their elements separated by commas: a, b = 1, 2 The variable a gets the value 1 and b gets 2. In a multiple assignment, ObjectScript first evaluates all values and only then executes the assignments. Therefore, you can use a multiple assignment to swap two values, as in: x, y = y, x // swap x for y a[i], a[j] = a[j], a[i] // swap a[i] for a[j] ObjectScript always adjusts the number of values to the number of variables. When the list of values is shorter than the list of variables, the extra variables receive null as their values, when the list of values is longer, the extra values are silently discarded. a, b, c = 0, 1 print(a, b, c) --> 0 1 null a, b = a+1, b+1, b+2 -- value of b+2 is ignored print(a, --> 1 2 a, b, c = 0 print(a,b,c) --> 0 null null The last assignment in the above example shows a common mistake. To initialize a set of variables, you must provide a value for each one: a, b, c = 0, 0, 0 print(a, b, c) --> 0 0 0 You can use multiple assignment simply to write several assignments in one line. But often you really need multiple assignment, for example, to swap two values. A more frequent use is to collect multiple returns from function calls. a, b = f() `f()` returns two results: a gets the first and b gets the second. Global Variables Global variables do not need declarations. You simply assign a value to a global variable to create it. It is not an error to access a non-initialized variable, you just get the special value `null` as the result. print(a) --> null a = 10 print(a) --> 10 Usually you do not need to delete global variables, if your variable is going to have a short life, you should use a local variable. But, if you need to delete a global variable, just assign `null` to it. a = null print(a) --> null After that, it is as if the variable had never been used. In other words, a global variable is existent if (and only if) it has a non-null value. Environments and the Global Environment Any reference to a global name v is syntactically translated to _E.v. Moreover, every function is compiled in the scope of an external local variable called _E, so _E itself is never a global name in a function. Despite the existence of this external _E variable and the translation of global names, _E is a completely regular name. In particular, you can define new variables and parameters with that name. Each reference to a global name uses the _E that is visible at that point in the program, following the usual visibility rules of ObjectScript. Any object used as the value of _E is called an environment. ObjectScript keeps a distinguished environment called the global environment. This value is kept at a special object in the C registry. In ObjectScript, the variable _G is initialized with this same value. When ObjectScript compiles a function, it initializes the value of its _E upvalue with the global environment. Therefore, by default, global variables in ObjectScript code refer to entries in the global environment. Moreover, all standard libraries are loaded in the global environment and several functions there operate on that environment. You can execute any function with a different environment using Function.applyEnv method. For example lets view code of eval functions inside of core.os file: function eval(str, env){ return compileText(str).applyEnv(env || _G, null, ...) } Iterators An iterator allows you to iterate over the elements of a collection. For example: a = { null true 12 "0" } // is equivalent to { null, true, 12, "0" } for(k, v in a){ print( k " --> " v ) // is equivalent to print( k, " => ", v ) } Outputs: 0 --> null 1 --> true 2 --> 12 3 --> 0 ObjectScript compiles the above program to: a = { null true 12 "0" } { var iter_func = a.__iter(); for(var iter_valid;{ // infinite loop iter_valid, k, v = iter_func(); if(!iter_valid) break; print( k " --> " v ) } } The first result value of iter_func indicates either valid or not valid current step, second and other return values are user used values. Any iterator needs to keep some state between successive calls, so that it knows where it is and how to proceed from there. Closures provide an excellent mechanism for that task. Remember that a closure is a function that accesses local variables from its enclosing function. For example, array iterator is declated as: Array.__iter = function(){ var i, self = 0, this return function(){ if(i < #self){ return true, i, self[i++] } } } Note that iterator of function is itself. It's declared as: Function.__iter = function(){ return this } So we can write iterator like that: var range = function(a, { return function(){ if(a <= { return true, a++ } } } for(var i in range(10, 13)){ print( "i = ", i ) } Outputs: i = 10 i = 11 i = 12 i = 13 Properties, Getters And Setters A getter is a method that gets the value of a specific property. A setter is a method that sets the value of a specific property. a = { _color: "red" __get@color = function(){ return this._color } __set@color = function(v){ this._color = v } } print a.color --> red print a["color"] --> red a.color = "blue" print a.color --> blue print a["color"] --> blue Note that @ is not a special symbol, any functions and variables can contain @. Another example: a = { _color: "red" __get = function(name){ if(name == "color") return this._color } __set = function(name, v){ if(name == "color") this._color = v } __del = function(name){ if(name == "color") delete this._color } } print a.color --> red a.color = "blue" print a.color --> blue delete a.color print a.color --> null Multi dimensional properties ObjectScript supports `a.color` and `a["color"]` syntax. What about? a[x, y] = 12 Yes, ObjectScript supports the above syntax, it's called multi dimensional properties. a = { _matrix = {} __getdim = function(x, y){ return this._matrix[y*4 + x] } __setdim = function(value, x, y){ this._matrix[y*4 + x] = value } __deldim = function(x, y){ delete this._matrix[y*4 + x] } } a[1, 2] = 5 // is equivalent to a.__setdim(5, 1, 2) print a[1, 2] --> 5 // print(a.__getdim(1, 2) delete a[1, 2] // a.__deldim(1, 2) print a[1, 2] --> null Note that `__setdim` method receives the first argument as new property value and other arguments as dimensional attributes of property. For example: a = { _matrix = {} __getdim = function(x, y, z){ return this._matrix[z*16 + y*4 + x] } __setdim = function(value, x, y, z){ this._matrix[z*16 + y*4 + x] = value } } a[1, 2, 3] = 5 print a[1, 2, 3] --> 5 Empty dimensional properties What about? b = a[] a[] = 2 delete a[] ObjectScript provides following special methods `__getempty`, `__setempty` and `__delempty` that you can use if necessary. Object-oriented programming (OOP) Object-oriented programming is a programming paradigm that uses abstraction to create models based on the real world. It uses several techniques and paradigms, including modularity, polymorphism, and encapsulation. ObjectScript is OOP language, also you can override arithmetic, bitwise, concatenation, comparison and unary operators. Core Objects ObjectScript has several objects included in its core, there are global variables named Object, Array, String, Number, Boolean and Function. Every object in ObjectScript is an instance of the object Object and therefore inherits all its properties and methods. var a = { num: 1 __get@number: function(){ return this.num } __add = function(a, { return a.number + b.number } } var b = extends a { num: 2 } print a + b --> 3 The Class ObjectScript is a prototype-based language which contains no class statement. Any object could be used as class. Person = { __construct = function(firstname, lastname){ this.firstname = firstname this.lastname = lastname } __get@fullname = function(){ return this.firstname .. " " .. this.lastname } walk = function(){ print this.fullname .. " is walking!" } } The Object (Class Instance) To create a new instance of an object we use () operator for class variable: ar p = Person("James", "Bond") is equivalent to: var p = {} p.prototype = Person p.__construct("James", "Bond") Run: p.walk() --> James Bond is walking! print p --> {firstname:James,lastname:Bond} Inheritance Inheritance is a way to create a class as a specialized version of class. You need to use extends operator. ar IvanPerson = extends Person { __construct: function(){ super("Ivan", "Petrov") } } var p = IvanPerson() p.walk() --> Ivan Petrov is walking! print p --> {firstname:Ivan,lastname:Petrov} The extends operator has syntax `extends exp1 exp2` where exp1 and exp2 are any valid expressions, it's equivalent to: (function(exp1, exp2){ exp2.prototype = exp1 return exp2 })() Encapsulation In the previous example, IvanPerson does not need to know how the Person class's walk() method is implemented, but still can use that method. The IvanPerson class doesn't need to explicitly define that method unless we want to change it. This is called encapsulation, by which every class inherits the methods of its parent and only needs to define things it wishes to change. Simple and powerful example var vec3 = { __construct = function(x, y, z){ this.x = x this.y = y this.z = z } __add = function(a, { return vec3(a.x + b.x, a.y + b.y, a.z + b.z) } __mul = function(a, { return vec3(a.x * b.x, a.y * b.y, a.z * b.z) } } var v1 = vec3(10 20 30) var v2 = vec3(1 2 3) var v3 = v1 + v2 * v2 print v3 Outputs: {x:11,y:24,z:39} http://www.codeproject.com/Articles/466907/ObjectScript-A-new-programming-language
  7. Are ceva bani , ai cativa martori ? Dati singur 2 pumni , 2 poze un certificat si iti scoti niste banuti , daca nu , i-al la o bere si pupati-va frateste Sorry pentru ironie , dar in momentu' cand a ridicat mana .....BATUT .
  8. Pentru ce ti-as recomanda eu : AUDI la mana a doua - second hand acele 4 audi , nu acelea de pe site ,doar modelele si o idee la pret.
  9. Toat? lumea care a v?zut filmul ”Re?eaua de socializare” a aflat care a fost motivul pentru care Mak Zuckerberg a înfiin?at ”Facemash” ce avea s? devin? mai târziu ”Facebook”. Mai mult: EA este FEMEIA de la care ”A PORNIT” FACEBOOK-UL? FOTO - Vedete de la ei | Libertatea.ro Conform scenariului, bazat pe una dintre legendele care circul? despre începuturile acestui site, Mark a vrut s? se r?zbune pe iubita lui, Erica Albright, care tocmai îi d?duse papucii. El a creat un spa?iu virtual în care chipul acesteia, al?turi de al altor colege de facultate, era comparat cu al mai tuturor tinerelor din campus. Vizitatorii site-ului ”Facemash” trebuiau s? voteze care dintre fetele care apar pe ecran sunt mai sexy. Dac? a?a au stat sau nu lucrurile, cert este c? scenariul legat de înfiin?area Facebook trece drept adev?r pentru mul?i oameni crezând c? de la studenta Erica Albright, interpretat? de Rooney Mara, a început totul. Iar asta i-a adus tinerei destul? celebritate încât fata are, pe lâng? propriul cont, câteva pagini clonate pe Facebook, dar ?i un blog. Aici fata, care spune c? îi plac la nebunie filmele cu Chuck Norris, se prezint? drept ”prietena lui Mark Zuckerberg”, de?i precizeaz? c? nu mai sunt împreun?. Ra?iunea înfiin??rii blogului a fost, dup? cum ea îns??i recunoa?te, de a oferi informa?ii celor care vor s? afle mai multe despre ea, ”Mark ?i Facebook”. Mai mult: EA este FEMEIA de la care ”A PORNIT” FACEBOOK-UL? FOTO - Vedete de la ei | Libertatea.ro http://www.libertatea.ro/detalii/articol/erica-albright-femeie-a-pornit-facebook-417103.html
  10. bc_vnt ( yahoo ) , multumesc anticipat . Tin sa te anunt ca totu' se face din cp-ul lor pentru ca domeniu inca nu este cumparat si nu pot sa il pun pe FTP sa editez , au niste restrictii de kkt momentan . P.S - Multumesc de sfaturi .
  11. Books and tutorials for all What do you think ?! Astazi de dimineata am inceput sa lucrez la el , desig-nul nu este in totalitate facut de mine . Domeniul , inca sunt in " sah " daca va avea blog-ul succes ,sa-l cumpar sau nu .
  12. Eu nu inteleg pe ce program dai tu click , trebuie sa dai click pe acest link de exemplu : Download it : Elite Keylogger .rar download - 2shared asta pentru a descarca " Elite Keylogger " Daca vrei sa descarci alt tool dai click pe link-ul din dreptul lui " Download it "
  13. Introduction Suggested technique does not require any graphic files like .jpg or .png, etc. All aesthetic enhancements, like: rounded corners, color gradients, borders and shadows are achieved exclusively via CSS3 styling, thus resulting in very small digital footprint and fast web page load. Following code snippet demonstrates novel styling technique using HTML5/CSS3 advanced features: rounded corners, gradients (in particular, color-stop property), shadows applicable to HTML5 elements, in particular, input, button and div elements. Demo Working demo of HTML5/CSS3 enhanced web application is available at: Engineering Calculator VOLTA-2011[^]. Sample screenshot of online Engineering Calculator VOLTA-2011 utilizing the discussed HTML 5 graphic features follows (NO IMAGE FILES USED): Browser compatibility Major Web Browsers support new HTML 5/CSS3 features, though recently released Internet Explorer 9.0 (IE9) has limited capability of rendering color gradients and some other CSS attributes (see the following feature matrix): Rounded corners (works in FF/Chrome/Safari/IE9) Box shadows (works in FF/Chrome/Safari/IE9) Color gradients (works in FF/Chrome/Safari) Text shadows (works in FF/Chrome/Safari) Text rotation (works in FF/Chrome/Safari) Note: the directive <!DOCTYPE HTML> at the top of the page code is quite important to ensure that the page will be rendered properly in IE9. Listing 1 <!DOCTYPE HTML> <html> <head> <title>AESTHETIC BUTTONS | HTML5, CSS3</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <meta http-equiv="Author" content="Alexander Bell" /> <meta http-equiv="Copyright" content="2011 Alexander Bell" /> <meta http-equiv="Expires" content="0" /> <meta http-equiv="Cache-control" content="no-cache"> <meta name="Robots" content="all" /> <meta name="Distribution" content="global" /> <meta name="Keywords" content="HTML5, CSS3, Buttons, CalculatorS " /> <meta name="Description" content ="Aesthetic buttons with Gradient and Rounded Corners, HTML5, CSS3" /> <!--CSS--> <style type="text/css"> input { width:80px; height: 60px; line-height:60px; vertical-align:middle; margin: 0px; padding: 0px; cursor: pointer; cursor: hand; font-family: Arial, Tahoma, Verdana, Calibri; font-size: 28pt; text-align: center; background:#404040; border: 2px solid #ababab; color: #dadada; -moz-border-radius: 10px; -webkit-border-radius: 10px; border-radius: 10px; } input:hover { font-weight:bold;} input:active { border: 2px; } .btnType1{ background: -moz-linear-gradient(top, #707070, #505050 48%, #bababa 50%, #303030 52%, #101010); background: -webkit-gradient(linear, center top, center bottom, from(#707070), color-stop(0.48, #505050), color-stop(0.5, #bababa ), color-stop(0.52, #303030), to(#101010)); } .btnType2{ background: -moz-linear-gradient(top, #dadada, #505050 5%, #bababa 50%, #bababa 50%, #303030 52%, #101010); background: -webkit-gradient(linear, center top, center bottom, from(#707070), color-stop(0.48, #505050), color-stop(0.5, #bababa ), color-stop(0.52, #303030), to(#101010)); } .btnType3{ background: -moz-linear-gradient(top, #dadada, #707070 5%, #515151 50%, #bababa 50%, #303030 52%, #101010); background: -webkit-gradient(linear, center top, center bottom, from(#707070), color-stop(0.48, #505050), color-stop(0.5, #bababa ), color-stop(0.52, #303030), to(#101010)); } .btnType4{ color:#505050; background: -moz-linear-gradient(top, #f0f0f0, #bababa 10%, #cacaca 46%, #909090 48%, #dadada 52%, #cacaca 54%, #cacaca 90%, #ababab); background: -webkit-gradient(linear, center top, center bottom, from(#f0f0f0), color-stop(0.1, #bababa ), color-stop(0.46, #cacaca), color-stop(0.48, #909090), color-stop(0.52, #dadada ), color-stop(0.54, #cacaca), color-stop(0.90, #cacaca), to(#ababab)); } .btnType5{ color:#505050; background: -moz-linear-gradient(top, #f0f0f0, #cacaca 48%, #707070 50%, #cacaca 52%, #fafafa); background: -webkit-gradient(linear, center top, center bottom, from(#f0f0f0), color-stop(0.48, #cacaca), color-stop(0.5, #707070 ), color-stop(0.52, #cacaca), to(#fafafa)); } .divClear { clear:both;} </style> </head> <body> <input type ="button" button value="A" class="btnType1" /> <input type ="button" button value="L" class="btnType1" /> <input type ="button" button value="E" class="btnType1" /> <input type ="button" button value="X" class="btnType1" /> <input type ="button" button value="A" class="btnType1" /> <input type ="button" button value="N" class="btnType1" /> <input type ="button" button value="D" class="btnType1" /> <input type ="button" button value="E" class="btnType1" /> <input type ="button" button value="R" class="btnType1" /> <div class="divClear"></div> <input type ="button" button value="B" class="btnType2" /> <input type ="button" button value="E" class="btnType2" /> <input type ="button" button value="L" class="btnType3" /> <input type ="button" button value="L" class="btnType3" /> <input type ="button" button value="2" class="btnType4" /> <input type ="button" button value="0" class="btnType4" /> <input type ="button" button value="1" class="btnType5" /> <input type ="button" button value="1" class="btnType5" /> </body> </html> Design Notes The shadow effect could be implemented by the following CSS code block: Listing 2 /* add shadows */ -moz-box-shadow: 5px 5px 10px rgba(0,0,0,0.3); -webkit-box-shadow: 5px 5px 10px rgba(0,0,0,0.3); box-shadow: 5px 5px 10px rgba(0,0,0,0.3); Adding Tooltips. Further enhancement could be achieved by adding the context-sensitive help (a.k.a. Tooltips) to the buttons by using HTML elements "abbr" or "acronym". In this case no any Javascript is needed; the pop-up text will correspond to the title attribute of the abbr tag. Listing 3 demonstrates the sample implementation of this feature, pertinent to the Calculator Volta 2011: Listing 3 <nav> <menu id="menu1" class="oscMenu"> <li> <abbr title="Return to the front page"><a href="http://www.webinfocentral.com/math/Calculators.aspx">HOME</a></abbr> </li> <li id="active"> <abbr title="Read Instruction online"><a href="http://exm.nr/ExmVolt" target="_blank">INSTRUCTION</a></abbr> </li> <li> <abbr title="Read online Documentation"><a href="http://exm.nr/VoltDN" target="_blank">DOC</a></abbr> </li> </menu> </nav> Points of Interest Announcement Updated version of Engineering Calculator VOLTA-2012 is currently under development. See the project submission to "Ultrabooks" contest. Calculator VOLTA-2011 tested on new Apple iPad Read the entire article on Examiner: New iPad: notes from NY Apple store - New York online learning | Examiner.com References 1 : Online Engineering Calculator Volta-2011 - New York online learning | Examiner.com 2 : Online Engineering Calculator Volta-2011, Design Notes - New York online learning | Examiner.com 3 : Scientific Calculator ZENO-5000 - CodeProject http://www.codeproject.com/Tips/157607/HTML-5-CSS3-aesthetic-enhancement-buttons-input-bo
  14. *This video is intended for educational purposes only, no-one involved in the creation of this video may be held responsible for any illegal acts brought about by this video*
  15. Dai click pe link-ul din dreptu' lui " Download " , merge perfect !
  16. Interfaces vs Delegates Background Having different options can be great if one of the options is really more suited for a specific task, but having more options can also make decisions harder when different options have different advantages and disadvantages. I often need to stop and carefully think if an interface will or will not do a better job than a delegate and sometimes I even go back to my old code, that I initially implemented using delegates, to replace the delegates by interfaces. So, I decided it was time to write an article and show the advantages and disadvantages of both approaches. Performance I often see people asking if interfaces are faster than delegates or if delegates are faster than interfaces and then I see answers like: Interfaces are faster. Delegates are too damn slow; Delegates are faster because they are only a pointer to a method. Interfaces need to use a v-table to then find a delegate; They are equal, but delegates are easier to use. Well, those are not true. Maybe in .Net 1 delegates were really slower but, actually, the truth is: Delegates are faster... to execute. Interfaces are faster... to get. For example, in this code: Action action = SomeMethod; We are getting an Action (a type of delegate) to call SomeMethod. The problem is: delegates are reference types that contain both the instance and the pointer to a method. They are not a single pointer to a method and, by being reference types, they need to allocate memory. So, each time you transform a method to a delegate you are allocating a new object. If delegates were value-types that could be different, but they are not and we need to live with them this way. On the other hand, if we do this: IRunnable runnable = this; If the actual object implements IRunnable we simple get the same reference with a different cast. There is no allocation involved. So, when I saw a speed comparison like this: For Delegates: Stopwatch stopwatch = new Stopwatch(); stopwatch.Start(); for(int i=0; i<COUNT; i++) { Action action = SomeMethod; action(); } stopwatch.Stop(); Console.WriteLine(stopwatch.Elapsed); For Interfaces: Stopwatch stopwatch = new Stopwatch(); stopwatch.Start(); for(int i=0; i<COUNT; i++) { IRunnable runnable = this; runnable.Run(); } stopwatch.Stop(); Console.WriteLine(stopwatch.Elapsed); know that the interfaces are going to win. Not because they execute faster, but because at each iteraction a new Action delegate is allocated. But put the delegate getter and the interface getter outside of the loop and the delegate will be a little faster. When creating events, for example, we put the delegate only once on the event and then the event can be invoked thousands of times. That is, a single allocation is done. So, is there a winner? Well, for events (aside from the fact that the event keyword requires a delegate), delegates are really better. But before saying that delegates are better or faster, let's see different cases. Anonymous methods In my opinion anonymous methods are the worst use of delegates but, at the same time, are becoming the most common ones. When you do a call like this: for(int i=0; i<count; i++) MethodThatReceivesADelegate(() => SomeCall(i)); The compiler is, in fact, creating an instance to hold the value of i. Then, it is creating another instance (the delegate) with a reference to that instance. If an interface was used instead, it will need to allocate a single object, which will implement the interface. Possible complain Someone could complain that a single object is allocated to hold the value of i then, at each iteraction, the value inside that instance is changed. And it is even possible to argue that the compiler could optimize the delegate allocation, allocating it only once. Well, for the delegate allocation I don't know, but about a single instance to hold the i value that's true, and that's also a bug. If MethodThatReceivesADelegate is giving the delegate to another thread, such other thread may receive the wrong value of i. In .Net 4.5 such behavior was corrected. That is, at each iteraction a new object is created. This guarantees the good result if the delegate is given to another thread, but that also means that a new delegate instance should be allocated each time. If that MethodThatReceivesADelegate is going to use the delegate only once, using an interface would do a better job. Unfortunately, we don't have the option to implement anonymous interfaces. So, if it is for the convenience, the delegate will still be better. But if it is for performance, in this situation, an interface will be better because it will avoid one unnecessary allocation. In fact I created the IRunnable interface to force the users of my remoting framework to implement a new type instead of using anonymous delegates to solve the problem of the mutable i value used in fors (or any value used in foreachs, as both kinds of for share the same problem) but that also gave me a little performance benefit. Invoke and DynamicInvoke At this moment we know that there are anonymous delegates but there are no anonymous interfaces and that for single use-cases interfaces will have a better performance than delegates because they will require a single object instead of two. This already makes me think if I should use a delegate or an interface when a method is going to receive a method to be executed but is going to execute it only once. But there are more situations we can use such objects that are also performance related. Do you ever need to call DynamicInvoke instead of the direct delegate invoke? Maybe because you don't know the delegate's parameter types at compile time? Well, having an interface you have the option to use a base interface to do the untyped call. I don't know why, but reflection invokes and delegates' DynamicInvokes are extremely slow, much slower than simple doing the casts, the array-length validation and putting a try/catch to generate the TargetInvocationException. So, if you have something like: public interface IDynamicInvokable { object DynamicInvoke(params object[] parameters); } And then you create any of your delegate like interfaces as sub-interfaces of IDynamicInvokable, like this: public interface IAction<T>: IDynamicInvokable { void Invoke(T parameter); } You will be giving your users the possibility to call your interface with the typed Invoke method or, if they don't know the exactly interface type at compile-time, they could use the more generic one, the IDynamicInvoke. Note: I hate the name generics. To me, the IDynamicInvokable is the most generic way to do the calls, and the IAction<T> is the typed interface. So, when I said generic I was refering the the the common and untyped way of doing the call, and not to generics, which are typed. So, if I am going to do thousands of calls to a delegate, but using DynamicInvoke instead of Invoke, an interface will do a better job. Again, I will question myself: Is the easy of use of anonymous delegates worth? Should I make it harder for the callers of my method only to have the best performance? Is this really going to impact the overall application performance? Different uses We already have the Invoke and the DynamicInvoke. What about a TryInvoke? My last two articles talked about conversions and I will return to that kind of situation. If I use the Converter<TInput, TOutput> delegate, the conversion should work or should throw an exception. But exceptions are the wrong way to say that a conversion failed if the code is prepared to deal with invalid values. I considered creating another delegate (TryConverter) that, well, will return a boolean value to tell if the conversion worked and use an out parameter for the result. That will be great for the cases where we have an exception-free conversion, like int.TryParse, but if we don't have one (like when the conversion is done by a TypeConverter) we will need to catch the exception to return false. That's not a real problem. The problem is that I still want to give the version that generates exception. In such case, the exception will be caugh to return false, to then generate another exception. Terrible. But an interface solves such problem. With an interface we can have both methods, the Convert and the TryConvert. So, the Convert can use a conversion that throws an exception and the TryConvert can use a conversion that does not throws an exception. If there is only a conversion that throws a exception, then the TryConvert will be forced to catch the exception. If there is only a conversion that does not generates an exception and can fail, then the Convert will need to check for that and generate the exception, but we will avoid the case where an exception is caugh to return false to then generate another exception. In this case such versatility makes the interface the best solution, without a comparable delegate solution and surely giving better performance than a TryConvert only delegate. For those who read my other articles, you can expect an update of the Converters article to use the interface solution, which will support both Convert and TryConvert and the CastedGet will be eliminated as an untyped interface will do the job. Conclusion I still question myself if I should use an interface or a delegate for single-uses as delegates allow the use of anonymous delegates but, in general, I consider interfaces much more powerful and even better performing for the different situations. But let's finish by a small list of points: Delegates: Are reference-types, so they allocate an entire object only to reference a method; Are the fastest to call when you know all parameter types at compile-time; Allow the use of anonymous delegates which really simplify creating single-line or very small delegates; Can reference a private method without requiring to create a new type. Interfaces: Don't allocate new objects, so they are faster to get; Are faster for single-use cases, as only one object will be created instead of two; If well designed allow for generic (untyped) uses that are faster than DynamicInvoke of delegates; Allow different calling possibilities (like the Convert and TryConvert); Are a little slower to call with the rightly typed parameters; Don't have anonymous compile-time support; Require full types to be created even if a single method is needed. Sample The sample application will only execute speed comparisons for the different situations. Initially all the tests were executing 100 million of iterations, but the DynamicInvoke was so slow that I decided to reduce the test to 10 millions of iterations. The output of this application on my work computer is: This application tests the speed of interfaces and delegates in different situations. Compile it in release and execute it outside Visual Studio to get the right results. The following tests do 100 millions of iterations: Testing delegate speed, the wrong way: 00:00:01.6483403 Testing interface speed, the wrong way: 00:00:00.5369746 Testing delegate speed, the right way: 00:00:00.3757670 Testing interface speed, the right way: 00:00:00.4831114 Testing anonymous delegate speed: 00:00:01.7475340 Testing an interface that does the same: 00:00:01.1950063 The following tests do only 10 millions of iterations: Testing delegate's DynamicInvoke speed: 00:00:37.0368337 Testing interface's DynamicInvoke speed: 00:00:00.3218726 All the tests are finished. Press ENTER to exit. Download InterfacesVsDelegatesApp : InterfacesVsDelegatesApp.zip download - 2shared http://www.codeproject.com/Articles/468967/Interfaces-vs-Delegates
  17. I have added new books , enjoy !
  18. bc-vnt

    Salut

    Salut , bun venit !
  19. Elite Keylogger , description : Elite Keylogger is a complete and effective program with which you can monitor all activity on a Windows computer. This software is suitable for both home use, to control our children when using the computer, in the workplace, to monitor the use of resources. Elite Keylogger provides a graphical interface well designed and protected by password with which to better manage all the advanced options. Be noted that at the time of installation, you can specify whether the program should be invisible to users or to register their presence. Elite Keylogger offers the following features: Recording all the keystrokes Registration and tracking of password Join the copied text Join periodic screenshots of the computer Tracking of printed documents Recording programs used Registration of websites visited Join the chat activity Scanning result : https://www.virustotal.com/file/e5755c9115a799d5c83d7f00d18e9aa72437beffdc9b4cb78f4a478caca03a48/analysis/1349029592/ Download it : Elite Keylogger .rar download - 2shared -------------------------------------------------------------------------------------- MEO Encryptor , description : MEO Encryption Software is a software through which you can protect your files and personal documents. MEO Encryption Software, it offers the ability to encrypt files and directories so that only authorized persons can we or air access to their contents. MEO Encryption Software works very well, is lightweight and easy to use thanks to well-designed graphical interface. Also, do not by Most Recent, the program is absolutely free. MEO Encryption Software provides a summary of the following characteristics: Encryption and decryption of files and folders Ability to create archives self-estreneti password protected Ability to encrypt emails to be sent directly from the software Ability to verify the integrity of files Simple and intuitive graphical user interface All operations performed are saved on a handy log Scanning result : https://www.virustotal.com/file/21036dd2422d03d5b118a7a97bec2511c66beec85329627273807ea5bff2af14/analysis/1349029763/ Download it : http://www.2shared.com/file/ys53bk6F/MeoSetup.html -------------------------------------------------------------------------------------- Smart encryptor , description : Smart Encryptor is a program that allows us to secure all of our files, protecting them from prying eyes, even if someone were to take possession of our computers without our permission. The main purpose of this program is to encrypt files and folders. Smart Encryptor through the use of AES technology allows you to securely encrypt your files and documents. The program is also used in a totally intuitive thanks to the presence of a user interface well made, perhaps not very modern but certainly highly usable. Smart Encryptor, of course, in addition to encrypting the files, it also allows to decrypt. Only requirement, be in possession of the alpha numeric key needed to decrypt the file. In this way, you can for example also send secure our document, knowing that only authorized persons will be able to open it. Smart Encryptor finally allows the creation of self-extracting files are password protected. Scanning result : https://www.virustotal.com/file/12b369b954b2fa520da3833c856d993642ea84ff72d908dff65cd95ac4d87cf3/analysis/1349029930/ Download it : http://www.2shared.com/file/j_8_7kCU/Smart_Encryptor_23.html -------------------------------------------------------------------------------------- Wise data recovery , description : If you deleted a file from your computer by accident, do not despair! There is still a chance to recover with a recovery software such as Wise with Data Recovery. Wise Data Recovery will help you to restore files accidentally deleted or you have lost due to a sudden computer crash. This software is capable of restoring a wide range of file formats, including Office documents, images, videos, songs or files via e-mail. Here are some key features of Wise Data Recovery: E 'can recover documents such as Word, Excel, txt, etc. Restoring the image file, such as. Jpg,. Png, Gif, etc. Retrieve e-mail files Can retrieve any other data, such as audio, video, stock Recovers files from removable disks, such as iPods, MP3 players, etc. Scanning result : https://www.virustotal.com/file/9714aaff1bae82b7b2d1816de547165e7d535d43ed1e3a4c4f83098b3370b279/analysis/1349030048/ Download it : http://www.2shared.com/file/c6KK6ufo/Wise_Data_Recovery_315165.html -------------------------------------------------------------------------------------- Wise folder hide , description : You are maniacs security and want to conceal from prying eyes your documents? Then you might need a software like Wise Folder Hider. Wise Folder Hider is an easy to use tool that allows you to hide files and folders. Can be used to hide files and folders on local partitions or removable. The data can not be accessed by other programs or operating systems such as DOS. The only way to access or view this data is to enter the valid password chosen by the user. Wise Folder Hider has a GUI aesthetically well cared for and use the program is very simple. Here are some key features of Wise Folder Hider: E 'can hide files, folders, and files from USB. Easy and safe to use. Support for Multi-Account. Driver support removable. Support for Drag-and-Drop. Molyo intuitive user interface. Scanning result : https://www.virustotal.com/file/dc309eb61973f454a17894df850063e7a863672d052c530e21ef349e26e89864/analysis/1349030179/ Download it : http://www.2shared.com/file/U8Xgl4Dc/Wise_Folder_Hide_12461.html -------------------------------------------------------------------------------------- SmarSniff , description : SmartSniff is a software through which the network administrator can capture TCP / IP packets that are transmitted from the client connected to the network in order to display the data. The display of information contained in the packets is in ASCII mode for HTTP, SMTP, POP3 and FTP or as a hex file for protocols such as DNS. SmartSniff is easy to use and comes with an intuitive user interface from which you can access all the functions of the program. To use all the features of the software you need to install the application "WinPcap Capture Driver". Among the main features of the program: network sniffer; ability to capture and analyze packets; display data transmitted over the network. SmartSniff v1.95 Copyright (c) 2004 - 2012 Nir Sofer Web site: http://www.nirsoft.net Description =========== SmartSniff allows you to capture TCP/IP packets that pass through your network adapter, and view the captured data as sequence of conversations between clients and servers. You can view the TCP/IP conversations in Ascii mode (for text-based protocols, like HTTP, SMTP, POP3 and FTP.) or as hex dump. (for non-text base protocols, like DNS) SmartSniff provides 3 methods for capturing TCP/IP packets : 1. Raw Sockets (Only for Windows 2000/XP or greater): Allows you to capture TCP/IP packets on your network without installing a capture driver. This method has some limitations and problems. 2. WinPcap Capture Driver: Allows you to capture TCP/IP packets on all Windows operating systems. (Windows 98/ME/NT/2000/XP/2003/Vista) In order to use it, you have to download and install WinPcap Capture Driver from this Web site. (WinPcap is a free open-source capture driver.) This method is generally the preferred way to capture TCP/IP packets with SmartSniff, and it works better than the Raw Sockets method. 3. Microsoft Network Monitor Driver (Only for Windows 2000/XP/2003): Microsoft provides a free capture driver under Windows 2000/XP/2003 that can be used by SmartSniff, but this driver is not installed by default, and you have to manually install it, by using one of the following options: * Option 1: Install it from the CD-ROM of Windows 2000/XP according to the instructions in Microsoft Web site * Option 2 (XP Only) : Download and install the Windows XP Service Pack 2 Support Tools. One of the tools in this package is netcap.exe. When you run this tool in the first time, the Network Monitor Driver will automatically be installed on your system. 4. Microsoft Network Monitor Driver 3: Microsoft provides a new version of Microsoft Network Monitor driver (3.x) that is also supported under Windows 7/Vista/2008. Starting from version 1.60, SmartSniff can use this driver to capture the network traffic. The new version of Microsoft Network Monitor (3.x) is available to download from Microsoft Web site. Notice: If WinPcap is installed on your system, and you want to use the Microsoft Network Monitor Driver method, it's recommended to run SmartSniff with /NoCapDriver, because the Microsoft Network Monitor Driver may not work properly when WinPcap is loaded too. System Requirements =================== SmartSniff can capture TCP/IP packets on any version of Windows operating system (Windows 98/ME/NT/2000/XP/2003/2008/Vista) as long as WinPcap capture driver is installed and works properly with your network adapter. You can also use SmartSniff with the capture driver of Microsoft Network Monitor, if it's installed on your system. Under Windows 2000/XP (or greater), SmartSniff also allows you to capture TCP/IP packets without installing any capture driver, by using 'Raw Sockets' method. However, this capture method has some limitations and problems: * Outgoing UDP and ICMP packets are not captured. * On Windows XP SP1 outgoing packets are not captured at all - Thanks to Microsoft's bug that appeared in SP1 update... This bug was fixed on SP2 update, but under Vista, Microsoft returned back the outgoing packets bug of XP/SP1. * On Windows Vista with SP1, only UDP packets are captured. TCP packets are not captured at all. * On Windows 7, it seems that 'Raw Sockets' method works properly again, at least for now... Versions History ================ * Version 1.95: * Added Find option (Ctrl+F) to easily find text in the lower pane. * Fixed issue: The properties dialog-box and other windows opened in the wrong monitor, on multi-monitors system. * Version 1.93: * Fixed bug: When opening the 'Capture Options' dialog-box after Network Monitor Driver 3.x was previously selected, SmartSniff switched back to Raw Sockets mode. * Version 1.92: * Added accelerator key to the 'URL List' mode (Ctrl+F4) * Version 1.91: * Fixed a crash problem occurred with some Web pages when using the 'Extract HTTP Files' option . * Version 1.90: * Added 'Put Icon On Tray' option. * Version 1.85: * Added 'Use DNS Queries & Cache For Host Names' option. When it's turned on, SmartSniff analyzes the captured DNS queries and uses them for displaying the local/remote host names. The internal DNS cache of Windows is also used. * Version 1.82: * Added 'Duration' column, which displays the difference between the capture time and last packet time. * Version 1.81: * Updated the internal country names list (Added more 14 countries) for using with the IP to country file (IpToCountry.csv). * Version 1.80: * Added 'Extract HTTP Files' option (under the File menu), which allows you to easily extract all HTTP files stored in the selected streams, into the folder that you choose. * Version 1.79: * Fixed bug: 'Restart Capture' option caused SmartSniff to crash in some circumstances. * Version 1.78: * Added 'Restart Capture' option (Ctrl+R), which stops the capture and then immediately starts it again. * Version 1.77: * Increased the size of total filter string (Capture Filter and Display Filter) that can be saved into the .cfg file. * Version 1.76: * When 'Retrieve process information while capturing packets' option is turned on, the 'Process User' column now displays the user name of the specified process. * Version 1.75: * Added 'Decompress HTTP Responses' option. When it's turned on, HTTP responses compressed with gzip are automatically detected, and displayed in decompressed form. * Version 1.72: * Fixed bug: The status bar packets counter displayed a little higher value than the total packets counters in the upper pane table. * Version 1.71: * Added 'Hide Lower Pane' option (under the Options menu), which is useful when you work in statistics only mode, and you don't need the lower pane. * Version 1.70: * Added 'Display only active connections' in Advanced Options window. When this options is turned on, SmartSniff automatically hide all streams that their connection was closed. This means that SmartSniff will only display the streams that their connection is still opened. * Version 1.65: * Added support for .csv files in 'Save Packet Summaries' option. * Added 'Add Header Line To CSV/Tab-Delimited File' option. When this option is turned on, the column names are added as the first line when you export to csv or tab-delimited file. * Version 1.63: * Added 'Automatically Scroll Down in Live Mode' option, under the Options menu * Version 1.62: * Added /StartCapture and /LoadConfig command-line options. * Added x64 version of SmartSniff, to work with Microsoft Network Monitor Driver 3.x on Windows x64. * Version 1.60: * Added support for capturing with Microsoft Network Monitor 3.x driver. (Very useful for Windows Vista/7 users, because the old Network Monitor driver is not supported in these OS) * For Microsoft Network Monitor 3.x driver, there is also 'Wifi Monitor Mode' button which only works under Windows 7/Vista, and only for wireless devices that supports 'Monitor Mode'. When you switch the wireless card to monitor mode, SmartSniff can capture all unencrypted Wifi/TCP streams in the channel that you chose to monitor. * Added support for opening the capture file (.cap) of Microsoft Network Monitor 3.x * Added support for viewing the content of unencrypted Wifi/TCP streams. This feature works on WinPCap driver and Microsoft Network Monitor 3.x * Added 'Promiscuous Mode' check-box for WinPCap and Microsoft Network Monitor 3.x driver. In the previous version, SmartSniff always turned on the 'Promiscuous Mode', but in some wireless adapters, the capture doesn't work at all if Promiscuous Mode is turned on. * Version 1.53: * Fixed bug: SmartSniff displayed a crash message on msvcrt.dll when reading TCP packets with invalid data length. * Version 1.52: * In 'Export TCP/IP Steams' - Added 2 new file types - 'Raw Data Files - Local' and 'Raw Data Files - Remote' for exporting only one side of the stream. * Version 1.51: * Added Drag & Drop support - you can now drag .ssp file from Explorer into the window of SmartSniff. * Version 1.50: * Added 'Last Packet Time' column - Displays the date/time of the last packet received. * Added 'Data Speed' column - Displays the calculated speed of the TCP connection in KB per second. * Version 1.45: * New option: Display Outgoing/Incoming Data - When this option is turned on, separated values for outgoing and incoming packets are displayed for the following columns: 'Packets', 'Data Size', and 'Total Size'. The values are displayed in the following format: {Outgoing ; Incoming} * Version 1.40: * Added local/remote MAC addresses (relevant only for local network, and it doesn't work with raw sockets) * Added IPNetInfo integration - When you put IPNetInfo utility in the same folder of SmartSniff, You can view the information about the remote IP addresses. * Added IP Country columns to display the country name of IP addresses. (requires to download an external file from here) * Version 1.38: * Under Vista, automatically run as administrator. * Version 1.37: * Fixed bug: The main window lost the focus when the user switched to another application and then returned back to SmartSniff. * Version 1.36: * Fixed bug: SmartSniff hang when you work with 'URL List' mode. * Version 1.35: * New Display Mode - 'URL List': Allows you to view the list of URLs for the select TCP/IP items (only for HTTP protocol) * Increased the buffer of raw sockets to avoid packet loss. * The configuration is now saved to a file, instead of the Registry. * Version 1.32: * Fixed bug: Wrong capture time displayed when "Only display TCP/IP statistic..." option was selected. * Added 'Summary Mode' in Advanced Options - Allows you to view general TCP/IP statistics by addresses only, without adding a separated line for each connection. * Version 1.31: * Added support for Microsoft Network Monitor driver (Under Windows 2000/XP/2003). * Version 1.30: * New option: Only display TCP/IP statistic, do not store the captured data in file. * New option: Retrieve process information while capturing packets. * In 'Load Packets Data From File', you can now choose to load tcpdump/libpcap file saved by Ethereal or by other capture programs. * A tooltip is displayed when a string in a column is longer than the column length. * When running SmartSniff in the first time, the first found network adapter with IP address is now automatically selected. (In previous versions, the user had to select an adapter in order to start capturing) * Version 1.21: * Fixed Bug: packets in TCP/IP conversations sometimes displayed in wrong order. * Version 1.20: * New option in Live Mode: Display the beginning of TCP/IP conversation content while capturing. * Save / Load SmartSniff configuration. * Filters are now saved when you exit from SmartSniff, and loaded again in the next time that you run it. * Significant improvement in performances of Live Mode when there are a lots of TCP/IP conversations. * Fixed bug: pressing F2/F3/F4 while capturing packets in live mode caused the capture to be corrupted. * Version 1.11: Improve in performances while capturing with WinPcap driver. * Version 1.10: * Performances - Large TCP/IP conversations are now displayed much faster than in previous version. * Live Mode - View the TCP/IP conversation list while capturing. * Capture and display filters. * New option: Resolve IP Addresses to host names (displayed in 'Local Host' and 'Remote Host' columns) * New option: On Automatic display mode, don't display data in hex format if the data size is larger than... (The default is 100 KB) * New option: In the lower pane, don't display items with data size larger than... (The default is 1000 KB) * Added more accelerator keys. * XP style support. * Version 1.00: First release. Using SmartSniff ================ In order to start using SmartSniff, simply copy the executable (smsniff.exe) to any folder you like, and run it (installation is not needed). After running SmartSniff, select "Start Capture" from the File menu, or simply click the green play button in the toolbar. If it's the first time that you use SmartSniff, you'll be asked to select the capture method and the network adapter that you want to use. If WinPcap is installed on your computer, it's recommended to use this method to capture packets. After selecting the capture method and your network adapter, click the 'OK' button to start capturing TCP/IP packets. while capturing packets, try to browse some Web sites, or retrieve new emails from your email software. After stopping the capture (by clicking the red stop button) SmartSniff displays the list of all TCP/IP conversations the it captured. When you select a specific conversation in the upper pane, the lower pane displays the TCP/IP streams of the selected client-server conversation. If you want the save the captured packets for viewing them later, use "Save Packets Data To File" option from the File menu. Display Mode ============ SmartSniff provides 3 basic modes to display the captured data: Automatic, Ascii, and Hex Dump. On Automatic mode (the default), SmartSniff checks the first bytes of the data stream - If it contains characters lower than 0x20 (excluding CR, LF and tab characters), it displays the data in Hex mode. otherwise, it displays it in Ascii mode. You can easily switch between display modes by selecting them from the menu, or by using F2 - F4 keys. Be aware that 'Hex Dump' mode is much slower than Ascii mode. Starting from version 1.35, there is a new mode - 'URL List'. This mode only display the URL addresses list (http://...) found in the captured packets. Exporting the captured data =========================== SmartSniff allows you to easily export the captured data for using it in other applications: * The upper pane: you can select one or more items in the upper pane, and then copy them to the clipboard (You can paste the copied items into Excel or into spreadsheet of OpenOffice.org) or save them to text/HTML/XML file (by using 'Save Packet Summaries'). * The lower pane: You can select any part of the TCP/IP streams (or select all text, by using Ctrl+A), copy the selected text to the clipboard, and then paste it to Notepad, Wordpad, MS-Word or any other editor. When you paste the selected streams to document of Wordpad, OpenOffice.org, or MS-Word, the colors are also transferred. Your can also export the TCP/IP streams to text file, HTML file, or raw data file, by using "Export TCP/IP Streams" option. Displaying characters above ASCII 127 ===================================== By default, characters above ASCII 127 are not displayed in the TCP/IP streams. You can enable high ASCII characters by using "Display Characters Above ASCII 127". When you use this option, the TCP/IP streams are displayed without colors. Be aware that when working in this mode, the loading process of the lower pane might be very slow. The 'IP Country' columns ======================== In order to watch the countries of the local/remote IP addresses, you have to download the latest IP To Country file from here. You have the put the 'IpToCountry.csv' file in the same folder of smsniff.exe Capture and Display Filters =========================== Starting from version 1.10, you can filter unwanted TCP/IP activity during the capture process (Capture Filter), or when displaying the captured TCP/IP data (Display Filter). For both filter types, you can add one or more filter strings (separated by spaces or CRLF) in the following syntax: [include | exclude] : [local | remote | both] : [tcp | udp | tcpudp | icmp | all] : [IP Range | Ports Range] Here's some examples that demonstrate how to create a filter string: * Display only packets with remote tcp port 80 (Web sites): include:remote:tcp:80 * Display only packets with remote tcp port 80 (Web sites) and udp port 53 (DNS): include:remote:tcp:80 include:remote:udp:53 * Display only packets originated from the following IP address range: 192.168.0.1 192.168.0.100: include:remote:all:192.168.0.1-192.168.0.100 * Display only TCP and UDP packets that use the following port range: 53 - 139: include:both:tcpudp:53-139 * Filter most BitTorrent packets (port 6881): exclude:both:tcpupd:6881 * Filter all ICMP packets (Ping/Traceroute activity): exclude:both:icmp Notice: A single filter string must not include spaces ! Live Mode ========= Starting from version 1.10, a new option was added to 'Advanced Options' section - 'Live Mode'. When SmartSniff capture packets in live mode, the TCP/IP conversations list is updated while capturing the packets, instead of updating it only after the capture is finished. Be aware that "Live Mode" requires more CPU resources than non-live mode. So if your computer is slow, or your have a very high traffic on your network, it's recommended to turn off this option. Starting from version 1.20, you can also view the content of each TCP/IP conversation (in the lower pane) while capturing the packets. However, if the TCP/IP conversation is too large, you won't be able to watch the entire TCP/IP conversation until the capture is stopped. Viewing process information =========================== Starting from version 1.30, you can view the process information (ProcessID and process filename) for captured TCP packets. However, this feature have some limitations and problems: * Process information is only displayed for TCP packets (It doesn't work with UDP) * Process information may not be displayed for TCP connections that closed after short period of time. * Retrieving process information consume more CPU resources and may slow down your computer. It's not recommended to use this feature if you have intensive network traffic. * Process information is currently not saved in ssp file. In order to activate this feature, go to 'Advanced Options' dialog-box, check the "Retrieve process information while capturing packets" option and click the 'OK' button. 2 new columns will be added: ProcessID and Process Filename. Start capturing, and process information will be displayed for the captured TCP conversations. The structure of .ssp file (SmartSniff Packets File) ==================================================== The structure of .ssp file saved by SmartSniff is very a simple. It contains one main header in the beginning of the file, followed by sequence of all TCP/IP packets, each of them begins with a small header. The main header structure: 00 - SMSNF200 signature. 08 - (2 bytes) The number of bytes in the header (currently 4 bytes for the IP Address) 0A - (4 bytes) IP Address Header of each packet: 00 (2 Bytes) packet header size (currently 0x18 bytes) 02 (4 Bytes) number of received bytes in packet. 06 (8 Bytes) Packet time in Windows FILETIME format. 0E (6 Bytes) Source Mac Address. 14 (6 Bytes) Dest. Mac Address. 1A The remaining bytes are the TCP/IP packet itself. Translating to other languages ============================== SmartSniff allows you to easily translate all dialog-boxes, menus, and strings to other language. In order to do that, follow the instructions below: 1. Run SmartSniff with /savelangfile parameter: smsniff.exe /savelangfile A file named smsniff_lng.ini will be created in the folder of SmartSniff utility. 2. Open the created language file in Notepad or in any other text editor. 3. Translate all menus, dialog-boxes, and string entries to the desired language. 4. After you finish the translation, Run SmartSniff, and all translated strings will be loaded from the language file. If you want to run SmartSniff without the translation, simply rename the language file, or move it to another folder. Command-Line Options ==================== /StartCapture Start to capture packets immediately. /LoadConfig <.cfg filename> Starts SmartSniff with the specified configuration file. /NoCapDriver Starts SmartSniff without loading the WinPcap Capture Driver. /NoLoadSettings Starts SmartSniff without loading your last settings. License ======= This utility is released as freeware. You are allowed to freely distribute this utility via floppy disk, CD-ROM, Internet, or in any other way, as long as you don't charge anything for this. If you distribute this utility, you must include all files in the distribution package, without any modification ! Disclaimer ========== The software is provided "AS IS" without any warranty, either expressed or implied, including, but not limited to, the implied warranties of merchantability and fitness for a particular purpose. The author will not be liable for any special, incidental, consequential or indirect damages due to loss of data or any other reason. Feedback ======== If you have any problem, suggestion, comment, or you found a bug in my utility, you can send a message to bc_vnt@yahoo.it Scanning result : https://www.virustotal.com/file/fdc6b190a9bb5c3d4d58d816812d953f86a972396fd91f5cf3183e4f045f8eeb/analysis/1349031614/ Download it : http://www.2shared.com/file/42EBndZY/SmartSniff.html -------------------------------------------------------------------------------------- SecureWord , description : SecureWord is software with which protect all our password with which we access to different types of accounts or services. SecureWord uses an encryption system adopted by the U.S. government since 2002 to ensure the maximum security of stored data. This ensures that only authorized persons can access the data. SecureWord is also very simple and easy to use. The well-designed graphical user interface allows for an immediate use of the program. In addition SecureWord can be started from the system tray with a simple click and this allows you to always have it available whenever we need them. SecureWord allows you to store all kinds of data and passwords regardless of their type of use. In addition, this program also includes a sophisticated password generator that lets you create personalized passwords and especially robust and evidence of cracking. For any given stored, you can add any notes such as the website and various additional information. Scanning result : https://www.virustotal.com/file/a1dbb234d1bb921eba1744ada56fb09afb7fd5b32bfe1b7ba3c54d1733d00f71/analysis/1349031964/ Download it : http://www.2shared.com/file/mChywncv/SecureWord.html -------------------------------------------------------------------------------------- SpamFighter , description : Spamfighter is a free tool for Outlook, Outlook Express, Windows Mail and Mozilla Thunderbird that automatically and efficiently filters spam and phishing fraud. Whenever new mail arrives, it will automatically, and if it's spam, it will be moved to your spam folder. To report an email as spam just click a button. Spamfighter is easy to use and comes with an intuitive user interface from which you can access all the functions of the program. With this software you can protect all email addresses of your PC, ensure your privacy, create blacklist custom report abuse with a single click of the mouse. Among the main features of the application: block emails in languages ??you do not know; Multilingual interface; protection against "phishing." Scanning result : https://www.virustotal.com/file/99821b1bd8d9d7872bafc666d410cdd35c495fa58837039e22b3f2f475d8e455/analysis/1349032452/ Download it : http://www.2shared.com/file/Wl3op5Ft/SpamFighter.html -------------------------------------------------------------------------------------- Driver magician lite - Backup files , description : Driver Magician Lite is freeware, it identifies all the hardware in the system, extracts their associated drivers from the hard disk and backs them up to a location of your choice. Then when you format and reinstall/upgrade your operating system, you can restore all the "saved" drivers just as if you had the original driver diskettes in your hands.* Scanning result : https://www.virustotal.com/file/d2913d6c6adfa60f73ea4f903b0d4a147af6ec4673e83d499ddb544814e13e68/analysis/1349065755/ Download it : http://www.2shared.com/file/8wCCvqZe/Driver_magician_lite.html -------------------------------------------------------------------------------------- Handy backup files , description : Handy Backup Lite is a backup utility. One of the best ways to make sure that all your files and data are fully secured and safe is to use a program like Handy Backup Lite, as there really are very few applications of this type that will enable you to create all kinds of backups which you can later use in case of a problem or data corruption as these are a common problem these days due to all kinds of reason. Because of all this Handy Backup Lite presents itself as a natural choice for anybody who has important data on his computer and want to make sure that they are always safe as this program will create high quality backups that can be put into action in case of any problem, rendering any threat or complication that may attack your computer utterly pointless. Scanning result : https://www.virustotal.com/file/2c9523d2889747af4ae0328b625212410586f0b77ee1a94b13b535903c5ea1b3/analysis/1349065976/ Download it : http://www.2shared.com/file/4Y6z8RI-/Handy_Backup_Read_Me.html -------------------------------------------------------------------------------------- PDF24 Creator 4.9.0 , description : PDF24 Creator is a free program that allows you to create a PDF file from any applications easily and quickly. The software installs itself in the system as if it were a normal printer and allows you to create a PDF document from any application that provides a print option. The programm allows you to automatically convert documents like Word, Excel, and images into PDF or a number of other PDF / A, PDF / X, PS, EPS, PCL, PNG, JPEG, BMP, PCX, TIFF, or PSD. Convert a File To convert a file just open it with the associated program and start printing, and then click PDF24 Creator as a printer and specify the save location. Before saving the final program opens the document in a basic editor that allows you to preview and make some changes such as turn the page or change the orintamento. Split or Merge Files Through the server PDF Creator can also split a PDF file or merge two or more PDF documents into a single file, making the merge of two separate documents. To add a new page just send the same document to print the corresponding document and the program will insert new pages in the editor. At this point the user can drag and drop pages from one PDF document to another, delete and reorder pages in a PDF, so as to create new PDF documents from other documents. To convert a document to PDF, simply open the file in its original format and printed with the virtual printer PDF24. Edit the properties of the Document With PDF24 Creator you can set and modify the properties of the PDF document (author, title, subject, keywords) as well as protect PDF documents with passwords and certificates. The program allows you to choose in detail the various options for saving from the available presets that allow, for example, choose between a document optimized for the web, video, ebook, print or drafts. Security The security options cover the management of password protection with the details of the operations allowed all'untente final (editing, printing, copying content, etc.), the management of signature and certificates. The software contains everything you need to create and insert a signature in a PDF allowing the creation of a signing certificate in the user account (integrating management tool Windows Certificate). Of the options that are available directly in the property at the time of selection of PDF24 Creator as the printer when you print a document from an application. Here you can already choose a color or black and white print multiple pages on one page, reverse page order, and more. The driver contains the most widely used formats such as A7 - A0, letter, executive, legal or ledger to which you can create PDF files with sizes smaller or larger ones. If Save As image PDF24 Creator allows advanced management of colors and resolution dpi. Once you have created the document, you can save the PDF file or send the PDF document via email through the default mail client. The program also offers the ability to add a watermark to the pages created where you can specify the location on the page, color and font size, margins, and so on. Is also supported function digital paper that allows you to create the document as if it were printed on special paper letterhead. Other features in relief of PDF24 Creator screen capture or a portion thereof (including the options available are full screen, screen work area, active windows, the active window, user defined area and the Windows clipboard) The Acquisitions images from devices such as scanners, digital cameras, webcams that support TWAIN, and 'extracting text from a PDF file directly to txt file. The program can then be used in multi-user environments (XP, Vista and 7). Scanning result : https://www.virustotal.com/file/1c9fbd54d172680e2cb9d8e54aa58a03311f586fb71ff15e251607104805ceac/analysis/1349066938/ Download it : http://www.2shared.com/file/MSbnKDVy/PDF24_Creator_490___2_.html -------------------------------------------------------------------------------------- SQLlite , description : The SQLite library includes a small utility called SQLite3: it will allow you to manually enter and execute SQL commands against a SQLite3 database via the command line. This download provides a document as a short introduction on the use of sqlite3. To start the SQLite3, just type "sqlite3" followed by the name of the file that contains the SQLite database. If the file does not exist, a new one will be created automatically. Then you just start SQLite3 and SQL: SQL statements (terminated by a semicolon) will be executed by pressing the "Enter" key. Scanning result : https://www.virustotal.com/file/f8db339665b65fceff5344f78d3b1ada44c8ada361f49a0e34d758cc87c870b0/analysis/1349067319/ Download it : http://www.2shared.com/file/6m-ZSiPk/SQLlite_.html -------------------------------------------------------------------------------------- NinjaSnipper , description : There are many screenshot/screensnipping tools out there and none of them performed as I needed them. Nevertheless I gathered impressions and decided to compile the best ideas into a product, I am confident, you will like. My requirements for a snipping tool. (all implemented) Be able to select part of the screen with your mouse and save it to a file and/or copy it to the clipboard. Also detect pressing the PrintScreen key and save the clipboard contents to a file. Save the screenshots automatically to some predefined location with a default image format (not open a dialog every time, nor an editor) However be able to specify a different location and image format every now and then. No GUI. I wanted it to run in the background (in this case the system tray). Activate it via keyboard shortcut. It is a deal breaker if you have to navigate to the app for every screenshot, when you are making a lot of them. Work on multiple monitors! Background This is more of a Tips n' Ticks entry. I will only be addressing key problems/solutions with brief descriptions and references where I see fit. Not all of the requirements will be discussed as not all of them present a "challenge" to the programmer. For the project I decided to use C# as it seems the most appropriate choice for a Windows application. Furthermore for the PrintScreen keys I was going to use hooks, which is of course OS specific, so there was no way to make a OS portable application in a short time. Having said that, the application has only been tested on Windows 7 64bit with .Net 4 and Vista 32bit. The executables attached to this article may not work on other platforms. I expect the source code to be portable to older versions of .NET and Windows. Feedback would be appreciated. Scanning result : https://www.virustotal.com/file/665c16a51a74e51c0512cdff66bfd97a2534e7cfcafb701a5c699b777103d8f0/analysis/1349204511/ Download it - 32 bit : http://www.2shared.com/file/chjSrc3J/NinjaSnipper_32bit.html Download it - 64 bit : http://www.2shared.com/file/5eSjbB-V/NinjaSnipper_64bit.html Download source : http://www.2shared.com/file/DYsHSuKk/NinjaSnipperProject_src.html -------------------------------------------------------------------------------------- Voi agiorna acest thread in timp
×
×
  • Create New...