Search Results

Search found 33140 results on 1326 pages for 'skip list'.

Page 271/1326 | < Previous Page | 267 268 269 270 271 272 273 274 275 276 277 278  | Next Page >

  • Jquery Internet Explorer 8 compatibility issue, does not load data unless history is deleted...

    - by Scarface
    Hey guys, I have a weird problem. I have an update system that refreshes data on a time interval. It works well in all browsers except internet explorer 8. The problem is that once it loads the data, it does not matter if the data updates further, it will not update the data visually until the internet history is cleared. I am not using any cookies server-side...Anyone ever encounter something like this? Here is my javascript, thanks for any assistance in advance function prepare(response) { var d = new Date(); count++; d.setTime(response.time*1000); var mytime = d.getHours()+':'+d.getMinutes()+':'+d.getSeconds(); var string = '<li class="shoutbox-list" id="list-'+count+'">' + '<span class="shoutbox-list-nick"><a href="statistics.php?user='+response.user+'">'+response.user+'</a></span>' + ' <span class="date">'+mytime+'</span><br>' + '<span class="msg">'+response.message+'</span>' +'</li>'; return string; } function refresh() { $.getJSON(files+"shoutbox.php?action=view&time="+lastTime+"&topic_id="+topic_id, function(json) { if(json.length) { for(i=0; i < json.length; i++) { $('#daddy-shoutbox-list').prepend(prepare(json[i])); $('#list-' + count).fadeIn(1500); } var j = i-1; lastTime = json[j].time; } //alert(lastTime); }); timeoutID = setTimeout(refresh, 3000); } $(document).ready(function() { var options = { dataType: 'json', beforeSubmit: validate, success: function(response, status){ if (response.error=='success'){ success(response, status); } else { $.prompt(response.error); } } }; $('#daddy-shoutbox-form').ajaxForm(options); timeoutID = setTimeout(refresh, 100); });

    Read the article

  • Grails 1.2.0 not finding plugins in the default repository.

    - by Padraic
    I do not know what changed in my environment, but all of a sudden I can not pull any plugins from the default repository. I went through the _*.groovy scripts and nothing has changed in my grails home directory and it appears that the default repository url is set correctly (DEFAULT_PLUGIN_DIST = "http://plugins.grails.org"). I am assuming it is an environment setting that changed on me, because if I switch to an old version of grails that I have installed, 1.1.1 for example, list-plugins is returning a full list of plugins. When I run grails list-plugins in my current 1.2.0 environment I get the following output: Welcome to Grails 1.2.0 - http://grails.org/ Licensed under Apache Standard License 2.0 Grails home is set to: /opt/grails-1.2.0 Base Directory: /Users/padraic/Projects/TestApplicationMachine Resolving dependencies... Dependencies resolved in 1633ms. Running script /opt/grails-1.2.0/scripts/ListPlugins_.groovy Environment set to development Reading remote plugin list ... Plug-ins available in the core repository are listed below: hibernate <1.3.0.RC2 -- Hibernate for Grails tomcat <1.3.0.RC2 -- Apache Tomcat plugin for Grails webflow <1.3.0.RC2 -- Spring Web Flow Plugin Reading remote plugin list ... Plug-ins available in the default repository are listed below: spock <0.4-groovy-1.7-SNAPSHOT -- Spock Integration - spockframework.org Plug-ins you currently have installed are listed below: cloud-foundry 0.2 -- Cloud Foundry Plugin for Grails hibernate 1.2.0 -- Hibernate for Grails tomcat 1.2.0 -- Apache Tomcat plugin for Grails I find it very strange that it only finds the spock plugin. It makes me thing that either a)it is going to the wrong repository or b)my version setting is incorrect. Any ideas? Thanks, Padraic

    Read the article

  • SharePoint web part not displaying for site readers

    - by gregenslow
    Hello - I've built a custom SharePoint 2010 web part and deployed it to the home page of a publishing site. It's a very simple web part that just displays items from a SP list in a drop down list. The web part works fine if I'm logged in as a site owner or a member but not if I'm just a reader. The web part doesn't render at all to readers. I don't get any of the web part chrome or title, just nothing. I have other web parts (out-of-box ones) in the same zone that are displaying fine so it's not an issue of the whole zone not displaying. As a reader, I can still view the list directly so it doesn't appear to be a problem with list permissions. My web parts are being deployed as a farm solution, not sand-boxed and the assembly is being deployed to the GAC. I feel like I must be missing something simple here but I'm stumped. Help.

    Read the article

  • python lists error

    - by mekasperasky
    #defining the magic constants p=0xb7e15163 q=0x9e3779b9 pt=list() pt1=list() ct=list() pt2=list() #pt[0]=0pt1[0]=ct[0]=pt1[1]=ct[1]=0 s=[] l=[] b=8 key=[0,0,0,0,0,0,0,0,0] w=8 t=16 def enc(c,d): for i in range(1,r): A=A+s[0] B=B+s[1] A=A^B A=str(A) B=str(B) A=A[len(B):]+A[:len(B)] B=B^A A=str(A) B=str(B) B=B[len(A):]+B[:len(B)] A=A+s[2*i] B=B+s[2*i+1] ct.append(A) ct.append(B) def denc(): for i in range(r,1): A=ct[0] B=ct[1] B=B-s[2*i+1] B=B[len(c):] + B[:len(c)] B=B^A A=A-s[2*i] A=A[:len(B)]+c[len(B):] A=A^B pt1[1]=B-S[1] pt1[0]=A-S[0] def setup(k): u=w/8 for i in range(b-1,0): l.append(l[i/u:8]+l[8:i/u]+k[i]) s.append(p) for i in range(1,t-1): s.append(s[i-1] + q) i=j=0 A=B=0 for i in range(0,3*t): A=s.append(s[i]+A+B) B=s.append(s[:3]+s[3:]) #B=l.append((l[j]+A+B)) ll=len(str(A))+len(str(B)) B=l.append(l[:ll]+l[ll:]) i=(i+1)%t j=(j+1)%t def pri(g): for k in range(0,w): print g & 0xFF #for i in range(0,b): #key[i]=ct[0]%(255-j) pt1=[raw_input()] pt1=[raw_input()] setup(key) enc(pt1,ct) denc(ct,pt2) print("key") print(key) print("plaintext") printword(pt1[0]),printword(pt1[1]) printword(ct[0]),printword(ct[1]) the list l is always going out of index though it should not . I am not able to take the length of the string A even though it is a string .Once i convert it to string i am not able to add it in s[j]+A+B. How to get around such errors and make the code more hygenic .. This is an rc5 cipher.

    Read the article

  • Custom Display Form with Custom Workflow button

    - by Ifi
    I have created a new custom list form that will show 4 fields on the page from a Custom List called "Shipment". I have added Form Action button that I would like to run a custom action that is set inside of a Workflow. Currently, the form displays the fields for "Manifest Number", "Pickup Location", "Delivery Location", & "Scheduled Pickup Time". When the user clicks the Form Action button, what I want the Workflow to do is go to the ID field of the displayed content in the Form and change the value of the "Picked Up" column from No to Yes. The problem I am having is passing the ID of the displayed information from the Form to the Workflow as a variable. I can get the "Picked Up" column to update if I specify the value in the "Update List Item" window under the "Find the List Item" section, but I cannot figure out how to do this dynamically from the Form

    Read the article

  • Linq-to-SQL: How to perform a count on a sub-select

    - by Peter Bridger
    I'm still trying to get my head round how to use LINQ-to-SQL correctly, rather than just writing my own sprocs. In the code belong a userId is passed into the method, then LINQ uses this to get all rows from the GroupTable tables matching the userId. The primary key of the GroupUser table is GroupUserId, which is a foreign key in the Group table. /// <summary> /// Return summary details about the groups a user belongs to /// </summary> /// <param name="userId"></param> /// <returns></returns> public List<Group> GroupsForUser(int userId) { DataAccess.KINv2DataContext db = new DataAccess.KINv2DataContext(); List<Group> groups = new List<Group>(); groups = (from g in db.Groups join gu in db.GroupUsers on g.GroupId equals gu.GroupId where g.Active == true && gu.UserId == userId select new Group { Name = g.Name, CreatedOn = g.CreatedOn }).ToList<Group>(); return groups; } } This works fine, but I'd also like to return the total number of Users who are in a group and also the total number of Contacts that fall under ownership of the group. Pseudo code ahoy! /// <summary> /// Return summary details about the groups a user belongs to /// </summary> /// <param name="userId"></param> /// <returns></returns> public List<Group> GroupsForUser(int userId) { DataAccess.KINv2DataContext db = new DataAccess.KINv2DataContext(); List<Group> groups = new List<Group>(); groups = (from g in db.Groups join gu in db.GroupUsers on g.GroupId equals gu.GroupId where g.Active == true && gu.UserId == userId select new Group { Name = g.Name, CreatedOn = g.CreatedOn, // ### This is the SQL I would write to get the data I want ### MemberCount = ( SELECT COUNT(*) FROM GroupUser AS GU WHERE GU.GroupId = g.GroupId ), ContactCount = ( SELECT COUNT(*) FROM Contact AS C WHERE C.OwnerGroupId = g.GroupId ) // ### End of extra code ### }).ToList<Group>(); return groups; } }

    Read the article

  • android : bluetooth support

    - by Puneet kaur
    i have coded for bluetooth via defining a user task ,which will search the devices in background and set the list on foreground after finishing the search . but sometimes i am getting the data in adapter as "nodevice" "device1" "device2" ...... the problem here is why it is always filling the no device in the list and after that fill the device in list .. private BroadcastReceiver mBlueToothInfoDiscoveryListener = new BroadcastReceiver() { /** * This is an overridden function called by the framework whenever there * is some broadcast message for Bluetooth info discovery listener */ @Override public void onReceive(Context context, Intent intent) { String action = intent.getAction(); // When discovery finds a device if (BluetoothDevice.ACTION_FOUND.equals(action)) { // Get the BluetoothDevice object from the Intent BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE); // If it's already paired, skip it, because it's been listed // already if (device.getBondState() != BluetoothDevice.BOND_BONDED) { mNewBtDevicesArrayAdapter.add(device.getName() + "\n" + device.getAddress()); } // When discovery is finished, change the Activity title } else if (BluetoothAdapter.ACTION_DISCOVERY_FINISHED.equals(action)) { setProgressBarIndeterminateVisibility(false); setTitle("device list"); if (mNewBtDevicesArrayAdapter.getCount() == 0) { String noDevices = "No devices found"; mNewBtDevicesArrayAdapter.add(noDevices); } } } }; but here why it is sometimes going into else option on start and filling the list with no device then to if part again ... when devices are already on .

    Read the article

  • Re-using unit tests for models using STI

    - by TenJack
    I have a number of models that use STI and I would like to use the same unit test to test each model. For example, I have: class RegularList < List class OtherList < List class ListTest < ActiveSupport::TestCase fixtures :lists def test_word_count list = lists(:regular_list) assert_equal(0, list.count) end end How would I go about using the test_word_count test for the OtherList model. The test is much longer so I would rather not have to retype it for each model. Thanks.

    Read the article

  • NAVT WordPress Plugin - Just a quick question

    - by Michael
    Hi, I got this plugin and have created my list etc and it's appearing fine. However, I am wondering how I create a list under another list...like the second level part of the list? I'm trying to create a dropdown menu you see. In the admin, when I try and drag the item over, it will only let me put it in the first level, how do I get it to go under a sub-item? I would consult the NAVT blog etc but the documentation is so poor it's a kind of joke. But I guess it IS free :) Many thanks, Michael

    Read the article

  • Can the Windows Media Player COM control play AVI files from memory (instead of from a file)?

    - by MusiGenesis
    I have a C# app, and I'm looking at using the Windows Media Player COM control to play animation and audio. So far, the only way I see of programatically controlling what the control is playing is to set its URL property to point to some file (I assume there's some way to pass in a playlist). Is there any way the WMP can render an AVI that is entirely in-memory, like a MemoryStream or something? If so, can WMP skip from one AVI to the next seamlessly (i.e. no glitch in either the audio or the video as it transitions from one to the next)? If WMP only plays files, is there some way to cue up a list of the files in advance of play start? If so, can WMP be made to skip from one file to the next without a brief interruption? Any knowledge or links to knowledge would be much appreciated.

    Read the article

  • The type of field isn't supported by declared persistence strategy "OneToMany"

    - by Robert
    We are new to JPA and trying to setup a very simple one to many relationship where a pojo called Message can have a list of integer group id's defined by a join table called GROUP_ASSOC. Here is the DDL: CREATE TABLE "APP"."MESSAGE" ( "MESSAGE_ID" INTEGER NOT NULL GENERATED ALWAYS AS IDENTITY (START WITH 1, INCREMENT BY 1) ); ALTER TABLE "APP"."MESSAGE" ADD CONSTRAINT "MESSAGE_PK" PRIMARY KEY ("MESSAGE_ID"); CREATE TABLE "APP"."GROUP_ASSOC" ( "GROUP_ID" INTEGER NOT NULL, "MESSAGE_ID" INTEGER NOT NULL ); ALTER TABLE "APP"."GROUP_ASSOC" ADD CONSTRAINT "GROUP_ASSOC_PK" PRIMARY KEY ("MESSAGE_ID", "GROUP_ID"); ALTER TABLE "APP"."GROUP_ASSOC" ADD CONSTRAINT "GROUP_ASSOC_FK" FOREIGN KEY ("MESSAGE_ID") REFERENCES "APP"."MESSAGE" ("MESSAGE_ID"); Here is the pojo: @Entity @Table(name = "MESSAGE") public class Message { @Id @Column(name = "MESSAGE_ID") @GeneratedValue(strategy = GenerationType.IDENTITY) private int messageId; @OneToMany(fetch=FetchType.LAZY, cascade=CascadeType.PERSIST) private List groupIds; public int getMessageId() { return messageId; } public void setMessageId(int messageId) { this.messageId = messageId; } public List getGroupIds() { return groupIds; } public void setGroupIds(List groupIds) { this.groupIds = groupIds; } } When we try to execute the following test code we get <openjpa-1.2.3-SNAPSHOT-r422266:907835 fatal user error> org.apache.openjpa.util.MetaDataException: The type of field "pojo.Message.groupIds" isn't supported by declared persistence strategy "OneToMany". Please choose a different strategy. Message msg = new Message(); List groups = new ArrayList(); groups.add(101); groups.add(102); EntityManager em = Persistence.createEntityManagerFactory("TestDBWeb").createEntityManager(); em.getTransaction().begin(); em.persist(msg); em.getTransaction().commit(); Help!

    Read the article

  • Abort SAX parsing mid-document?

    - by CSharperWithJava
    I'm parsing a very simple XML schema with a SAX parser in Android. An example file would be <Lists> <List name="foo"> <Note title="note 1" .../> <Note title="note 2" .../> </List> <List name="bar"> <Note title="note 3" .../> </List> </Lists> The ... represents more note data as attributes that aren't important to question. I use a SAX parser to parse the document and only implement the startElement and 'endElement' methods of the HandlerBase to handle Note and List nodes. However, In some cases the files can be very large and take some time to process. I'd like to be able to abort the parsing process at any time (i.e. user presses cancel button). The best way I've come up with is to throw an exception from my startElement method when certain conditions are met (i.e. boolean stopParsing is true). Is there a better way to do this? I've always used DOM style parsers, so I don't fully understand the SAX parser. One final note, I'm running this on Android, so I will have the Parser running on a worker thread to keep the UI responsive. If you know how I can kill the thread safely while the parser is running that would answer my question as well.

    Read the article

  • Persist changes in C

    - by Mohit Deshpande
    I am developing a database-like application that stores a a structure containing: struct Dictionary { char *key; char *value; struct Dictionary *next; }; As you can see, I am using a linked list to store information. But the problem begins when the user exits out of the program. I want the information to be stored somewhere. So I was thinking of storing the linked list in a permanent or temporary file using fopen, then, when the user starts the program, retrieve the linked list. Here is the method that prints the linked list to the console: void PrintList() { int count = 0; struct Dictionary *current; current = head; if (current == NULL) { printf("\nThe list is empty!"); return; } printf(" Key \t Value\n"); printf(" ======== \t ========\n"); while (current != NULL) { count++; printf("%d. %s \t %s\n", count, current->key, current->value); current = current->next; } } So I am thinking of modifying this method to print the information through fprintf instead of printf and then the program would just get the infomation from the file. Could someone help me on how I can read and write to this file? What kind of file should it be, temporary or regular? How should I format the file (like I was thinking of just having the key first, then the value, then a newline character)?

    Read the article

  • How to get position of parent element - XSL

    - by joe
    What I wish I could do in xsl is the following, but unfortunatly parent/position() is not valid. XSL <xsl:template match="li"> <bullet> <xsl:apply-templates/> </bullet> <!-- todo: if this is the last bullet AND there are no more "p" tags, output footer --> <xsl:if test="count(ancestor::div/*) = parent/position()"> <footer/> </xsl:if> </xsl:template> XML <html> <div> <p>There is an x number of me</p> <p>There is an x number of me</p> <p>There is an x number of me</p> <ul> <li>list item</li> <li>list item</li> <li>list item</li> <li>list item</li> <li>list item</li> </ul> </div> </html> Anyone have any ideas how to figure out this problem from WITHIN my template match for li? Thanks!

    Read the article

  • Listview item color..

    - by vinoth kumar
    Hi all. My list view is a multiple selection list view. i have to show the selected list view items in one color(say green) and the other items in some other color(red). How to achieve this?

    Read the article

  • Custom Collection Initializers

    - by Jake
    Classes that implement IEnumerable and provide a public void Add(/* args */) function can be initialized like in the following example: List<int> numbers = new List<int>{ 1, 2, 3 }; which calls the Add(int) function 3x after initializing the List<int>. Is there a way to define this behavior explicitly for my own classes? For example, could I have the initializer call a function other than the appropriate Add() overload?

    Read the article

  • Working with Hibernate Queries

    - by jschoen
    I am new to hibernate queries, and trying to get a grasp on how everything works. I am using Hibernate 3 with Netbeans 6.5. I have a basic project set up and have been playing around with how to do everything. I started with essentially a search query. Where the user can enter values into one or more fields. The table would be Person with the columns first_name, middle_name, last_name for the sake of the example. The first way I found was to have a method that took firstName, middleName, and lastName as parameters: Session session = HibernateUtil.getSessionFactory().getCurrentSession(); Transaction tx = session.beginTransaction(); String query = "from Person where (first_name = :firstName or :firstName is null) "+ "and (middle_name = :middleName or :middleName is null) " "and (last_name = :lastname or :lastName is null)"; Query q = session.createQuery(query); q.setString("firstName", firstName); q.setString("middleName", middleName); q.setString("lastName", lastName); List<Person> results = (List<Person>) q.list(); This did not sit well with me, since it seemed like I should not have to write that much, and well, that I was doing it wrong. So I kept digging and found another way: Session session = HibernateUtil.getSessionFactory().getCurrentSession(); Transaction tx = session.beginTransaction(); Criteria crit = session.createCriteria(Person.class); if (firstName != null) { crit.add(Expression.ge("firstName", firstName); } if (middleName != null) { crit.add(Expression.ge("middleName", middleName); } if (lastName != null) { crit.add(Expression.ge("lastName", lastName); } List<Person> results = (List<Person>) crit.list(); So what I am trying to figure out is which way is the preferred way for this type of query? Criteria or Query? Why? I am guessing that Criteria is the preferred way and you should only use Query when you need to write it by hand for performance type reasons. Am I close?

    Read the article

  • Delphi Search Edit Component

    - by Reber
    Hi, I need a delphi component for Delphi 2007 win32 that have features like Google search text box. ** While User writing search key it should fill/refresh the list with values, and user can select one of them. **User can go up and down list and can select one of them. **List should contain codes and text pair, so user can select text and I can get code for database operations. (Google can highlight the search text in List but I think it is not possible with Delphi 2007, so it is not excepted.) I tried Dev Express TcxMRUEdit, however it doesn't meet my needs

    Read the article

  • How do I break down MySQL query results into categories, each with a specific number of rows?

    - by Mel
    Hello, Problem: I want to list n number of games from each genre (order not important) The following MySQL query resides inside a ColdFusion function. It is meant to list all games under a platform (for example, list all PS3 games; list all Xbox 360 games; etc...). The variable for PlatformID is passed through the URL. I have 9 genres, and I would like to list 10 games from each genre. SELECT games.GameID AS GameID, games.GameReleaseDate AS rDate, titles.TitleName AS tName, titles.TitleShortDescription AS sDesc, genres.GenreName AS gName, platforms.PlatformID, platforms.PlatformName AS pName, platforms.PlatformAbbreviation AS pAbbr FROM (((games join titles on((games.TitleID = titles.TitleID))) join genres on((genres.GenreID = games.GenreID))) join platforms on((platforms.PlatformID = games.PlatformID))) WHERE (games.PlatformID = '#ARGUMENTS.PlatformID#') ORDER BY GenreName ASC, GameReleaseDate DESC Once the query results come back I group them in ColdFusion as follows: <cfoutput query="ListGames" group="gName"> (first loop which lists genres) #ListGames.gName# <cfoutput> (nested loop which lists games) #ListGames.tName# </cfoutput> </cfoutput> The problem is that I only want 10 games from each genre to be listed. If I place a "limit" of 50 in the SQL, I will get ~ 50 games of the same genre (depending on how much games of that genre there are). The second issue is I don't want the overload of querying the database for all games when each person will only look at a few. What is the correct way to do this? Many thanks!

    Read the article

  • WPF/MVVM: Delegating a domain Model collection to a ViewModel

    - by msfanboy
    A domain model collection (normally a List or IEnumerable) is delegated to a ViewModel. Thats means my CustomerViewModel has a order collection of type List or IEnumerable. No change in the list is recognized by the bound control. But with ObservableCollection it is. This is a problem in the MVVM design pattern. How do you cope with it?

    Read the article

  • a loading screen for a c# wpf listbox

    - by evan
    I'm using a list box where there are on average about 500 thumbnails (items) that can be sorted and searched. Since I'm using default databinding and search descriptors (which I've heard are slow due to reflection) the list takes a noticeable pause of a few seconds loading, sorting, and searching (the list dynamically updates based on the contents of the search box so the first one or two letters typed are really slow). I don't think I can fully do away with reflection give the timeframe for the project, and speed isn't super essential, but I'd like some kind of graphical indication of the delay so it doesn't confuse the user. How could I do something like a website video loading screen where the listbox grays out and some kind of loading circle indicates it's processing until the list is ready? Or even just grayed out with the words "Loading..." for a few seconds could work. Any ideas? Thanks in advance for your help and suggestions!!!

    Read the article

  • Two PickerViews in save View issue?

    - by NextRev
    I'm trying to have 2 pickerviews in the same view. It works except for two things. If one pickerview has more rows than the other the app crashes when picking an item from the pickerview with more items. Also I created an NSLog for the pickerviews and the console shows that I'm picking two items at once when in fact i'm only dealing with one pickerview. I know it sounds a bit confusing but I'm including all the code. Thank you in advance. list and list2 are NSMutableArrays list has 4 items list2 has 5 items There error: * Terminating app due to uncaught exception 'NSRangeException', reason: '* -[NSCFArray objectAtIndex:]: index (4) beyond bounds (4)' -(NSInteger)numberOfComponentsInPickerView:(UIPickerView *)thePickerView{ if([thePickerView isEqual:pickerView1 ]){ return 1; } else if([thePickerView isEqual:pickerView2]){ return 1; } else{ return 0; } } -(NSInteger)pickerView:(UIPickerView *)thePickerView numberOfRowsInComponent:(NSInteger)component{ if([thePickerView isEqual:pickerView1 ]){ return [list count]; } else if([thePickerView isEqual:pickerView2]){ return [list2 count]; } else{ return 0; } } -(NSString *)pickerView:(UIPickerView *)thePickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component{ if([thePickerView isEqual:pickerView1 ]){ return [list objectAtIndex:row]; } else if([thePickerView isEqual:pickerView2]){ return [list2 objectAtIndex:row]; } else{ return 0; } } - (void)pickerView:(UIPickerView *)thePickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component { NSLog(@"Selected item %@. Index of selected item:%i", [list objectAtIndex:row], row); NSLog(@"Selected item %@. Index of selected item:%i", [list2 objectAtIndex:row], row); NSLog(@"Selected item %@. Index of selected item:%i", [list3 objectAtIndex:row], row); if([thePickerView isEqual:pickerView1 ]){ //Do Something } else if([thePickerView isEqual:pickerView2 ]){ //Do Something } else if([thePickerView isEqual:pickerView3 ]){ //Do Something } }

    Read the article

  • Of these 3 methods for reading linked lists from shared memory, why is the 3rd fastest?

    - by Joseph Garvin
    I have a 'server' program that updates many linked lists in shared memory in response to external events. I want client programs to notice an update on any of the lists as quickly as possible (lowest latency). The server marks a linked list's node's state_ as FILLED once its data is filled in and its next pointer has been set to a valid location. Until then, its state_ is NOT_FILLED_YET. I am using memory barriers to make sure that clients don't see the state_ as FILLED before the data within is actually ready (and it seems to work, I never see corrupt data). Also, state_ is volatile to be sure the compiler doesn't lift the client's checking of it out of loops. Keeping the server code exactly the same, I've come up with 3 different methods for the client to scan the linked lists for changes. The question is: Why is the 3rd method fastest? Method 1: Round robin over all the linked lists (called 'channels') continuously, looking to see if any nodes have changed to 'FILLED': void method_one() { std::vector<Data*> channel_cursors; for(ChannelList::iterator i = channel_list.begin(); i != channel_list.end(); ++i) { Data* current_item = static_cast<Data*>(i->get(segment)->tail_.get(segment)); channel_cursors.push_back(current_item); } while(true) { for(std::size_t i = 0; i < channel_list.size(); ++i) { Data* current_item = channel_cursors[i]; ACQUIRE_MEMORY_BARRIER; if(current_item->state_ == NOT_FILLED_YET) { continue; } log_latency(current_item->tv_sec_, current_item->tv_usec_); channel_cursors[i] = static_cast<Data*>(current_item->next_.get(segment)); } } } Method 1 gave very low latency when then number of channels was small. But when the number of channels grew (250K+) it became very slow because of looping over all the channels. So I tried... Method 2: Give each linked list an ID. Keep a separate 'update list' to the side. Every time one of the linked lists is updated, push its ID on to the update list. Now we just need to monitor the single update list, and check the IDs we get from it. void method_two() { std::vector<Data*> channel_cursors; for(ChannelList::iterator i = channel_list.begin(); i != channel_list.end(); ++i) { Data* current_item = static_cast<Data*>(i->get(segment)->tail_.get(segment)); channel_cursors.push_back(current_item); } UpdateID* update_cursor = static_cast<UpdateID*>(update_channel.tail_.get(segment)); while(true) { if(update_cursor->state_ == NOT_FILLED_YET) { continue; } ::uint32_t update_id = update_cursor->list_id_; Data* current_item = channel_cursors[update_id]; if(current_item->state_ == NOT_FILLED_YET) { std::cerr << "This should never print." << std::endl; // it doesn't continue; } log_latency(current_item->tv_sec_, current_item->tv_usec_); channel_cursors[update_id] = static_cast<Data*>(current_item->next_.get(segment)); update_cursor = static_cast<UpdateID*>(update_cursor->next_.get(segment)); } } Method 2 gave TERRIBLE latency. Whereas Method 1 might give under 10us latency, Method 2 would inexplicably often given 8ms latency! Using gettimeofday it appears that the change in update_cursor-state_ was very slow to propogate from the server's view to the client's (I'm on a multicore box, so I assume the delay is due to cache). So I tried a hybrid approach... Method 3: Keep the update list. But loop over all the channels continuously, and within each iteration check if the update list has updated. If it has, go with the number pushed onto it. If it hasn't, check the channel we've currently iterated to. void method_three() { std::vector<Data*> channel_cursors; for(ChannelList::iterator i = channel_list.begin(); i != channel_list.end(); ++i) { Data* current_item = static_cast<Data*>(i->get(segment)->tail_.get(segment)); channel_cursors.push_back(current_item); } UpdateID* update_cursor = static_cast<UpdateID*>(update_channel.tail_.get(segment)); while(true) { for(std::size_t i = 0; i < channel_list.size(); ++i) { std::size_t idx = i; ACQUIRE_MEMORY_BARRIER; if(update_cursor->state_ != NOT_FILLED_YET) { //std::cerr << "Found via update" << std::endl; i--; idx = update_cursor->list_id_; update_cursor = static_cast<UpdateID*>(update_cursor->next_.get(segment)); } Data* current_item = channel_cursors[idx]; ACQUIRE_MEMORY_BARRIER; if(current_item->state_ == NOT_FILLED_YET) { continue; } found_an_update = true; log_latency(current_item->tv_sec_, current_item->tv_usec_); channel_cursors[idx] = static_cast<Data*>(current_item->next_.get(segment)); } } } The latency of this method was as good as Method 1, but scaled to large numbers of channels. The problem is, I have no clue why. Just to throw a wrench in things: if I uncomment the 'found via update' part, it prints between EVERY LATENCY LOG MESSAGE. Which means things are only ever found on the update list! So I don't understand how this method can be faster than method 2. The full, compilable code (requires GCC and boost-1.41) that generates random strings as test data is at: http://pastebin.com/e3HuL0nr

    Read the article

  • writing 'remove' function in prolog

    - by Adrian
    I am desperately trying to create a remove function, that will simply remove all items that equal to X from a list. After many changes, this is my code so far: remove([], X, L1). /* when the source list is empty, stop*/ remove([X|T], X, L1) :- remove(T, X, L1). /* when first element in the list equals X, don't append it to L1 */ remove([H|T], X, L1) :- remove(T, X, [H|L1]). /*when first element in the list doesn't equal X, append it to L1 */ when running on remove([1,2,3,4,5], 3, R). it returns two trues and nothing else. Anyone has any idea what I'm doing wrong?

    Read the article

  • jQueryUI Sortable won't accept connected Draggable on a nested UL

    - by Eric
    I've posted an example here: http://jsfiddle.net/ericclemmons/LEHLX/2/ Really, what it comes down to is the classic "assigning users to groups" issue. I have a list of users and a list of groups, but I'd like to be able to have nesting of the groups: user "Eric" would be in "Users", "Web", and "Administrators". The problem is that I cannot drag a user to an empty <ul> in the list.

    Read the article

< Previous Page | 267 268 269 270 271 272 273 274 275 276 277 278  | Next Page >