Search Results

Search found 14827 results on 594 pages for 'window decoration'.

Page 143/594 | < Previous Page | 139 140 141 142 143 144 145 146 147 148 149 150  | Next Page >

  • Using windowmaker with quartz-wm in proxy mode on Snow Leopard

    - by Graham Lee
    I can modify my .xinitrc file to exec /opt/local/bin/wmaker, and get WindowMaker 0.90.2 as my window manager in X11.app. I'd like to use quartz-wm not as a window manager, but to provide the pasteboard integration with Aqua using the --only-proxy flag (see the man page). If I add the following line to .xinitrc: exec /usr/bin/quartz-wm --only-proxy & then WindowMaker never starts, complaining that there's already a window manager running. Is it possible to get the two to play nicely together, or is proxy feature part of the Xquartz server now? It seems that the Xquartz manpage has a number of pasteboard-to-clipboard synchronisation settings, but it's not clear whether quartz-wm needs to be running for those to work.

    Read the article

  • Mutating Programming Language?

    - by MattiasK
    For fun I was thinking about how one could build a programming language that differs from OOP and came up with this concept. I don't have a strong foundation in computer science so it might be common place without me knowing it (more likely it's just a stupid idea :) I apologize in advance for this somewhat rambling question :) Anyways here goes: In normal OOP methods and classes are variant only upon parameters, meaning if two different classes/methods call the same method they get the same output. My, perhaps crazy idea, is that the calling method and class could be an "invisible" part of it's signature and the response could vary depending on who call's an method. Say that we have a Window object with a Break() method, now anyone (who has access) could call this method on Window with the same result. Now say that we have two different objects, Hammer and SledgeHammer. If Break need to produce different results based on these we'd pass them as parameters Break(IBluntObject bluntObject) With a mutating programming language (mpl) the operating objects on the method would be visible to the Break Method without begin explicitly defined and it could adopt itself based on them). So if SledgeHammer calls Window.Break() it would generate vastly different results than if Hammer did so. If OOP classes are black boxes then MPL are black boxes that knows who's (trying) to push it's buttons and can adapt accordingly. You could also have different permission sets on methods depending who's calling them rather than having absolute permissions like public and private. Does this have any advantage over OOP? Or perhaps I should say, would it add anything to it since you should be able to simply add this aspect to methods (just give access to a CallingMethod and CallingClass variable in context) I'm not sure, might be to hard to wrap one's head around, it would be kinda interesting to have classes that adopted themselves to who uses them though. Still it's an interesting concept, what do you think, is it viable?

    Read the article

  • How to make cygwin shortcut stick to Windows 7 dock

    - by Frank Krueger
    I have recently installed cygwin on a Windows 7 beta machine. Everything works great, except one little annoyance: The cygwin shortcut (Start-All Programs-cygwin-cygwin Bash Shell) cannot be pinned to the Start menu. My guess as to why is that I already have a "Console" window pinned to the start menu. My guess is that Windows sees that the two EXEs are the same and won't let me pin it. This would be fine except I cannot pin the window to the Dock either. While cygwin is running, WIndows interprets it as just a Command Window and won't let me pin it either. How do you pin the cygwin shortcut to the dock?

    Read the article

  • Trouble installing Ubuntu 12.04 from USB

    - by Kyle J
    I want to dual-boot Ubuntu Desktop 12.04 on my new ultrabook which has an Intel i7 3517U processor 6GB RAM Windows 7, 64-bit no CD/DVD drive I created my bootable USB stick using pendrivelinux.com with the "ubuntu-12.04.1-desktop-i386.iso". I am following these directions because they include nice screenshots; however, I do not get very far in the process. I am able to boot into the Live Desktop, and then I try to install onto my hard disk. Here are the series of actions that I take next: First, I see this ( http://i.imgur.com/vucYH ) window, and click 'continue' Then I get this ( http://imgur.com/2wESc ) window, and click 'continue' again This appears: and I get worried because it seems like there is no recognition that I have Windows installed. According to the directions I am following, I should see /dev/sda1 and /dev/sda2 partitions. In the drop-down menu at the bottom the only "Device for boot loader installation" is /dev/sdb and no information is shown. I am hesitant to click 'Install Now' for fear of what it might do to Windows. 4. I click 'Quit' and cancel the installation, but then about 5 seconds later this ( http://imgur.com/a/yXi0C ) window pops up (I have expanded it to full screen to scroll and show all the details). 5. Another second later this ( http://imgur.com/vxcrN ) comes up. I'm not sure how relevant this is. Does anyone have any insight into this issue?? Why does it not show my current Windows partition? What would happen if I tried to continue with the installation process? Thanks! PS - sorry, it would only let me post 2 hyperlinks as a new user

    Read the article

  • Desktop switcher appears to be broken for quick double-switches

    - by Jon Blackburn
    I'm wondering if anyone else has seen this. I have three virtual desktops aligned in a horizontal row. In the middle desktop I have only a single application window. I have keyboard shortcuts mapping to navigate between the desktops. Obviously, I never use the up/down arrows because I only have one row of workspaces. Here's the problem, which only started to happen after I installed 12.04.1: When I rapidly hit to go from workspace 1 to workspace 3, the window on workspace 2 gets moved to workspace 1. I have checked using both Unity and Gnome3, and the behavior is the same under both. If I change back to the default workspace setup (a 2x2 grid of desktops) things seem to settle down (i.e., no wandering windows). Not every type of application window behaves the same way. I couldn't get a Chrome browser to jump from 2 to 1, but both Terminal and Terminator exhibit the behavior. Any thoughts? Better workarounds? Thanks in advance.

    Read the article

  • Is there a Google Chrome extension or userscript that will "bottom-justify" form fields?

    - by Dennis Williamson
    When using Google Chrome, I would like to have a page scroll up so the bottom of form fields are at or above the bottom of the window when I click in the text input to begin entering something. However, if the form height is larger than the window, the top should not be scrolled off automatically. I want to go from: to: An bonus essential feature would be for the input box to automatically be resized in height (but not width) to fill the window. This feature ideally would be configurable: enable/disable and margin above and below. There should be no scrolling or resizing for one-line input boxes. Is there an extension or userscript that does something like this?

    Read the article

  • Introduction to the ADF Debugger

    - by Shay Shmeltzer
    Not that you'll ever need this blog entry - after all there are never bugs in the code that YOU write. But maybe one day one of your peers will ask you for help debugging their ADF application so here we go... One of the cool features of JDeveloper and ADF is the ADF Debugger - a way to debug the declarative pars of Oracle ADF. The debugger goes beyond your regular Java debugger and shows you in a clear way specific information related to Oracle ADF - things like where are you in the taskflow/region hierarchy, what is in your various scopes, what is the value of a specific EL and much more. However, from the number of posts on OTN where people are saying "I placed a System.out.println() to see what the value was...", it seems that not many are familiar with the power of the debugger. So here is a short demo that shows you some aspects of the debugger such as: Setting breakpoints on various ADF artifacts The ADF structure window The ADF Data window The EL Evaluater window Want to learn more about debugging ADF applications - I highly recommend that you go back in time to 2009 and attend Steve Muench's OOW presentation about ADF debugging. Can't travel in time yet? Then the second best option is to look at his very clear ADF Debugging Slides, which were the inspiration to the above demo.

    Read the article

  • How to open a second instance of the pdf x-change viewer?

    - by rumtscho
    Every time I open a new document in the pdf x-change viewer, it gets opened in the same window. I want to place different documents on different places on the screen (independently of each other, not just tiling the window for side-by-side view), but cannot do it. Even going to the start menu and starting the reader again doesn't open a new instance of the application. Can I force the program to open a new instance or a new independent window? If this is impossible, which other free reader does what I need and also lets me make changes to the file? I don't need to edit the text itself, but I want to be able to add comments, underline and highlight text, and add some graphic elements (e.g. a circle or a freehand line).

    Read the article

  • Watch Flash video but block out part of it

    - by Ken
    I'm learning a foreign language. There are several online sites that have Flash video in the language I'm learning (e.g., Hulu), which is great. Unfortunately, they have English subtitles, which is (depending on who you ask) somewhere between "annoying" and "actively harmful to my learning". When I'm watching them in a window, I can just move them near the bottom of the screen, or put another window over them. That's awkward, but it kind of works. But I'd like to watch them full-screen, on my TV set. Full-screen Flash doesn't let me put any window on top of it. Is there a way to watch an online Flash video but block out part of it? I'll probably be using my Mac for this, but maybe Linux -- solutions for either one welcome.

    Read the article

  • Game Center Leaderboard not dismissing

    - by FireStorm
    I was implementing Game Center into my app and all was going well except for the leaderboard done button not dismissing the leaderboard even with gameCenterControllerDidFinish added in. I call up the leaderboard with the touch of a button in the .m file as so: - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { UITouch *touch = [touches anyObject]; CGPoint location = [touch locationInNode:self]; SKNode *node = [self nodeAtPoint:location]; if ([node.name isEqualToString:@"rankButton"]) { [self runAction:[SKAction playSoundFileNamed:@"fishtran.m4a" waitForCompletion: NO]]; GKGameCenterViewController *gameCenterController = [[GKGameCenterViewController alloc] init]; if (gameCenterController != nil) { gameCenterController.viewState = GKGameCenterViewControllerStateAchievements; UIViewController *vc = self.view.window.rootViewController; [vc presentViewController: gameCenterController animated: YES completion:nil]; } } else if ([node.name isEqualToString:@"Leaderboard"]) { GKGameCenterViewController *gameCenterController = [[GKGameCenterViewController alloc] init]; if (gameCenterController != nil) { gameCenterController.viewState = GKGameCenterViewControllerStateLeaderboards; UIViewController *vc = self.view.window.rootViewController; [vc presentViewController: gameCenterController animated: YES completion:nil]; } } ... and then I added thegameCenterControllerDidFinish immediately after as so: - (void)gameCenterControllerDidFinish:(GKGameCenterViewController*)gameCenterController { UIViewController *vc = self.view.window.rootViewController; [vc dismissViewControllerAnimated:YES completion:nil]; } and the done button still doesn't work and i haven't been able to find any solutions. And yes, I do have GKGameCenterControllerDelegate in my .h file. Any help would be greatly appreciated, Thanks!

    Read the article

  • Open Windows Server 2012/Windows 8 Start Menu

    - by bmccleary
    I realize that Windows Server 2012 (and Windows 8) removed the start menu button and replaced it with moving your mouse to the upper right corner of the screen. This works fine when the desktop is full screen. However, I access all my servers through windowed RDP connections (or through the Hyper-V console window) and in this case, the desktop is not full screen. Therefore, in order to open the new "start" menu, I have to slowly move my mouse very carefully within the window to just a few pixels within top right corner of the window in order to open the menu. Also, because the session is windowed, the default hot keys (Windows + D, etc.) won't work. There has got to be an easier way. Has anyone else experienced this frustration?

    Read the article

  • Firefox tabs in titlebar - can't drag maximised windows across monitors

    - by Dan
    In Windows 7, you can drag a maximised window from one monitor to the next by dragging the titlebar. However, Firefox 4 now places tabs in the title bar when it's maximised. This means that when I try and drag my Firefox window to the other monitor I end up dragging a tab instead of the whole Firefox window. It's quite annoying, as I'm used to "flicking" Windows from one monitor to the next. Does anyone know a way to stop Firefox from using the title bar for tabs?

    Read the article

  • Troubleshooting VMware on Ubuntu

    Summary of different problems while using VMware products on Ubuntu. This article is going to be updated from time to time with new information about running VMware products more or less smoothly on Ubuntu. Following are links to existing articles: Running VMware Player on Linux (xubuntu Hardy Heron) Running VMware Server on Linux (version 1.0.6 on xubuntu) Using ext4 in VMware machine   VMware mouse grab/ungrab problem (Source: LinuxInsight) Upgrading GTK library in Ubuntu since Karmic Koala gives you a strange mouse behaviour. Even if you have "Grab when cursor enters window" option set, VMware won't grab your pointer when you move mouse into the VMware window. Also, if you use Ctrl-G to capture the pointer, VMware window will release it as soon as you move mouse around a little bit. Quite annoying behavior... Fortunately, there's a simple workaround that can fix things until VMware resolves incompatibilities with the new GTK library. VMware Workstation ships with many standard libraries including libgtk, so the only thing you need to do is to force it to use it's own versions. The simplest way to do that is to add the following line to the end of the /etc/vmware/bootstrap configuration file and restart the Workstation. export VMWARE_USE_SHIPPED_GTK="force" The interface will look slightly odd, because older version of GTK is being used, but at least it will work properly. Note: After upgrading a new Linux kernel, it is necessary to compile the VMware modules, this requires to temporarily comment the export line in /etc/vmware/bootstrap.

    Read the article

  • Applescript Adobe Updater

    - by Alex
    So, I am new to Applescript editor and I am trying to write code to automatically update computers. For some odd reason I can not seem to get Adobe to update successfully. I tried using Accessibility Inspector, but nothing appeared like AXButton So is there even a way of writing code for Adobe when there is not an AXButton option? This is the code: tell application "Adobe Application Manager" activate end tell delay 7.0 tell application "System Events" tell process "Adobe Application Manager" click button "Update" of window "Adobe Application Manager" end tell end tell and this is the error message: error "System Events got an error: Can’t get button \"Update\" of window \"Adobe Application Manager\" of process \"Adobe Application Manager\"." number -1728 from button "Update" of window "Adobe Application Manager" of process "Adobe Application Manager

    Read the article

  • Confused about javascript module pattern implementation

    - by Damon
    I have a class written on a project I'm working on that I've been told is using the module pattern, but it's doing things a little differently than the examples I've seen. It basically takes this form: (function ($, document, window, undefined) { var module = { foo : bar, aMethod : function (arg) { className.bMethod(arg); }, bMethod : function (arg) { console.log('spoons'); } }; window.ajaxTable = ajaxTable; })(jQuery, document, window); I get what's going on here. But I'm not sure how this relates to most of the definitions I've seen of the module (or revealing?) module pattern. like this one from briancray var module = (function () { // private variables and functions var foo = 'bar'; // constructor var module = function () { }; // prototype module.prototype = { constructor: module, something: function () { } }; // return module return module; })(); var my_module = new module(); Is the first example basically like the second except everything is in the constructor? I'm just wrapping my head around patterns and the little things at the beginnings and endings always make me not sure what I should be doing.

    Read the article

  • XNA texture stretching at extreme coordinates

    - by Shaun Hamman
    I was toying around with infinitely scrolling 2D textures using the XNA framework and came across a rather strange observation. Using the basic draw code: spriteBatch.Begin(SpriteSortMode.Deferred, null, SamplerState.PointWrap, null, null); spriteBatch.Draw(texture, Vector2.Zero, sourceRect, Color.White, 0.0f, Vector2.Zero, 2.0f, SpriteEffects.None, 1.0f); spriteBatch.End(); with a small 32x32 texture and a sourceRect defined as: sourceRect = new Rectangle(0, 0, Window.ClientBounds.Width, Window.ClientBounds.Height); I was able to scroll the texture across the window infinitely by changing the X and Y coordinates of the sourceRect. Playing with different coordinate locations, I noticed that if I made either of the coordinates too large, the texture no longer drew and was instead replaced by either a flat color or alternating bands of color. Tracing the coordinates back down, I found the following at around (0, -16,777,000): As you can see, the texture in the top half of the image is stretched vertically. My question is why is this occurring? Certainly I can do things like bind the x/y position to some low multiple of 32 to give the same effect without this occurring, so fixing it isn't an issue, but I'm curious about why this happens. My initial thought was perhaps it was overflowing the coordinate value or some such thing, but looking at a data type size chart, the next closest below is an unsigned short with a range of about 32,000, and above is an unsigned int with a range of around 2,000,000,000 so that isn't likely the cause.

    Read the article

  • Get Started with JavaFX 2 and Scene Builder

    - by Janice J. Heiss
    Up on otn/java is a very useful article by Oracle Java/Middleware/Core Tech Engineer Mark Heckler, titled, “How to Get Started (FAST!) with JavaFX 2 and Scene Builder.”  Heckler, who has development experience in numerous environments, shows developers how to develop a JavaFX application using Scene Builder “in less time than it takes to drink a cup of coffee, while learning your way around in the process”. He begins with a warning and a reassurance: “JavaFX is a new paradigm and can seem a bit imposing when you first take a look at it. But remember, JavaFX is easy and fun. Let's give it a try.” Next, after showing readers how to download and install JDK/JavaFX and Scene Builder, he informs the reader that they will “create a simple JavaFX application, create and modify a window using Scene Builder, and successfully test it in under 15 minutes.” Then readers download some NetBeans files:“EasyJavaFX.java contains the main application class. We won't do anything with this class for our example, as its primary purpose in life is to load the window definition code contained in the FXML file and then show the main stage/scene. You'll keep the JavaFX terms straight with ease if you relate them to the theater: a platform holds a stage, which contains scenes. SampleController.java is our controller class that provides the ‘brains’ behind the graphical interface. If you open the SampleController, you'll see that it includes a property and a method tagged with @FXML. This tag enables the integration of the visual controls and elements you define using Scene Builder, which are stored in an FXML (FX Markup Language) file. Sample.fxml is the definition file for our sample window. You can right-click and Edit the filename in the tree to view the underlying FXML -- and you may need to do that if you change filenames or properties by hand - or you can double-click on it to open it (visually) in Scene Builder.” Then Scene Builder enters the picture and the task is soon done. Check out the article here.

    Read the article

  • Minimizing windows to tray in xfce

    - by Gryllida
    For XFCE (v. 4.8), I'm searching for possible options to minimize windows to tray (iconify). This means that 1) they're not in the window listing and 2) they're not in the alt+TAB menu and 3) when closed, the window hides (it disappears from window listing but still stays running). "alltray" has some weird GTK-related bug (https://bugs.launchpad.net/alltray/+bug/589831; windows hide but unhiding doesn't do anything; they stay in the tray icon until the user undocks them). "trayer" complains that "another systray is already running" and there's no obvious workaround. This question here is to ask about possible minimalistic (as everything in XFCE is) solutions which don't involve manual compiling, and aren't an overkill like cairo-dock is (a rather bloated gnome-style application which creates a new large 'tray' instead of using the existing one). Thanks!

    Read the article

  • Is there a way to sort my windows within a screen session?

    - by jv1975
    I use screen and have ssh sessions open to a number of different machines from within my screen session. I'd like to keep them in order, for obvious reasons. Often I'll have to connect to a new machine which alphabetically/numerically should fit in between two existing windows. I can't find any way to reorder the windows other than with the "number" command, which swaps my current window with that at the number I specified. So adding a new window to the 15 I already have and then sticking it at position 2, while keeping all the other windows in order as well is cumbersome, to say the least, requiring swaps for all windows past #2. Is there anyway to sort the windows alphabetically? Or a way to "shift" all windows after a certain point up one spot? Or any other suggestions to insert a new window at an arbitrary point while still maintaining the order of all other windows? Thanks!

    Read the article

  • Lubuntu: How do I arrange windows with keyboard shortcuts?

    - by iveand
    I have been testing with Lubuntu and have found it really pleasant. However, I cannot find an answer for one essential (for me) feature: being able to arrange windows with keyboard shortcuts. In Ubuntu this is done with the "Grid" plugin in "compizconfig-settings-manager". Unity uses this as well for window arranging. I am not interested in the "drag to the left to take up 1/2 the screen", but rather just the "hit some key combo" to put the active window to the left 1/2 of the screen, for example. I found this entry in "askubuntu" asking a very similar question: Is there a way to make Openbox behave like the Compiz Grid plugin? But it seems the "answer to this question", namely pyTile (http://sourceforge.net/projects/pytile/), doesn't do what I would like it to do. I don't want to tile all current windows, I want to resize one window at a time as I specify (left, right, top, center, bottom, 1/2, 2/3, 1/3, etc.). And I would prefer to do so with the keyboard. I think it possible to install compiz in Lubuntu, but this seems like "overkill" for this one feature (Grid keyboard shortcuts). Any help out there? It would REALLY MAKE MY DAY!!!

    Read the article

  • Windows Randomly Stop Accepting Input from Bluetooth Keyboard

    - by dragonmantank
    I've got a laptop running Ubuntu 11.10 with the most recent updates and an Apple Wireless Keyboard that syncs via bluetooth. The Ubuntu box is also a Synergy server, using QuickSynergy to run Synergy. I'm using xmodmap to swap the option and command keys, but nothing else. Throughout the day, windows that are long running will just stop accepting input. For example, I leave gnome-terminal up and running almost 24 hours a day. If it sits for a while, it just stops accepting input. It doesn't matter if I'm ssh'd into another machine or sitting on a local tty session, it just stops accepting input. If I open a new tab or window, those work fine. The 'broken' tabs stay broken. I'm also running Turpial (a Twitter client) which will do that same thing. I tend to use the arrow keys to navigate, and it just stops accepting input. Closing it and reopening it causes it to work fine. I don't seem to have the problem in Chrome, but I tend to open up new tabs when I go somewhere instead of using existing tabs. I've updated all the packages, rebooted, and the only thing that seems to cure it is if I type on the built-in keyboard, the window will start to accept text from the bluetooth keyboard (until it stops again). I don't think the keyboard is disassociating from the laptop because it can happen while I'm using the keyboard, it seems more linked with windows that I sit for a long time. As an example, I'm typing in Chrome with the bluetooth keyboard but I have a terminal window that won't accept input.

    Read the article

  • Windows 7 tips and tricks

    - by Pyrolistical
    Related Question: Which windows tweaks do you use and they actually work? Tell us your favorite Windows 7 tips and tricks. Here's some I bet you never have heard of: Win + Arrow and Win + Shift + Arrow controls window location and even moves window to next monitor if you have multiple ones Win + P controls project/multiple monitors The pinned icons on the new taskbar can be launched by Win + 1, Win + 2, etc Launch a pinned icon again by using mouse 3, meaning you can open another Firefox window by just wheel clicking the icon! From The Bumper List of Windows 7 Secrets And a few more off the top of my head: Use the favorites at the top left in Windows Explorer. Drag commonly used folders to it, its super handy You can drag the task icons in and out of hidden icons The show desktop button is now that rectangle next to the clock on the task bar What tips and tricks do you have?

    Read the article

  • Suggestions for a Live chat software on websites for customer support?

    - by Munish Goyal
    Recommendations needed. We want to get in touch with customers via live chat. Requirements: chat window customisable to mingle with website theme (colors etc) preferably the window should be within webpage and not only pop-out/popup. ease of use by customer minimally intrusive should have triggers/Alerts to backend side. for ex: user is unable to fill-up signup form or something, we should be able to offer help to user and this chat window automatically shows to user. What is the cost ? UPDATE: After R&D we also narrowed down to comm100 and liveperson, and we will go with comm100. LP is best commerical soln. but comm100 is a good free soln. We go with comm100 as starting point. But it gives out exceptions alerts sometimes in the dashboard. Can it be configured for chat invitations triggered on certain conditions. Currently only a timebased trigger is available. Any other major difference between these two ?

    Read the article

  • Limiting the speed of the mouse cursor

    - by idlewire
    I am working on a simple game where you can drag objects around with the mouse cursor. As I drag the object around quickly, I notice there is some juddering, which seems to be due to the fact that I can move the mouse cursor faster than the game's update/draw. So, although I maintain the offset from where the player initially clicked on the object, the mouse's relative position to the object shifts around slightly before settling as I move the object very quickly. The only way I have found to get smooth, exact 1:1 movement is if I turn both IsFixedTimeStep and SynchronizeWithVerticalRetrace to false. However, I'd rather not have to do that. I have also tried making a custom mouse cursor, hiding the real mouse, taking the real mouse delta and clamping it to a maximum speed. Here is the problem: In windowed mode, the "real" mouse cursor moves off the window while the custom mouse cursor (since it's movement is being scaled) is still somewhere inside the game window. This becomes bizarre and is obviously not desired, as clicking at this point means clicking on things outside the game window. Is there any way to accomplish this in windowed mode? In fullscreen mode, the "real" mouse cursor is bounded to the edges of the screen. So I get to a point where there is no more mouse delta, yet my custom cursor is still somewhere in the middle of the screen and hence can't move further in that direction. If I wanted to clamp it to the edge of the screen when the real cursor is at the edge, then I would get an abrupt jump to the edge of the screen, which isn't desired either Any help would be appreciated. I'd like to be able to limit the speed of the mouse, but also would appreciate help with the first issue (the non-smooth relative offset between mouse cursor movement and object movement).

    Read the article

  • Changes to the LINQ-to-StreamInsight Dialect

    - by Roman Schindlauer
    In previous versions of StreamInsight (1.0 through 2.0), CepStream<> represents temporal streams of many varieties: Streams with ‘open’ inputs (e.g., those defined and composed over CepStream<T>.Create(string streamName) Streams with ‘partially bound’ inputs (e.g., those defined and composed over CepStream<T>.Create(Type adapterFactory, …)) Streams with fully bound inputs (e.g., those defined and composed over To*Stream – sequences or DQC) The stream may be embedded (where Server.Create is used) The stream may be remote (where Server.Connect is used) When adding support for new programming primitives in StreamInsight 2.1, we faced a choice: Add a fourth variety (use CepStream<> to represent streams that are bound the new programming model constructs), or introduce a separate type that represents temporal streams in the new user model. We opted for the latter. Introducing a new type has the effect of reducing the number of (confusing) runtime failures due to inappropriate uses of CepStream<> instances in the incorrect context. The new types are: IStreamable<>, which logically represents a temporal stream. IQStreamable<> : IStreamable<>, which represents a queryable temporal stream. Its relationship to IStreamable<> is analogous to the relationship of IQueryable<> to IEnumerable<>. The developer can compose temporal queries over remote stream sources using this type. The syntax of temporal queries composed over IQStreamable<> is mostly consistent with the syntax of our existing CepStream<>-based LINQ provider. However, we have taken the opportunity to refine certain aspects of the language surface. Differences are outlined below. Because 2.1 introduces new types to represent temporal queries, the changes outlined in this post do no impact existing StreamInsight applications using the existing types! SelectMany StreamInsight does not support the SelectMany operator in its usual form (which is analogous to SQL’s “CROSS APPLY” operator): static IEnumerable<R> SelectMany<T, R>(this IEnumerable<T> source, Func<T, IEnumerable<R>> collectionSelector) It instead uses SelectMany as a convenient syntactic representation of an inner join. The parameter to the selector function is thus unavailable. Because the parameter isn’t supported, its type in StreamInsight 1.0 – 2.0 wasn’t carefully scrutinized. Unfortunately, the type chosen for the parameter is nonsensical to LINQ programmers: static CepStream<R> SelectMany<T, R>(this CepStream<T> source, Expression<Func<CepStream<T>, CepStream<R>>> streamSelector) Using Unit as the type for the parameter accurately reflects the StreamInsight’s capabilities: static IQStreamable<R> SelectMany<T, R>(this IQStreamable<T> source, Expression<Func<Unit, IQStreamable<R>>> streamSelector) For queries that succeed – that is, queries that do not reference the stream selector parameter – there is no difference between the code written for the two overloads: from x in xs from y in ys select f(x, y) Top-K The Take operator used in StreamInsight causes confusion for LINQ programmers because it is applied to the (unbounded) stream rather than the (bounded) window, suggesting that the query as a whole will return k rows: (from win in xs.SnapshotWindow() from x in win orderby x.A select x.B).Take(k) The use of SelectMany is also unfortunate in this context because it implies the availability of the window parameter within the remainder of the comprehension. The following compiles but fails at runtime: (from win in xs.SnapshotWindow() from x in win orderby x.A select win).Take(k) The Take operator in 2.1 is applied to the window rather than the stream: Before After (from win in xs.SnapshotWindow() from x in win orderby x.A select x.B).Take(k) from win in xs.SnapshotWindow() from b in     (from x in win     orderby x.A     select x.B).Take(k) select b Multicast We are introducing an explicit multicast operator in order to preserve expression identity, which is important given the semantics about moving code to and from StreamInsight. This also better matches existing LINQ dialects, such as Reactive. This pattern enables expressing multicasting in two ways: Implicit Explicit var ys = from x in xs          where x.A > 1          select x; var zs = from y1 in ys          from y2 in ys.ShiftEventTime(_ => TimeSpan.FromSeconds(1))          select y1 + y2; var ys = from x in xs          where x.A > 1          select x; var zs = ys.Multicast(ys1 =>     from y1 in ys1     from y2 in ys1.ShiftEventTime(_ => TimeSpan.FromSeconds(1))     select y1 + y2; Notice the product translates an expression using implicit multicast into an expression using the explicit multicast operator. The user does not see this translation. Default window policies Only default window policies are supported in the new surface. Other policies can be simulated by using AlterEventLifetime. Before After xs.SnapshotWindow(     WindowInputPolicy.ClipToWindow,     SnapshotWindowInputPolicy.Clip) xs.SnapshotWindow() xs.TumblingWindow(     TimeSpan.FromSeconds(1),     HoppingWindowOutputPolicy.PointAlignToWindowEnd) xs.TumblingWindow(     TimeSpan.FromSeconds(1)) xs.TumblingWindow(     TimeSpan.FromSeconds(1),     HoppingWindowOutputPolicy.ClipToWindowEnd) Not supported … LeftAntiJoin Representation of LASJ as a correlated sub-query in the LINQ surface is problematic as the StreamInsight engine does not support correlated sub-queries (see discussion of SelectMany). The current syntax requires the introduction of an otherwise unsupported ‘IsEmpty()’ operator. As a result, the pattern is not discoverable and implies capabilities not present in the server. The direct representation of LASJ is used instead: Before After from x in xs where     (from y in ys     where x.A > y.B     select y).IsEmpty() select x xs.LeftAntiJoin(ys, (x, y) => x.A > y.B) from x in xs where     (from y in ys     where x.A == y.B     select y).IsEmpty() select x xs.LeftAntiJoin(ys, x => x.A, y => y.B) ApplyWithUnion The ApplyWithUnion methods have been deprecated since their signatures are redundant given the standard SelectMany overloads: Before After xs.GroupBy(x => x.A).ApplyWithUnion(gs => from win in gs.SnapshotWindow() select win.Count()) xs.GroupBy(x => x.A).SelectMany(     gs =>     from win in gs.SnapshotWindow()     select win.Count()) xs.GroupBy(x => x.A).ApplyWithUnion(gs => from win in gs.SnapshotWindow() select win.Count(), r => new { r.Key, Count = r.Payload }) from x in xs group x by x.A into gs from win in gs.SnapshotWindow() select new { gs.Key, Count = win.Count() } Alternate UDO syntax The representation of UDOs in the StreamInsight LINQ dialect confuses cardinalities. Based on the semantics of user-defined operators in StreamInsight, one would expect to construct queries in the following form: from win in xs.SnapshotWindow() from y in MyUdo(win) select y Instead, the UDO proxy method is referenced within a projection, and the (many) results returned by the user code are automatically flattened into a stream: from win in xs.SnapshotWindow() select MyUdo(win) The “many-or-one” confusion is exemplified by the following example that compiles but fails at runtime: from win in xs.SnapshotWindow() select MyUdo(win) + win.Count() The above query must fail because the UDO is in fact returning many values per window while the count aggregate is returning one. Original syntax New alternate syntax from win in xs.SnapshotWindow() select win.UdoProxy(1) from win in xs.SnapshotWindow() from y in win.UserDefinedOperator(() => new Udo(1)) select y -or- from win in xs.SnapshotWindow() from y in win.UdoMacro(1) select y Notice that this formulation also sidesteps the dynamic type pitfalls of the existing “proxy method” approach to UDOs, in which the type of the UDO implementation (TInput, TOuput) and the type of its constructor arguments (TConfig) need to align in a precise and non-obvious way with the argument and return types for the corresponding proxy method. UDSO syntax UDSO currently leverages the DataContractSerializer to clone initial state for logical instances of the user operator. Initial state will instead be described by an expression in the new LINQ surface. Before After xs.Scan(new Udso()) xs.Scan(() => new Udso()) Name changes ShiftEventTime => AlterEventStartTime: The alter event lifetime overload taking a new start time value has been renamed. CountByStartTimeWindow => CountWindow

    Read the article

< Previous Page | 139 140 141 142 143 144 145 146 147 148 149 150  | Next Page >