Wikipedia:Reference desk/Archives/Computing/2015 June 17

From Wikipedia, the free encyclopedia
Computing desk
< June 16 << May | June | Jul >> June 18 >
Welcome to the Wikipedia Computing Reference Desk Archives
The page you are currently viewing is an archive page. While you can leave answers for any questions shown below, please ask new questions on one of the current reference desk pages.


June 17[edit]

Wikipedia graphics[edit]

I am writing to let you know that at some point in the past few days Wikipedia has stopped loading graphics for any of its pages. This includes photographs, SVG images, and math equations. — Preceding unsigned comment added by 172.191.15.235 (talk) 00:30, 17 June 2015 (UTC)[reply]

You have already posted this on the help desk. Please do not create multiple threads on the same subject. AndyTheGrump (talk) 00:38, 17 June 2015 (UTC)[reply]

Writing a bot for real-world library site search?[edit]

I volunteer at a library, and one of my "jobs" is to pull, for example, fifth or more copies of fiction books—too many copies take up shelf space and are distributed to other branches. I have no idea why no one has thought of using this thing called a computer to their advantage—this is a modern library, not some small town thing—and I would think spreadsheet data could be created and a program written to search and export only titles that are at a specific branch that have 5 or more copies, for example. I will ask about this to my coordinator, but I can read a "no" person from about 10 yards away. So I've come here for some research. I know nothing about code or coding languages. But would it be possible, even easy, to write something that can use the library's public website, searching for all titles from A-Z, going to each title's specific page and "look" for 5+ items at one branch that is listed as in-house? Would I be violating some kind of ethical code in going over their head to do this? Btw, if I get a "not possible" (yes it is) from my coordinator, I'll go straight to the IT people and expect the same answer. I can search their website manually and see the results—or what I've been doing in real life is going through each shelf, book by book... which is what the librarians have been doing for decades. I'm only trying to increase productivity; my fear is someone thinking I'm just lazy. Ugh. Thanks so much. Reflectionsinglass (talk) 05:57, 17 June 2015 (UTC)[reply]

Using a program to gather data from a public website is possible but tricky. Websites are designed for humans to read and use. Humans like data which is laid out elegantly, while computers like data which is in a highly structured and predictable form. It's possible that a library catalog would be sufficiently structured and predictable for a computer to gather data from it using the Document Object Model (DOM), but this is often not the case. Human-readable websites are prone to change, or to contain unpredictable stylistic elements and even layout mistakes.
Some websites also have protections in place to ensure they are used by humans and not computers. A lot of sites will limit the number of times you can use them per second, preventing rapid data gathering by machines. Others watch for machine-like behaviour and present CAPTCHA checks. These measures are used because machines can access and read data much faster than humans and can therefore place a lot of strain on a webserver.
Web services designed to be used by machines often have a separate Web API, distinct from the human-readable webpage. The API will present data in a rigidly structured, predictable, machine-readable form. It also allows the service to fine-tune the level of access offered to bots. The API for Wikipedia, for example, can be found at https://en.wikipedia.org/w/api.php. This is how bots interact with and edit Wikipedia! Some APIs issue tokens that a bot must use to access the data. This allows the web service to identify individual bots and block their access if they cause problems.
So that's the background. In general, using bots to read websites designed for humans is more trouble than it's worth. Your library may or may not have protections in place against this sort of use, but even if not, they might not look kindly on it. Asking permission is a must.
But in fact, the website might not be the best place to start looking. Since this is a library, the data will certainly be stored in a database, probably an Integrated library system. The website is simply a front end: one of many possible ways to view the data stored in the database. The 'IT people' you mention will know what other ways there are to access the data. If, for example, they have access to the database using SQL, then producing a list of books with more than 5 copies at the same branch would take only a single line of code. (In fact, it's oddly reminiscent of exactly the types of problems set on introductory SQL courses...). The same could also be done using a graphical database management tool.
I hope this helps give you a better understanding of your problem and how it might be solved. —Noiratsi (talk) 07:43, 17 June 2015 (UTC)[reply]
Incredible! Thank you so much Noiratsi for taking the time to explain this. The API thing is fascinating, I had no idea that existed, much less that that is how bots make their rounds on Wikipedia. I've come across many spreadsheets with information on what items/barcodes to pull from the shelves, and it usually includes some extra info like how many times the item has been checked out. So I know they have all this information—but are staff (much less someone like me) allowed to access it? I will find out. You've answered my question very well; I agree it would just be too much trouble (and server stress) to go along with my original idea. Thank you so much! Reflectionsinglass (talk) 17:56, 17 June 2015 (UTC)[reply]

About 32-bit & 32-bit integer[edit]

Is 32-bit & 32-bit integer is same? and, is it required for 32-bit integer is redirect to 32-bit?

Best regards, Hans T.M / Hans5958 Talk | Guestbook 14:01, 17 June 2015 (UTC)[reply]

No, these are not exactly the same. They are related.
"32 bit" is a description that can apply to any primitive data type, and can also apply to certain parts of a computer system (like the size of a cache line or the size of a data bus). Data or hardware that is characteristically 32 bits wide - in other words, the word length is 32 bits - can be interpreted in any way. That data could be an integer, a pointer, a 32 bit float, or a block of arbitrary data whose meaning depends on the application.
So, "32-bit" is a bit depth that can apply to anything. A "32-bit integer" is a specific type of data which has this bit depth.
Nimur (talk) 14:41, 17 June 2015 (UTC)[reply]
To give a concrete example, in the widely-used IEEE 754 standard the single-precision floating-point format is 32 bits, but is not an integer. -- 160.129.138.186 (talk) 16:54, 18 June 2015 (UTC)[reply]

Get random number between x and x in Javascript?[edit]

Resolved

Hello everyone. How would I get a random number between x and x in javascript? Thanks for your help in advance. —SGA314 I am not available on weekends (talk) 15:39, 17 June 2015 (UTC)[reply]

To get a random integer r such that x <= r <= y:
var r = Math.floor((Math.random() * ((y - x) + 1)) + x)
Math.random() gives you a random number between 0 and 1. You multiply that by the range you want to have so you get a number 0 <= r < (y - x) + 1. Then you add x, and remove everything after the decimal point. —Noiratsi (talk) 16:00, 17 June 2015 (UTC)[reply]
Cool thanks. I wrote a couple interface functions to make my life easier. Here is what I wrote:
//RanInt(a, b) --> Returns a random integer between a(low number) and b(high number).
function RanInt(a, b)
{
  var Result;
  Result = Math.floor((Math.random() * ((a - b) + 1)) + b);
  return Result;
}

//RanUniform(a, b) --> Returns a random float between a(low number) and b(high number).
function RanUniform(a, b)
{
  var Result;
  Result = Math.random() * ((a - b) + 1) + b;
  return Result;
}
Thank for your help. —SGA314 I am not available on weekends (talk) 16:36, 17 June 2015 (UTC)[reply]
Looks useful :). Just a note: for the float, you need to ditch the +1! Math.random() is 0 <= r < 1, i.e. does not include 1. That is why the "add 1 and take the floor" approach is needed in order to produce integers. If you no longer take the floor, you no longer need to add 1. Your result will not be inclusive of your b value. —Noiratsi (talk) 16:47, 17 June 2015 (UTC)[reply]
(ec)The second function doesn't work - suppose a=1 and b=0. You're returning (Math.random()*((1-0)+1) + 0) - which is a random number between 0 and 1.99999...not between 0.0 and 1.0 as advertised. You need the +1 in the first case because you're thowing away the fractional part in the 'floor' operation - but in the second example it's wrong. You don't need the 'var Result' either - this is better:
//RanInt(a, b) --> Returns a random integer between a and b.
function RanInt(a, b) { return Math.floor((Math.random() * ((a - b) + 1)) + b); }
//RanUniform(a, b) --> Returns a random float between a and b.
function RanUniform(a, b) { return Math.random() * (a - b) + b; }
Technically, Math.random doesn't return numbers between 0 and 1 (inclusive), it returns numbers between zero and very, very, very nearly 1. (like 0.99999999999999) - so your second function, even when fixed, will never return 'a'.
SteveBaker (talk) 16:54, 17 June 2015 (UTC)[reply]
Thanks for the advice. Um, you got it backwards. I set it up s that, a is going to be equal to the lower number and b is equal to the higher number. That could greatly affect the output. I do get what you said about the +1 though. Ditching it now. As for the use of the variable, I generally put my output for a function into a variable just in case I want to do anything more with it later and I whated to keep things pretty(the way code looks matters greatly to me as well is its function). I also generally try to stay away from single line if, return, for, and the other statements like those. The single line versions are a lot harder for me to read. I know it takes up less space, but for me at least, it makes things sooo much harder to read. But hey, if I am writings something that takes up 12 mb of space just for the code, I will take the small nuisance of reading single line statements any day. —SGA314 I am not available on weekends (talk) 17:38, 17 June 2015 (UTC)[reply]
myNumber = RanUniform ( 5, 0 ) ;
You didn't say that the small number had to be first.
SteveBaker (talk) 18:47, 17 June 2015 (UTC)[reply]
Sorry, I didn't think about that. Yes It does have to be first. —SGA314 I am not available on weekends (talk) 19:30, 17 June 2015 (UTC)[reply]

There is not a big choice for random number between x and x....;) CiaPan (talk) 17:00, 17 June 2015 (UTC)[reply]

That depends on how sufficiently large a value of x you can find. 209.149.113.240 (talk) 20:42, 17 June 2015 (UTC)[reply]