|
right from the start I got confused by all the options that where offered (4 radio buttons, 1 check box) under the edit box in Q&A as well as in T&T. I never understood what they were meant to do, and why they all were required.
Today I investigated a bit and I don't like it at all. There are two problems:
1. the functionality is wrong IMO.
2. the wording is short and unclear.
OBSERVATIONS ON RADIO BUTTONS
I used two samples, shown here (warning: I did not HTML-escape the samples while composing this message so one needs to look at the message source to see what is really there, i.e. a real BOLD tag, and a plain for with less-than test):
for (i=0; i<10; i++) log(i);
string rating="";
m=rRatng.Match(article);
if (m.Success) {
idx=m.Value.LastIndexOf(":")+2;
rating=m.Value.Substring(idx);
if (rating.StartsWith("0")) rating="";
}
Lorem Ipsum is simply dummy text of the printing and typesetting industry.
Lorem Ipsum has been the industry's standard dummy text ever since the 1500s,
when an unknown printer took a galley of type and scrambled it to make a type specimen book.
// this is a bold statement
// does it HTML-encode?
for (i=0; i<10; i++) log(i);
It has survived not only five centuries, but also the leap into electronic typesetting,
remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset
sheets containing Lorem Ipsum passages, and more recently with desktop publishing software
like Aldus PageMaker including versions of Lorem Ipsum.
Both samples have all lines starting with a TAB; they both include an HTML tag and a less-than operator.
The four radiobuttons are numbered 1-4 left-to-right.
For the C# code sample the results were:
adds PRE tags with lang moves left HTML encodes preserves HTML
1 yes yes yes yes no
2 no no no yes no
3 no no no no yes
4 yes yes yes yes no
For the text sample the results were:
adds PRE tags with lang moves left HTML encodes preserves HTML
1 no no no yes no
2 no no no yes no
3 no no no no yes
4 no no no yes no
CONCLUSION ON FUNCTIONALITY:
it is all wrong IMO, for several reasons:
- 1 and 4 do exactly the same; I cannot force the adding of PRE tags (which 1 is supposed to do).
- the HTML encoding (handling of < > &) should be independent of the PRE choices. As is, I can't get it to
paste code that has HTML (say in comments), it will HTML encode or not give PRE tags.
- when HTML tags are to be preserved, the HTML encoding still needs to be applied, hence more intelligence seems required (which I was told is available in the forum message editor!)
- when PRE tags are present, none should be added (I tried paste code, cut the result which now has PRE tags, paste that again, and the outcome got its PRE tags doubled).
THE CHECKBOX
I haven't looked into the checkbox yet; I'm not happy it exists at all. One reason is: after all the attempts to make intelligent choices about PRE, HTML encoding, and preserving HTML tags, it looks like a main switch that turns it all off. Do we really want that? I have a feeling it relates to the way a forum message, its signature, and its "modified on..." remark are all stored in one field.
SUGGESTION
- list all relevant use cases
- then come up with the logical user interface that deals with those use cases
WORDING
as long as functionality isn't clear and settled, it is too early to discuss wording.
Once we agree on what it does, I could easily come up with wording that is both clear and concise (although I'm sure I will suggest a tooltip approach to allow for an alternative less-than-concise-but-absolutely-clear wording.
Luc Pattyn [My Articles] Nil Volentibus Arduum
The quality and detail of your question reflects on the effectiveness of the help you are likely to get. Please use <PRE> tags for code snippets, they improve readability. CP Vanity has been updated to V2.3
|
|
|
|
|
The broken functionality has been fixed, the wording clarified, and your code sniffer is now in the forums.
My apologies for the delay.
cheers,
Chris Maunder
The Code Project | Co-founder
Microsoft C++ MVP
|
|
|
|
|
Chris Maunder wrote: The broken functionality has been fixed
Really? There is at least one show stopping bug right now. Took me two tries and less than a minute to get it. Why do you release untested stuff?
The functionality offered is still a bit of a mystery, some features ought to be orthogonal: when I paste something, I should be able to decide always-PRE/auto-PRE/never-PRE, and HTML escape on/off. That looks like two independent three/two-way decisions, not a single four-way decision. If you only offer all or some combinations, please list all aspects of each choice; if you offer several groups of choices, please use GroupBoxes or something equivalent to make that obvious.
|
|
|
|
|
Apart from having a separation between "wrap in PRE" and "encode" (which I agree would be nice and I will try and find more spare time to add) I can't replicate exactly what is broken based on the UI provided.
If you're saying the system / UI itself is broken (and untested) because I don't offer separate options that's a different story.
In any case, thanks as always for the feedback
[Apologies for the double notification: I had two windows open in Reply mode while testing and hit the wrong "Submit" button ]
cheers,
Chris Maunder
The Code Project | Co-founder
Microsoft C++ MVP
|
|
|
|
|
#1# recent additions/changes (11-JAN-2011) got flagged with #1#.
#2# recent additions/changes (12-JAN-2011) got flagged with #2# and apply to "beta 2".
#3# recent additions/changes (also 12-JAN-2011) got flagged with #3# and also apply to "beta 2".
#4# recent additions/changes (13-JAN-2011) got flagged with #4# and apply to "beta 3".
#5# recent additions/changes (16-JAN-2011) got flagged with #5# and apply to version cb4/sb4.
the alpha looks promising, startswith functionality looks great.
Comments on the search engine
101. seems not to see today's forum messages
#1# OK, it is seeing the latest additions to regular forums, albeit with some (unknown) delay, might be a couple of minutes. So adding messages for test purposes still does not work well, one never knows whether they are included yet or not, and hence should or shouldn't pass the search filters.
102. seems to use OR instead of AND when two words are searched for
(more hits for fourth estate than for fourth )
#1# this is wrong in that it deviates from what popular engines do (Google, Bing, the current CP search engine,
i.e. everything CP members use continuously), I have no doubt the community will have you change this!
#3# Has been fixed on 12-JAN-2011.
103. seems not to accept operators such as AND
#1# AND operator seems to work now, thanks
12+13 makes it hard to test the search engine! please fix at least one of them ASAP so I can
perform tests that search a lot but return only very few results.
104. I did not investigate relevance yet
#1# please show the relevance score (either permanently, or at least in the test/evaluation phase) As a tester, it would be really useful; as a user, I would use the information too. And when you show it, make sure it stands out more than the current "rating", which is the voting score of articles/messages, and, while useful, it rather confuses me (I would bold relevance, not bold rating).
105. I did not investigate performance yet.
#1# I will use the tool regularly to get a feeling about performance.
106. suggestion: show a version number, so I can refer to it when reporting back to you.
#2# is OK now, I see "beta 2"
#3# not quite OK yet, as both server and client have a version, only client version gets shown so far.
107. #2# I'm experimenting with this message[^]. It has a single digit 2 in it.
OK: I can find the message looking for: "logging implemented"
strange: I also find it looking for: "logging implemented" AND 2 (as if numbers do startswith automatically?)
bad: I also find it looking for: "logging implemented" AND 29 (there is no 29 at all!)
bad: I also find it looking for: "logging implemented" AND "29" (there is no 29 at all!)
Looks like a bug. My wild guess: something is removing unwanted characters (digits and more) from the filter text, resulting in an empty string, which is always present. IMO we do need a way (an intuitive one at best) to search for pretty normal, as well as, pretty strange special characters.
#3# OK, I learned numbers are not indexed; that is fine, it needs to be mentioned in the documentation though. Digits inside words are treated like letters, so "log4net" does not pose any problems.
108. #4# bad: I can't find it looking for: "logging implemented" AND programs (there is ->Programs-> in the body text)
#2# At best I'd like to search for "->Programs->" and find the message!
I still have to experiment with searches containing special characters.
109. #4# BUG I'm getting one hit for "backgroundwo" (Any date), can't explain why. Note: the snippet shown happens to end on backgroundwo. http://www.codeproject.com/Script/Forums/view.aspx?msg=2675648[^]
110. #4# BUG Periods are treated (somewhat?) as letters, so object.field is one word and gives no hit when searching for object. I created a number of test messages in C# forum, they all contain "LPXYZ" and then some specials I'm trying to search for.
111. #4# BUG I have a message that contains object.method(parameter) which I find with object.method* (OK), not with object.method (so the "word" is longer) and not with object.method(* (so what is the word??)
Comments on processing
201. sortedby seems not to work reliably; performing the same search
with a different sort spec often gives the same result list.
#1# Problem not seen today.
#3# Seems OK
202. #2# "filter by" does not work; when "any date" gives a number of results, any other
filterby choice returns nothing. Tried "logging implemented" again. Please fix.
#3# Seems OK now (provided I allow for a sufficient time window!)
Comments on GUI
301. #1# I'm sure already I want one of these two:
- either change the default (or topmost) item to be "Date Created DESC" and "Last Month"
- or, better yet (less subjective), remember the last setting of each combobox (sortedby, filteredby, ...)
#3# Thanks, createddesc and 1month are comfortable.
#4# It is great the way it is now, for my testing (and my use), however I think the community will prefer you remember the last setting for each of the comboboxes.
302. #1# I often overshoot the search bar, end up in the main menu bar, and have a menu roll down,
covering the search box I'm after. Quite annoying. In fact I have always disliked the hover menus,
but now I have good reasons to want click menus instead of hover menus. In my books, hovering should only cause minimal change, say a bolding or slight color change, and not open something.
303. #1# I would very much prefer a date format with a non-numeric month, as the American way is confusing to large parts of the world; the way the forums do it would be just fine.
304. #1#Of lesser importance right now, but mentioning it already anyway: I keep prefering a real grid-like display, with actual columns, and click-to-sort-me headers.
305. #2# In the result list, I saw some author names with HTML-escaped HTML tags. You probably want a text-only member name there.
#4# Example: search for "logging implemented in your service" (with quotes; last year)
306. I'd like a wider textbox for the "for" parameter. Twice as wide would be good.
#4# Solved in beta 3.
307. #2# The "for" textbox doesn't auto-scroll when dragging the mouse; say it contains more text than can be visible at a time, and is unscrolled (hence showing the leftmost content), I now click leftmost and drag to the right, attempting to select all (which I could do with CTRL/A as well), it does not scroll at all; regular WinForms textboxes do that, apparently web textboxes (such as Google's search box) don't. That is a pain. Probably nothing reasonable you can do about that.
#4# Solved by the larger search box.
308. #4# I would suggest a help ("?") button on the search page, leading to a full-page description of what it does, how it works, what special operators are available, etc.
309. #4# I would make the result hyperlinks of the new-tab variety, so multiple hits can be looked at without querying the database again.
310. #4# I would swap the order of "sorted by" and "filtered by" on the query entry line as that seems more logical (the query summary line is fine already). Also there is some casing inconsistency.
311. #4# Rather than a simple "Go" button, I'd make it an icon, with Bob holding a magnifying glass, maybe a Sherlock Holmes cap, and a CP orange background.
312. #4# Rather than "All documents" I'd call it "All of Code Project" (even when that is not strictly correct; the documentation could clarify), as "documents" isn't an adequate term for most of the database content IMO.
313. #4# I think there better be a way to tell the user something is wrong when there is.
Example: you're not supporting "endswith" functionality (that is perfectly OK, just an example!) so searching for *urth estate is bound to fail. I suggest you don't even try the search, instead give a specific error message. (At the moment such failing search takes 10 seconds to complete, my FF progress bar fills 80% right away, then sits idle).
314. #4# I think I would not show any rating information for a hit when there aren't any votes yet, same as you do in forum messages (articles themselves always showing a rating is different, and OK IMO, the list of hits doesn't need distractors though).
315. #4# BUG It broke down completely: "All documents" has disappeared. This is bad. Messages that were found earlier are not found any longer (e.g. no LPXYZ). I still do find my "PRE tags" in Tips&Ticks.
316. #5# VERY BAD UI The default state of a search filter should be either "no filter" or wathever it was before. Having checkboxes getting cleared all the time is unworkable. And the query status line needs to show the full query, including the checkbox settings when the search was ran.
|
|
|
|
|
I was mistaken. AND is the default for google. I will change the default
|
|
|
|
|
Any updates to this, Luc?
cheers,
Chris Maunder
The Code Project | Co-founder
Microsoft C++ MVP
|
|
|
|
|
I stopped updating my list as the development seemed to have come to a stand still too soon, and I wasn't getting any signals. The list was getting too long to retest everything all the time without feedback.
remaining known problems in my descending priority: 301, 110, 309, 313, search page GUI inconsistencies, overall site search confusion, ...
please fix 301 ASAP, I want "order by creation date desc" in over 90% of my searches, so I want it either sticky or as (my) default.
I have a hunch 110 is bigger than what I described, your "letter and word definitions" are mysterious, maybe wrong (maybe it can't even be constant, i.e. it may have to depend on language or context), anyway it should be documented.
missing features:
- I sometimes need a "search literally, no matter what, even with symbols" so I could locate "@#$%", not just "abcd", if that is what I am looking for.
- search CP member list
- search downloads could be useful at times.
- The help balloon is insufficient.
conclusion: much better than the old search, it finds more; I am not satisfied yet; it is still rather unreliable, i.e. it does not find all there is that matches the user's interest. The GUI should be improved. The last mile would add the most value.
Luc Pattyn [Forum Guidelines] [My Articles] Nil Volentibus Arduum
Please use <PRE> tags for code snippets, they preserve indentation, improve readability, and make me actually look at the code.
|
|
|
|
|
Our saved searches should help with 301, and Matthew has been working on 110.
"Search literally" has been the bugbear of searches. We will continue.
cheers,
Chris Maunder
The Code Project | Co-founder
Microsoft C++ MVP
|
|
|
|
|
Thanks for the update.
I tried saved searches yesterday (read about it in newsletter); it didn't work for me, I never seemed able to save more than one. It does work today. I think I would prefer the saved search widgets to be on a single horizontal row, above the search box.
However, 301 isn't urgent any longer, I installed a little browser bookmark button that links to the search page with ?sort=createddesc in the URL and that works just fine (as long as I don't reach the page in another way).
110 is very relevant when searching for code examples on a class. The way it is now, a statement such as Button.Font=new Font(...) is not matched by Button which is, er, not good.
I understand literal search is either expensive or hard; on rare occasions it is the only way to retrieve something, say an example of the ?? or ?: operators in C#.
Luc Pattyn [Forum Guidelines] [My Articles] Nil Volentibus Arduum
Please use <PRE> tags for code snippets, they preserve indentation, improve readability, and make me actually look at the code.
|
|
|
|
|
Keeping track of some CP bugs I encountered. All entries have a unique ID; they are in no particular order. Bugs that have been solved will be removed.
My current top priority is: F112
#1# new text (11-JAN-2011) has been flagged #1#
#2# new text (20-JAN-2011) has been flagged #2#
categories:
easy: should be simple to fix
medium: needs some work
hard: probably needs major effort
swa: a simple work-around would improve the situation right away
status:
SB: reported in Suggestions&Bugs forum
Articles
ID Cat Status Description
A101 easy SB 16-DEC-2010 Browse Code gives no indication which file is currently being watched
#1# CP task #1917
A102 medium SB 16-DEC-2010 Browse Code often cuts the viewed file short (doesn't occur on simple files)
solved 17-JAN-2011
A103 easy SB 16-DEC-2010 Browse Code shows gibberish for PNG files
#1# Seems fixed
Tips/Tricks
ID Cat Status Description
T101 easy SB 01-JAN-2011 There is an attempt to prevent multiple alternatives by the same author; it is a bad idea to forbid
this as there could easily be two or more ways to do better than the original. And the attempt
to prevent extra alternatives is flawed. Proof is
here[^].
T102 easy SB 01-JAN-2011 Alternatives aren't listed on the home page when the original is less than 3 hours old.
That is unfair as their value does not depend on the age of the original.
My two alternatives never showed on the home page, while another one added later did show.
I have a screenshot showing John's original and the third-party alternative, its all about
this.[^]
Forum messages
ID Cat Status Description
F101 easy SB 25-APR-2010 An HTML tag at the end of a line eats the next NewLine (reported many times)
#1# CP task #1918
#2# fixed ca 17-JAN-2011
F102 easy SB 17-JUL-2010 Modifying a message several times, at larger than 5 minute intervals, makes the
"Modified on..." message intrude in my (pretty full) sig. [See also F111]
F103 easy SB 19-JUN-2010 First right-arrow on a freshly loaded forum page goes wrong
#1# CP task #755
F104 easy SB 03-JUN-2010 Exiting "View thread" mode should bring us back to the page where the trhead was, not to page 1.
F105 easy SB 27-MAY-2010 When applying a style (bold, underline, ...) through a widget, if the selection ends on a space,
that space should not be considered selected.
F106 medium SB Replies to the enquirer should default to type "Answer" no matter at what nesting level they are.
#1# The replier can change it (e.g. to question) when appropriate, however "answer" is the
#1# most likely content (Note: it is replies to the enquirer, not to just anybody)
F107 easy SB The "Use HTML in this post" checkbox should apply to the message and not to the sig
(04-FEB-2010)
#1# Even when message and sig are stored together, this should be doable, as the edit page
#1# knows how to tell them apart again.
F108 easy SB Smileys should not include spaces, i.e. a simple ":(" should be sufficient to get the sad smiley.
#1# IMO this is most relevant for the sad smiley.
*** sad smiley lost its space (13-JAN-2011)
F109 easy SB Tags that have been left open accidentally should automatically be closed at the end of a message
(before the sig), so the sig never becomes part of say a PRE block
F110 easy new in forum messages like this one, hyperlinks don't work inside PRE blocks.
#1# CP task #1919
F111 medium SB The "Modified on..." message uses Toronto time, which is confusing as everything else
is using local time. IMO the message table should have a "Last modified on" field and
use that, rather than storing a "Modified on..." sentence inside the message.
F112 medium SB 11-JAN-2011 Bold is hardly noticeable inside a PRE block. Sometimes a question shows a nice snippet
#1# and the message text claims to have a problem in the bold line, which I can hardly discern.
Not sure what a good solution would be (automatically also underline? blink? ...)
F113 easy SB 11-JAN-2011 A thread starting question (or even any message in a thread), once it has gotten one or
#1# more replies, should not offer a "remove" widget at all, or its function should be
altered so only " [removed]" gets added to the subject line, leaving the body intact,
rather than mutilate the entire thread. The non-leaf starting question could instead
offer a "thread is done" widget which appends " [done]" to the subject line, and no more.
#2# partially dealt with
Varia
ID Cat Status Description
V101 hard SB Colorizer sometimes gets confused by quotes, double quotes, empty strings
#1# CP task #1895
V102 medium SB One cannot undo a vote (one can correct a vote, say replace 5 by 3, but that's about it;
especially bad on a good/bad vote.)
#1# suggestion: when already voted, don't show voting tools, just show the existing vote and
#1# an "unvote/revote" widget which cancels the vote and brings back the voting tools.
V103 hard SB Search functionality is insufficient (#1# I know this is WIP)
more here[^]
V104 hard SB 05-OCT-2010 There are discrepancies between rep numbers and rep graph (typically graph is a few points short)
The difference vanishes on a recalculation, then shows up pretty soon, without changing much.
#1# Not quite fixed yet, I now have a 200 Author discrepancy.
Reputation (not necessarily bugs)
ID Cat Status Description
R101 easy SB I still think "Post Comment" should not yield Participant points, Debator or Organizer yes,
it just does not fit amongst the other participation actions.
#1# irreconcilable differences
R102 easy SB 17-OCT-2010 Give extra (participant) points for S&B posts (always? those added to TODO?)
#1# If a new message type is used, make it the default there!
#1# I would settle for a bonus factor (all S&B messages get an extra factor of say 5), not the votes!
R103 easy SB 23-AUG-2010 Give extra (participant) points for approving an article
R104 easy SB FAQ does not explain which actions get points multiplied by some color weight factor.
#1# Fixed, FAQ says "Points are weighted by voting member's level."
#1# It might have been clearer by adding a "* VW" in the numeric columns (VW=voter weight)
#1# Well, not OK, neither of those specify which voter level matters.
And finally some suggestions (i.e. not bugs at all)
ID Cat Status Description
S101 medium SB Improve site documentation (01-OCT-2010: what is a group?)
#1# CP task #941
S102 easy SB 21-SEP-2010 Show server name also at the top of every page (only to gold+; to get better bug reports)
#1# Bottom only makes me scroll a lot of pages!
S103 medium SB provide CP web service
S104 medium SB add code sniffing to message editor (that is what I provided it for!)
#1# CP task #1808 is merging both editors
S105 easy SB 19-AUG-2010 provide widget for downloading a single file, and an entire zip, on the Browse Code tab
S106 medium SB more storage space for sig (say 1K char)
S107 medium SB accept IMG tags everywhere for CP-resident images, so platinums can use "My Uploads"
to show some illustration in forum message or sig.
#1# if you can't trust platinums, whom can you trust?
S108 hard SB 28-JUN-2010 I don't like my tip/tricks being edited without getting a message from the editor explaining
what has changed and why. And I rather get such message and do the edits myself.
#1# CP task #1921 will send e-mail
S109 medium new Can't we avoid most layout problem reports by renaming dependent files on an update,
hence forcing them being downloaded. I know that makes it a bit trickier for your source control,
however that must be solvable in a transparent way (e.g. copying their history)
S110 medium SB 24-MAR-2010 Article Wizard suggestions
see here[^]
#1# CP task #1103
S111 medium SB Actions that are only available for members with sufficient rep (e.g. edit tip) should be
visible but disabled for members not having the privilege, but with a tooltip explaining
what the feature would do and what would be required to get it enabled.
#1# A specific idea: add a help mode to the site, toggled on/off by the click of a button.
#1# Off = the page does what it does now; on would give tooltips for most buttons/widgets/etc
#1# with comprehensive text (both a short telex style, and full sentences giving all details)
PS: If and when comments were posted in response, I would read, process and probably delete them.
|
|
|
|
|
Jan 10, 2011:
A101 - added (#1917)
A102 - can you provide a repeatible example? Note: if the coloriser crashes then the file is shown without colorization. The bug is elsewhere.
A103 - PNG files should not be offered for viewing. Fixed
T101 - this is by design.
T102 - There is no 3hr limit. Alternatives are listed as soon as they are approved
F101 - Updated Task (now #1918)
F102 - See F111
F103 - task #755
F104 - Not always possible. I'll review, though
F105 - I'm fairly sure this is browser dependant
F106 - I disagree. A post that asks for clarification is not an answer.
F107 - Very tricky. We don't store the sig independantly so doing this would require serious replumbing.
F108 - Some smileys can be confused with technical terms. :( probably won't be, so I'll remove it for this this one.
F109 - This related to F107 in that we do not store sigs separately. We store the raw HTML and apply HTML -> XHTML conversion to the content on display, not on storage. This allows us to update our HTML correctors on the fly, but means that HTML correction will apply to the entire message.
F110 - Task #1919
F111 - This is because we hardcode the time into the message instead of adding a placeholder which would then need to be replaced on the fly. I'll add a task for this to display the modified time outside of the message. (#1920)
V101 - Task #1895
V102 - Suggest a UI.
V103 - New search in beta.
V104 - Fixed. The issue was we introduced an "active" flag on rep events and forgot to take that into account in one of the stored procs.
R101 - Discussed, and I disagree
R102 - Great idea. Not sure how to neatly implement this. Possibly a new message type?
R103 - Task #1915
R104 - Where this occurs the FAQ states "Points are weighted by voting member's level."
S101 - Task #941
S102 - Showing at the bottom isn't sufficient?
S103 - In progress
S104 - It's already in place in the general editor. Task 1808 will merge with the forum specific editor
S105 - part of the (much) larger project of getting download counts history from our IIS logs.
S106 - I think the sig size is an adequate compromise
S107 - The never ending debate I have with myself.
S108 - Task added (#1921) to alert the poster an edit was made. However, sending a message and hoping the poster will update their tip will in general result in few updates.
S109 - files already have a querystring "dt=<version>" to combat this.
S110 - Task #1103
S111 - I';ve decided against doing this in order to not clutter up the interface. Happy to be convinced otherwise though - even for a subset of tasks.
cheers,
Chris Maunder
The Code Project | Co-founder
Microsoft C++ MVP
|
|
|
|
|
I have processed your reply, and added your info to the original, as well as some clarifications you asked or triggered.
Luc Pattyn [Forum Guidelines] [My Articles] Nil Volentibus Arduum
Please use <PRE> tags for code snippets, they preserve indentation, improve readability, and make me actually look at the code.
|
|
|
|
|
This is the thread that hosts the discussion about my proposal for a CP Web Service.
A proposal document is available here[^]. Its current version is 1.0; it will be replaced by a future version if and when it becomes available.
|
|
|
|
|
My initial comments, in no particular order, and based on myown personal goals for the API, are:
1. I want the API to start out focussing on an individual developer: you. The API (initially) is not something to allow members to trawl through thousands, or millions, of member records. It should, instead, provide information relevant to you, and to your profile and your experience on CodeProject.com.
2. I will be leveraging our Object References system which relies on an ObjectType ID / Object ID pair. Eg a member is ObjectTypeID = 1, so member #1 is identified uniquely across all objects using (1,1).
3. IsMVP should in fact be "MemberTypes" since a member could be Mentor, MVP, SubEditor etc.
4. You've made no mention of ratings, yet this is one of the things I see being a focus of many CP scrapers. I will be adding something along the lines of GetVotes(int ObjectTypeID, int ObjectID, DateTime startDate) . This allows you to get all votes for all your items, filtered by ObjectType (eg articles, messages etc), a single object, or all votes past a given date. Vote info will be date, score and weight.
5. Do you really want GetXByY methods, or GetX(sortMethod) methods? My preference, in order to keep the API small and extendable, is the latter.
6. In your Article structure you have a list of member IDs. I would prefer to return usable objects (say, name, ID, profile URL) to save an expected followup lookup.
7. Protocol. You mention using Windows WebServices. I was thinking of starting with JSON data initially with XML to follow immediately afterwards.
cheers,
Chris Maunder
The Code Project | Co-founder
Microsoft C++ MVP
|
|
|
|
|
Thanks Chris. I'll await other inputs before reacting in extenso. Except this:
1. The need is wider than just for one member's info. CP Vanity lists the "highest achievers", i.e. all people appearing in the first 4 or 5 pages of Who's Who when sorted by article count or message count.
4. the proposal V1.0 has average ratings in the Member structure, and rating and voteCount in the Article and Message structures; it does not include more detailed voting info as that info is currently not available on the web site either.
|
|
|
|
|
I skimmed through it. It seems reasonable.
Have you tried passing a System.DateTimeOffset? (I haven't.)
|
|
|
|
|
Hi PIEBALD,
Thanks for your first reaction.
I haven't felt the need to pass a DateTimeOffset; in fact I never even used one. My thinking was to communicate UTC only, then a client could, and probably would, adjust everything for local time (i.e. I'm not going to ask CP what timezone I'm in). Do you see a need for DTO?
|
|
|
|
|
|
I just tried/wrestled with it -- svcutil insists on creating a System.DateTimeOffset struct that conflicts with .net on the client.
This requires messing with the generated file (generally a no-no as you know) to get things to work.
|
|
|
|
|
I still have no idea why one would use a DateTimeOffset at all, I didn't know it existed, and I don't understand it.
What is wrong with DateTime, it looks like WSDL serializes it properly.
|
|
|
|
|
Hi Luc,
Firstly, thanks for including me in your discussions, it an honour, and thanks for the reference on the document to my CPRepWatcher!
Looking a the document, you have put together some excellent methods for the webservice, some comments i would have are;
1) The member structure should be maybe be modified to remove some elements; e.g. the Twitter Name. There should be another method that can be called to get this information, if Chris adds other associations in the future, e.g. LinkedIn, Facebook, AnOther, then there would be a requirement for the structure to change. Perhaps have a GetMemberExternalAsscociations that returns a KeyValue Pair string dictionary, where each entry would have the site as the key, and the member name or reference url as the value e.g. Twitter=daveauld
2) I would also remove the things like the post counts average ratings etc, and have them associated with a separate method, for similar reasons to #1 above. Keep the GetMemberInfo to the basic info that is unlikely to ever change.
3) The GetMemberRating, should possibly also be changed to a dictionary list of key/value pairs, for the same reasom, as the site evolves, more items may be added, and the structure would have to change, by using a dictionary, the client would only then have to add another handler for the key value
4) I take it the count parameter in the GetMembersByxxxx returns the number of items being requested? Or is this also updated by the return call to return the number actually returned? Possibly need to limit this to MaxNumber internally per call, also, if you called 1000 and you started at 500 from the end, if it returned only 500, the client would know there are no more and to stop querying during recursive calls.
5) What about a GetMemberCount(); to return the number of site members.
Thats it for the moment!
Cheers.
Dave
Find Me On: Web| Facebook| Twitter| LinkedIn
CPRepWatcher now available as Packaged Chrome Extension, visit my articles for link.
|
|
|
|
|
Hi Dave,
you're one of the known HTML scrapers, so I included you in the review panel.
thanks for your feedback. I'll delay a full response till all have had the opportunity to provide their feedback.
Two clarifications though:
4. the methods returning a list of IDs have a count indicating how many results the caller hopes to get, and there is an imposed maximum (MAXCOUNT); no it isn't a ref parameter (I don't think Web Services can handle that), the returned results will contain count or fewer items; fewer implies end of list. This is in the doc already (principle 5, on page 3), I probably didn't formulate it well enough.
5. MAXCOUNT and the memberCount are returned by GetGeneralInfo(), see page 5.
Cheers.
|
|
|
|
|
I think we should consider implementing my tip/trick regarding web service access (one method returns all data as XML).
.45 ACP - because shooting twice is just silly ----- "Why don't you tie a kerosene-soaked rag around your ankles so the ants won't climb up and eat your candy ass..." - Dale Earnhardt, 1997 ----- "The staggering layers of obscenity in your statement make it a work of art on so many levels." - J. Jystad, 2001
|
|
|
|
|
|