Wikipedia:Reference desk/Archives/Computing/2014 October 11

= October 11 =

Wouldn't Prolog be just perfect for a rights system?
Even for simple access rights (who can read/modify/delete a file in this directory) things tend to become really complicated very soon. "Yes, you can read this file, because it's in a subdirectory of this directory which you have access too because you group X which you belong to inherits the right to it from the directory above, and you have not been excluded". And the meta-level: "Yes, you can give access to X because..."

While trying to set up a similar system for access to a webservice, I first tried to make it a bit simpler by not making people member of groups, groups member of other groups, only to wait for all exceptions, but to define "facts". A fact could be "X is member of group Y", but also "X is allowed to do Y for amounts less than $1000". And "People in group Administrators can grant access to all people in group ValidatedUsers to group Z"

This works quite nice because it includes both the rights to do X and the rights to allow someone to do X. Everything can be logged easily. Yet, the actual logic is still in a normal program. "Is X member of a group Y who can read files in directory Z" is a compiled if/then construction.

The next level would be that not only someone X can enter the fact "Y is now member of group Z" because there is a rule "X can add people to group Z", but also a rule like "from now on, all people belonging to group Z can add members to Z".

After a lot of programming I see that most of the code consists of "if some complicated conditions based on facts  then Allowed=true". The could be rewritten to "if PrologAgrees(AllRules, AllFacts) then Allowed=true"

For seemingly simple rights, like "can I read this file" or "can I look at this table in database X" an enormous amount of logic is now tedious hardcoded. Exception upon exception. "Yes, you can look at the whole C: drive, except when it's in c:\users, except when you are that user, unless you are an administrator, but if you are SYSTEM than you can anyway". It would be so much nicer if not only facts "X is member of Y" are configurable, but the rules to interpret them are configurable as well. IMHO Prolog could do just that. Joepnl (talk) 01:54, 11 October 2014 (UTC)


 * Access permissions are usually described by access control lists, not hard-coded. The access rights for C:\ and C:\Users are encoded in ACLs attached to those directories, which you can change if you like. Prolog clauses would probably work as well, though converting between the two systems wouldn't be trivial. I don't know anything about role-based access control, but it may be similar to the system you're thinking of. SecPAL is definitely similar. A Google Scholar search turns up a lot of papers about modeling access control in Prolog/Datalog. -- BenRG (talk) 20:59, 11 October 2014 (UTC)


 * I meant to say that ACL's are actually quite hard coded as well, there are special rules and exceptions all around. The non hard coded part is: "Jack is a member of Sales" and "Members of Sales may see K:\Sales". I needed "Jack said (and he could by this reasoning: ...), that from now on people who are a member of X, who have logged on less than 2 times in the last 5 months, can have access to Bonuspackage Y". Next time I will check scholar.google, I found some amazing documents there. Thanks! Joepnl (talk) 23:43, 15 October 2014 (UTC)

A safe and low-interference radio wave between 900 Mhz - 2.64 Ghz?
Just wondering, what are plausible frequency/ies that can I can use within the range of 900 Mhz - 2.64 Ghz? Thanks in advance - gacelperfinian&#40;talk in &#45; error&#63; Start [//en.wikipedia.org/w/index.php?title=User_talk:Gacelperfinian&action=edit a new topic] &#41; 08:16, 11 October 2014 (UTC)


 * Our article on Amateur radio frequency allocations shows that there are some bands open for amateur use, e.g., 902-928MHz in the US. --Mark viking (talk) 11:12, 11 October 2014 (UTC)


 * Allocated frequencies are allocated for given purposes. Allocated for amateur radio does not mean free-for-all, do-anything; there likely are restrictions on what kinds of power and signaling are allowed (voice, morse code, SSTV, etc). A ham radio license may be also required.
 * Depending on what you mean to do there may be unlicensed/unallocated frequencies that are less restricted - though still power and interference rules apply; even unlicensed/unallocated does not mean unregulated. Even if I knew the US rules I wouldn't want to slip into giving legal advice... Maybe spectrum management and frequency allocation are places to start researching.
 * Consider using existing frequencies and existing devices (e.g. if you want to build, say, a wireless doorbell, use WiFi or ZigBee or similar. You'll get ready radio modules with regulatory testing and approval.) 88.112.50.121 (talk) 15:19, 11 October 2014 (UTC)
 * There are bands of frequencies for use without a license, see ISM band. 902 to 928 MHz and 2.4 to 2.5 GHz maybe available for your use.  But if you are prepared to pay for a license there will be more options available depending on what you want to use it for. You cannot just use amateur frequency allocations freely, you have to become a radio amateur first. Graeme Bartlett (talk) 22:18, 11 October 2014 (UTC)