Chrome timeline tab explanation - google-chrome

Documentation here says:
Note that the first event, Send Request (Calendar.html) is shown with a bar that consists
of three shades of blue. The darkest one marks the time that the event itself took, the
next one corresponds to the CPU time that this event along with all the nested events
took (here, it includes Receive Response, Receive Data and so on), and the palest bar
stands for the wall time between the start of the first event and the end of the last event.
What exactly is meant by the start of the first event and the end of the last event?

Just expand the "Send Request (Calendar.html)" event, and you will understand what that means :-) The Send Request event will have associated asynchronous sub-events, the last of which is usually Finish Loading. So, the total time between you sent the request ("send request") and received all its data ("finish loading"), which is the "wall clock" time, is shown by the most pale bar.
On the opposite, the second-pale bar just shows the total time of an events and all its sub-events (imagine stacking the event's darkest bar and all its sub-events' darkest bars on top of each other).

Related

How can I subscribe only once to the app-db in re-frame?

I need to subscribe to the app-db for a value that I want to check only once when the parent component is rendered. For example, when I click a button "Click me", and there's a certain on-click event being processed, whose status I have saved on the app-db with the list of processes that are being done, I just want to check against that value once, and display two different components based on that value.
If the value is empty, I want to proceed with the normal event. If not, I'd like to show something else to the user, a popup for example.
Now the thing is that, because it's actively listening to the app-db, and the value is changing almost every second (or in a matter of milliseconds), the said popup appears, disappears, reappears, and disappears again super fast with each change to the app-db, which isn't helpful at all.
I would like to just subscribe once, get the value, and do the checks based on the value when the parent was first rendered. And then I'll do something to make that go away.
If I click the "Click me" button once again, that's only when I'd like for it to re-render.
I haven't quite been able to achieve this. I tried numerous methods such as introducing a delay during the dispatch of popup as well as after introducing processing states to the app-db in the first place hoping that since the data will already be in a steady state, it might not change as much, but now that I realize it's actively listening to it, it's expected that the values would change.
I did try using the subscription without the deref, but that only introduced an error to my frontend, so I'm not sure which way to go now.
My error with the component diappearing/reappearing turned out to be triggered by something else. A conflict/mismatch with popup-ids and a dispatch to clear one popup leading to destroying all of them.
But to answer the question, it works when you introduce a (fn []) block after the let binding where you actually do the subscription, and calling the components from inside the fn.

Can HTTP GET be used if there are small side-effects?

As far as I understand, GET has to be idempotent - it cannot change anything in the system and repeating it should always return the same unless something else changed the state of the application.
Problem is, on my website, there should be a lot of little changes based on whether some content has been already seen before by the user. I mean, like notifications, new message alerts, content sorting based on whether user saw it or not, how many users saw the content counters... For example when user clicks on notification, the notification should disappear from his notification panel and never be seen there again, so it changes something - state of the notification, but I can press F5 as many times as I want and it always returns the same page with same info, same buttons etc.
Can I ignore this kind of side-effect as too small and I can use GET or do I have to make most links and buttons on the website use POST like I do with links and buttons which lead to more "serious" changes? I do that by making forms around each of them with those links as form actions and original buttons as submit buttons of the form which seems a little messy to me and I don't want it almost everywhere (or is there a better way?).
This can be tackled from several points of view, I'll illuminate it from this angle:
The end result here is always the same, hence the request is idempotent.
The user visits the URL, the end result is that the notifications are cleared. They can visit the page again and again, the end result is that the notifications are cleared. They're not going to get an error message because the notifications have been previously cleared (that would not be idempotent). Yes, they will see different content each time they visit the page, but nothing says that the page content must be identical each time the resource is requested (that would put half the web in a bind).
Contrast that with a POST request to /questions (which creates a new question, for example): each time you repeat that POST request, a completely new resource is being created. You POST once, and /questions/12345 is being created. You repeat the same request, /questions/12346 is being created. That is not idempotent.
No, you do not need to make all those requests into POST requests.

Pagination with LongListSelector in windows phone 8

In my windows phone 8 application, I've used Long List Selector. When the user clicks on the show button in Main Page, I'm getting the result from the server and setting those results to Long List Selector, which is in Results Page. Up to this, everything is fine.
pageNumber = 1;
noOfResultsPerPage = 15;
Now, I want to add next 15 records to the Long List Selector when the user reaches to the last item. How should I know whether user scrolled to the last item in the list or not?
So that we can send the request to the server and get the records from the server and add to the list.
Thanks
If i'm right you want to implement incremental loading in the longlistselector, then you can use the itemrealized event of longlistseletor, there is a very nice sample which i would suggest you to have a look
You need to subscribe to ItemRealized event (this event is raised each time an item is rendered on the screen) So when the ItemRealized is raised you have to check the index of the iteam realized and then execute your method

Tab control not resetting to first page when filling last field

I'm fairly new to microsoft access and i'm currently designing a database for my company but I'm having some trouble trying to get the tab control to work properly. The problem is whenever it navigates through all the pages, when it reaches the last field to fill in, it goes to the next record but stays in the last page, it doesn't 'reset' back to the first page so it follows a logical order.
HansUp offered a good suggestion in his comment, but you may not want to unconditionally SetFocus the first tab in OnCurrent because that could cause the tab focus to switch as users navigate from one record to another using the record selector buttons. There could be cases where the users might find that annoying.
Instead, you might want to use the LostFocus event of the final field to manipulate a flag that would allow OnCurrent to SetFocus the first tab when the user moves to a new record by "falling off the end" of the previous record, but leave the tab focus alone if the user is just stepping through the records.

UiApp cache vertical panel

Developing small app to record a set of 6 readings for monitoring purposes in 31 rooms. App will have two main views, one view to show list of buttons for each room where readings will be taken, a second view where the values will be entered for a particular room and then posted to a spreadsheet.
The process in mind here is click on button for a particular room, enter the data, return to button view to choose another room to enter the data for that room and then back to button view screen.
Since the button view will seldom change do I have any options for caching this view so that I do not have to run a function to rebuild it each time. I have this function
function createTGSRoomListButtons(sh, aData){}
That takes the list of rooms and builds a panel of buttons for selecting the different rooms.
The question that I have can the above function be run once to cobble together the UI, cached and the later simply be 'recalled'?
TO that some end the view where the data will be entered can this be partially cached so that with each rendering a reference to a specific room can be made.
New to Google Apps Script so not really sure how to properly determine my answer.
You can have multiple panels in an UI and play with visibility to show one or another... no need to cache any content since they remain unchanged in the process.
If I understood your use case well, the panel with specific room info would be modified according to spreadsheet data so in this case you won't need to cache values since they would be "reconstructed" each time. The trick to show/hide panel has been shown in this post with clientHandlersand multiple panels in a unique vertical panel to ensure that the visible panel is always at the right place.
A very simple way would be build the UI for the first time and then hide/unhide the buttons' panel each time using the setVisible() method of the panel