This is a mirror of official site: http://jasper-net.blogspot.com/

Windows Azure Poster

| Thursday, November 8, 2012
Inline image 2

Sometimes  pictures will tell you more than words. If you like fancy pictures summarizing the ideas I've good news for you.

Windows Azure Poster has been published, you can download it here and print it." [GD: Post Leached in full]

I'm just a sucker for cube-art... This 39x26" Poster for Azure, created 10/29/2012, looks great to you explain the bigger Azure picture to someone. In short, it's not an uber-dev poster, but a 30,000 foot view of Azure, which makes it a nice starting point for further exploration.

QR: Inline image 1

Posted via email from Jasper-net

שרת קבצים ווידאו: כך חוסכים I/O יקר מפז בעשר דקות עבודה

|
ה"תסריט" הבא חזר על עצמו בכמה מקרים שונים שטיפלתי בהם: שרת שמיועד לאחסון קבצים (ובמיוחד קבצי וידאו), במקרה אחד היה מדובר במערכת אחסון מרכזית (Storage) של יצרן מפורסם. בשעות השיא המערכת פשוט לא מספקת את הוידאו מספיק מהר והגולשים החלו מתלוננים על איטיות.

ספק מערכת האחסון או השרת הציע פשוט לעבור לדגם יקר (הרבה) יותר. מנהל המערכת העדיף להתקשר אליי.

השלב הראשון היה זיהוי הבעיה. "בדיקת מהירות" פשוטה מול שרת מהיר. הן זו המוכרת מאתרי אינטרנט שונים, והן IPerf, שפשוט מעביר כמויות גדולות של תעבורה מצד לצד. 
במקרים בהם זו הייתה הבעיה – השלב הבא היה טלפון לחווה להגדלת הפס. הרבה מאוד פעמים – זו לא הייתה הבעיה.

נשארנו עם בעיית חומרה: מערך הדיסקים או ה-Storage פשוט לא מהיר מספיק.

המשותף לכל המקרים היה, קבצי וידאו/התמונות סופקו למערכת משרת קבצים או NAS. במקרה של אלו מבוססי לינוקס, השלב הבא היה להפעיל שם את פרוטוקול SMB2 על ידי התקנה של Samba בגרסה מעודכנת ושינוי קבצי ההגדרות בהתאם – זה הועיל, אבל לא פתר את הבעיה.

אני לא התייאשתי, ונזכרתי של-IIS יש אפשרות ותיקה בשם Kernel Cache, כלומר שמירת קבצים סטטיים בזיכרון. 
החלטתי ללכת על פתרון  Reverse Proxy ולנצל את האפשרות הזו. 
האמור כאן מכוון כלפי IIS, אבל יעבוד על כל שרת Proxy תומך אחר, כולל Apache, Squid, Nginx ואחרים.

השלב הראשון היה התקנת שרת HTTP כלשהו בשרת הקבצים.

השלב השני, הינו שימוש ב-IIS, אבל עם ההגדרות המתאימות. 
אם מדובר בשרת שמספק קבצי טקסט - צריך לפתוח את מסך ההגדרות של IIS, אייקון Compression (דחיסה), ולהפעיל דחיסה על תכנים סטטיים. 
לוודא שמוגדרת תיקיה שאפשר לכתוב לתוכה, ולוודא שיש מגבלת שטח דיסק הגיונית.

אם מדובר בוידאו, כדאי להפעיל ולהגדיר נכון את BitRate Throttling, כדי לחסוך בתעבורה ו-I/O יקרים.

כעת נעבור למסך Output Caching, גם כן ב-IIS. 
תחת האפשרות Edit Feature Settings, נסמן את Enable cache, Enable kernel cache, ונשנה את המספרים שבברירת המחדל, לכמה שיותר – בהתאם להגיון וכמות הזיכרון שיש לנו.

בשלב הבא צריך להתקין את IIS Application Request Routing. לאחר שיותקן ניגש לאייקון Application Request Routing, ונפעיל משם את הפרוקסי (תחת האפשרות Server Proxy Settings). 
בהתאם לכמות הזיכרון, נשנה את זמן השהיה בזיכרון (Memory cache duration) למשהו יותר סביר מדקה, ובהתאם לתשתית – לאפשר Disk cache. 
חשוב מאוד לאפשר Request Consolidation – חוסך עוד קצת I/O.

QR: Inline image 1

Posted via email from Jasper-net

שרת קבצים ווידאו: כך חוסכים I/O יקר מפז בעשר דקות עבודה

|
ה"תסריט" הבא חזר על עצמו בכמה מקרים שונים שטיפלתי בהם: שרת שמיועד לאחסון קבצים (ובמיוחד קבצי וידאו), במקרה אחד היה מדובר במערכת אחסון מרכזית (Storage) של יצרן מפורסם. בשעות השיא המערכת פשוט לא מספקת את הוידאו מספיק מהר והגולשים החלו מתלוננים על איטיות.

ספק מערכת האחסון או השרת הציע פשוט לעבור לדגם יקר (הרבה) יותר. מנהל המערכת העדיף להתקשר אליי.

השלב הראשון היה זיהוי הבעיה. "בדיקת מהירות" פשוטה מול שרת מהיר. הן זו המוכרת מאתרי אינטרנט שונים, והן IPerf, שפשוט מעביר כמויות גדולות של תעבורה מצד לצד. 
במקרים בהם זו הייתה הבעיה – השלב הבא היה טלפון לחווה להגדלת הפס. הרבה מאוד פעמים – זו לא הייתה הבעיה.

נשארנו עם בעיית חומרה: מערך הדיסקים או ה-Storage פשוט לא מהיר מספיק.

המשותף לכל המקרים היה, קבצי וידאו/התמונות סופקו למערכת משרת קבצים או NAS. במקרה של אלו מבוססי לינוקס, השלב הבא היה להפעיל שם את פרוטוקול SMB2 על ידי התקנה של Samba בגרסה מעודכנת ושינוי קבצי ההגדרות בהתאם – זה הועיל, אבל לא פתר את הבעיה.

אני לא התייאשתי, ונזכרתי של-IIS יש אפשרות ותיקה בשם Kernel Cache, כלומר שמירת קבצים סטטיים בזיכרון. 
החלטתי ללכת על פתרון  Reverse Proxy ולנצל את האפשרות הזו. 
האמור כאן מכוון כלפי IIS, אבל יעבוד על כל שרת Proxy תומך אחר, כולל Apache, Squid, Nginx ואחרים.

השלב הראשון היה התקנת שרת HTTP כלשהו בשרת הקבצים.

השלב השני, הינו שימוש ב-IIS, אבל עם ההגדרות המתאימות. 
אם מדובר בשרת שמספק קבצי טקסט - צריך לפתוח את מסך ההגדרות של IIS, אייקון Compression (דחיסה), ולהפעיל דחיסה על תכנים סטטיים. 
לוודא שמוגדרת תיקיה שאפשר לכתוב לתוכה, ולוודא שיש מגבלת שטח דיסק הגיונית.

אם מדובר בוידאו, כדאי להפעיל ולהגדיר נכון את BitRate Throttling, כדי לחסוך בתעבורה ו-I/O יקרים.

כעת נעבור למסך Output Caching, גם כן ב-IIS. 
תחת האפשרות Edit Feature Settings, נסמן את Enable cache, Enable kernel cache, ונשנה את המספרים שבברירת המחדל, לכמה שיותר – בהתאם להגיון וכמות הזיכרון שיש לנו.

בשלב הבא צריך להתקין את IIS Application Request Routing. לאחר שיותקן ניגש לאייקון Application Request Routing, ונפעיל משם את הפרוקסי (תחת האפשרות Server Proxy Settings). 
בהתאם לכמות הזיכרון, נשנה את זמן השהיה בזיכרון (Memory cache duration) למשהו יותר סביר מדקה, ובהתאם לתשתית – לאפשר Disk cache. 
חשוב מאוד לאפשר Request Consolidation – חוסך עוד קצת I/O.

QR: Inline image 1

Posted via email from Jasper-net

20 Kick-ass programming quotes

|
This post serves as a compilation of great programming quotes, quotes from famous programmers, computer scientists and savvy entrepreneurs of our time. Some of them are funny, some of them are motivational, some of them are… just awesome!

So, in no particular order, let’s see what we have…

...

4. “Nine people can’t make a baby in a month.” (regarding the addition of more programmers to get a project completed faster)
- Fred Brooks (American computer scientist, winner of the 1999 Turing Award)

...

6. “Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live.”
- Martin Golding

7. “C makes it easy to shoot yourself in the foot; C++ makes it harder, but when you do, it blows away your whole leg.”
- Bjarne Stroustrup (Danish computer scientist, developer of the C++ programming language)

...

12. “Any fool can write code that a computer can understand. Good programmers write code that humans can understand.”
- Martin Fowler (author and speaker on software development)

...

14. “The problem with using C++ … is that there’s already a strong tendency in the language to require you to know everything before you can do anything.”
- Larry Wall (developer of the Perl language)

Read more: Java code geeks
QR: Inline image 1

Posted via email from Jasper-net

Reactive Extensions (Rx) is now Open Source

|
A few years back I did a podcast with Erik Meijer about Reactive Extensions for .NET (Rx). Since then thousands of people have enjoyed using Rx in the projects and a number of open source projects like ReactiveUI (also on the podcast) have popped up around it. Even GitHub for Windows uses Reactive Extensions. In fact, GitHub uses Rx a LOT in their Windows product. My friend Paul at GitHub says they liked the model so much they made a Mac version!

“GitHub for Windows uses the Reactive Extensions for almost everything it does, including network requests, UI events, managing child processes (git.exe). Using Rx and ReactiveUI, we've written a fast, nearly 100% asynchronous, responsive application, while still having 100% deterministic, reliable unit tests. The desktop developers at GitHub loved Rx so much, that the Mac team created their own version of Rx and ReactiveUI, called ReactiveCocoa, and are now using it on the Mac to obtain similar benefits.” – Paul Betts, GitHub

Today, Microsoft Open Technologies announced the open sourcing of Reactive Extensions! You can get the code with git up on Codeplex at https://rx.codeplex.com. You can’t stop the open source train! Congrats to the team!

There’s a LOT included, so be stoked. It’s not just Rx.NET, but also the C++ library as well as RxJS for JavaScript! Now everyone gets to play with IObservable<T> and IObserver<T>.

  • Reactive Extensions:
  • Rx.NET: The Reactive Extensions (Rx) is a library for composing asynchronous and event-based programs using observable sequences and LINQ-style query operators.
  • RxJS: The Reactive Extensions for JavaScript (RxJS) is a library for composing asynchronous and event-based programs using observable sequences and LINQ-style query operators in JavaScript which can target both the browser and Node.js.
  • Rx++: The Reactive Extensions for Native (RxC) is a library for composing asynchronous and event-based programs using observable sequences and LINQ-style query operators in both C and C++.
  • Interactive Extensions
    • Ix: The Interactive Extensions (Ix) is a .NET library which extends LINQ to Objects to provide many of the operators available in Rx but targeted for IEnumerable<T>.
    • IxJS: An implementation of LINQ to Objects and the Interactive Extensions (Ix) in JavaScript.
    • Ix++: An implantation of LINQ for Native Developers in C++

    Read more: Scott Hanselman
    QR: Inline image 1

    Posted via email from Jasper-net

    Reactive Extensions (Rx) is now Open Source

    |
    A few years back I did a podcast with Erik Meijer about Reactive Extensions for .NET (Rx). Since then thousands of people have enjoyed using Rx in the projects and a number of open source projects like ReactiveUI (also on the podcast) have popped up around it. Even GitHub for Windows uses Reactive Extensions. In fact, GitHub uses Rx a LOT in their Windows product. My friend Paul at GitHub says they liked the model so much they made a Mac version!

    “GitHub for Windows uses the Reactive Extensions for almost everything it does, including network requests, UI events, managing child processes (git.exe). Using Rx and ReactiveUI, we've written a fast, nearly 100% asynchronous, responsive application, while still having 100% deterministic, reliable unit tests. The desktop developers at GitHub loved Rx so much, that the Mac team created their own version of Rx and ReactiveUI, called ReactiveCocoa, and are now using it on the Mac to obtain similar benefits.” – Paul Betts, GitHub

    Today, Microsoft Open Technologies announced the open sourcing of Reactive Extensions! You can get the code with git up on Codeplex at https://rx.codeplex.com. You can’t stop the open source train! Congrats to the team!

    There’s a LOT included, so be stoked. It’s not just Rx.NET, but also the C++ library as well as RxJS for JavaScript! Now everyone gets to play with IObservable<T> and IObserver<T>.

    • Reactive Extensions:
    • Rx.NET: The Reactive Extensions (Rx) is a library for composing asynchronous and event-based programs using observable sequences and LINQ-style query operators.
    • RxJS: The Reactive Extensions for JavaScript (RxJS) is a library for composing asynchronous and event-based programs using observable sequences and LINQ-style query operators in JavaScript which can target both the browser and Node.js.
    • Rx++: The Reactive Extensions for Native (RxC) is a library for composing asynchronous and event-based programs using observable sequences and LINQ-style query operators in both C and C++.
  • Interactive Extensions
    • Ix: The Interactive Extensions (Ix) is a .NET library which extends LINQ to Objects to provide many of the operators available in Rx but targeted for IEnumerable<T>.
    • IxJS: An implementation of LINQ to Objects and the Interactive Extensions (Ix) in JavaScript.
    • Ix++: An implantation of LINQ for Native Developers in C++

    Read more: Scott Hanselman
    QR: Inline image 1

    Posted via email from Jasper-net

    ostinato

    | Monday, November 5, 2012
    Introduction
    Ostinato is an open-source, cross-platform network packet crafter/traffic generator and analyzer with a friendly GUI. Craft and send packets of several streams with different protocols at different rates. For the full feature list see below.

    Ostinato aims to be "Wireshark in Reverse" and become complementary to Wireshark.

    Here's a screencast showing basic usage -

    Features
    • Runs on Windows, Linux, BSD and Mac OS X (Will probably run on other platforms also with little or no modification but this hasn't been tested)
    • Open, edit, replay and save PCAP files
    • Support for the most common standard protocols
    • Ethernet/802.3/LLC SNAP
    • VLAN (with QinQ)
    • ARP, IPv4, IPv6, IP-in-IP a.k.a IP Tunnelling (6over4, 4over6, 4over4, 6over6)
    • TCP, UDP, ICMPv4, ICMPv6, IGMP, MLD
    • Any text based protocol (HTTP, SIP, RTSP, NNTP etc.)
    • More protocols in the works ...
    • Modify any field of any protocol (some protocols allow changing packet fields with every packet at run time e.g. changing IP/MAC addresses)
    • User provided Hex Dump - specify some or all bytes in a packet
    • User defined script to substitute for an unimplemented protocol (EXPERIMENTAL)
    • Stack protocols in any arbitrary order
    • Create and configure multiple streams
    • Configure stream rates, bursts, no. of packets
    • Single client can control and configure multiple ports on multiple computers generating traffic
    • Exclusive control of a port to prevent the OS from sending stray packets provides a controlled testing environment
    • Statistics Window shows realtime port receive/transmit statistics and rates
    • Capture packets and view them (needs Wireshark to view the captured packets)
    • Framework to add new protocol builders easily

    Read more: Google code
    QR: Inline image 1

    Posted via email from Jasper-net

    Open Virtual Machine Tools

    |
    The Open Virtual Machine Tools (open-vm-tools) are the open source implementation of VMware Tools. They are a set of guest operating system virtualization components that enhance performance and user experience of virtual machines. As virtualization technology rapidly becomes mainstream, each virtualization solution provider implements their own set of tools and utilities to supplement the guest virtual machine. However, most of the implementations are proprietary and are tied to a specific virtualization platform.

    With the Open Virtual Machine Tools project, we are hoping to solve this and other related problems. The tools are currently composed of kernel modules for Linux and user-space programs for all VMware supported Unix-like guest operating systems. They provide several useful functions like:
    File transfer between a host and guest
    Improved memory management and network performance under virtualization
    General mechanisms and protocols for communication between host and guests and from guest to guest

    We are excited about starting this open source project and we think it opens up a lot of opportunities.

    With the source code readily available, users of VMware products today (and other virtualization platforms too, in the future) will get these tools bundled and delivered through their distribution specific package manager. This should provide a seamless installation/upgrade experience and ease the burden on sysadmins. In fact, if you are looking to package the source for your favorite Linux distribution, we have included some helpful documentation.

    If you are looking to implement virtualization-enabled applications, you can use the source as an excellent reference.

    If you are looking to port the tools to other operating systems (or other hypervisors), we would love to hear your ideas and help you with the development.

    We are working hard to move our development environment over to sourceforge.net and hope to do so in the near future.

    In the meantime

    Grab our latest snapshot release here .
    Read through the documentation.
    Interact with the developers using the mailing lists.
    Report bugs.
    Spread the word.

    QR: Inline image 1

    Posted via email from Jasper-net

    ZeroMQ via C#: Introduction

    |
    Introduction   

    ZeroMQ (also spelled ØMQ, 0MQ or ZMQ) is a very lightweight message queuing open source software. It doesn't have a stand-alone server; messages are sent directly from application to application. It is very simple to learn and implement. It is composed of one single library called libzmq.dll written in c++ that can be linked to any application. To use it in the .Net environment we need a wrapper for this library which is called clrzmq.dll written in C#.

    ZeroMQ can be run on Windows, OS X, and Linux. Several languages can be used to implement applications using ZeroMQ including C, C++, C#, Java, Python… This gives the ability to communicate with different applications on different platforms. 

    The heart of ZeroMq 

    The main part of ZeroMQ is the socket. It's not the traditional socket, but it's a socket that provides a layer of abstraction on top of the traditional socket API, which frees us from the complexity and the repeated tasks that we do in our applications. ZeroMQ supports several types of sockets (the type of the socket is defined as an attribute value in the socket itself). The different combinations of socket types in the sending and receiving ends give us different communication patterns that we will explore some of them in this article.  

    Asynchronous Communication 

    The communications done by ZeroMQ are done in an asynchronous way. That means our application will not be blocked during setting up or closing the socket connection, re-connection and message delivery. These operations are managed by ZeroMQ tself in background threads and in parallel to the regular processing done by our application. It queues messages (either at sender or receiver side) automatically when needed. It does this intelligently, pushing messages as close as possible to the receiver before queuing them. 

    Read more: Codeproject
    QR: Inline image 1

    Posted via email from Jasper-net

    Utilities and SDK for Subsystem for UNIX-based Applications in Windows 8 [Enterprise] and Windows Server 2012" now available

    |
    Utilities and SDK for Subsystem for UNIX-based Applications includes base utilities, software development kits (SDKs), and shells for use with Subsystem for UNIX-based Applications, a feature that is available for installation on Windows 8 Enterprise and Windows Server 2012

    Version: 10.0.7063.0 
    Date published: 10/31/2012

    Language:English

    Utilities and SDK for Subsystem for UNIX-based Applications_AMD64.exe, 254.6 MB 
    Utilities and SDK for Subsystem for UNIX-based Applications_x86.exe, 253.6 MB

    Utilities and SDK for Subsystem for UNIX-based Applications (SUA) includes the following base utilities, software development kits (SDKs), and shells for use with Subsystem for UNIX-based Applications, a feature that is available for installation on Windows 8 and Windows Server 2012.

    Base subsystem commands and utilities
    SVR-5 commands and utilities
    Base subsystem SDK
    GNU SDK
    GNU commands and utilities
    SCO commands and utilities
    UNIX-based Perl
    Microsoft Visual Studio® Debugger Extension for debugging POSIX applications
    Korn and C shells
    Subsystem for UNIX-based Applications HTML Help files (*.chm)
    This release allows you to develop x64-based applications by using SUA, and develop and port custom UNIX-based applications to Windows by using the Windows OCI (Oracle Call Interface) and Windows ODBC libraries.
    Supported operating systems: Windows 8, Windows Server 2012

    Read more: MS Download
    QR: Inline image 1

    Posted via email from Jasper-net

    Utilities and SDK for Subsystem for UNIX-based Applications” Updated for Windows 7, Windows Server 2008 R2

    |
    Utilities and SDK for UNIX-Based Applications is an add-on to the Subsystem for UNIX-Based Applications (referred to as SUA, hence forth) component that shipped in Microsoft Windows 7/ Windows Server 2008 R2.

    This consists of the following components: 
    - Base Utilities 
    - SVR-5 Utilities 
    - Base SDK 
    - GNU SDK 
    - GNU Utilities 
    - UNIX Perl 
    - Visual Studio Debugger Add-in

    This release enables 64-bit application development for SUA. development and porting of custom UNIX applications using the Windows OCI (Oracle Call Interface) and Windows ODBC libraries (collectively referred to as ‘Mixed Mode’ in the rest of the document).

    Read more: MS Download
    QR: Inline image 1

    Posted via email from Jasper-net