Metadata Maker
WARNING: JavaScript is not enabled on this browser. This page requires JavaScript to function correctly.
Title
*
Insert Diacritics
?
Subtitle
Insert Diacritics
?
Unlisted
Transliterated title
Insert Diacritics
Transliterated subtitle
Insert Diacritics
ISBN
?
Unlisted
Edition statement
?
Unlisted
Language
*
Abkhaz
Achinese
Acoli
Adangme
Adygei
Afar
Afrihili (Artificial language)
Afrikaans
Afroasiatic (Other)
Ainu
Akan
Akkadian
Albanian
Aleut
Algonquian (Other)
Altai
Altaic (Other)
Amharic
Angika
Apache languages
Arabic
Aragonese
Aramaic
Arapaho
Arawak
Armenian
Aromanian
Artificial (Other)
Assamese
Athapascan (Other)
Australian languages
Austronesian (Other)
Avaric
Avestan
Awadhi
Aymara
Azerbaijani
Bable
Balinese
Baltic (Other)
Baluchi
Bambara
Bamileke languages
Banda languages
Bantu (Other)
Basa
Bashkir
Basque
Batak
Beja
Belarusian
Bemba
Bengali
Berber (Other)
Bhojpuri
Bihari (Other)
Bikol
Bilin
Bislama
Blissymbolics
Bosnian
Braj
Breton
Bugis
Bulgarian
Buriat
Burmese
Caddo
Carib
Catalan
Caucasian (Other)
Cebuano
Celtic (Other)
Central American Indian (Other)
Chagatai
Chamic languages
Chamorro
Chechen
Cherokee
Cheyenne
Chibcha
Chinese
Chinook jargon
Chipewyan
Choctaw
Church Slavic
Chuukese
Chuvash
Coptic
Cornish
Corsican
Cree
Creek
Creoles and Pidgins (Other)
Creoles and Pidgins, English-based (Other)
Creoles and Pidgins, French-based (Other)
Creoles and Pidgins, Portuguese-based (Other)
Crimean Tatar
Croatian
Cushitic (Other)
Czech
Dakota
Danish
Dargwa
Dayak
Delaware
Dinka
Divehi
Dogri
Dogrib
Dravidian (Other)
Duala
Dutch
Dutch, Middle (ca. 1050-1350)
Dyula
Dzongkha
East Frisian
Edo
Efik
Egyptian
Ekajuk
Elamite
English
English, Middle (1100-1500)
English, Old (ca. 450-1100)
Erzya
Esperanto
Estonian
Ethiopic
Ewe
Ewondo
Fang
Fanti
Faroese
Fijian
Filipino
Finnish
Finno-Ugrian (Other)
Fon
French
French, Middle (ca. 1300-1600)
French, Old (ca. 842-1300)
Frisian
Friulian
Fula
Gã
Galician
Ganda
Gayo
Gbaya
Georgian
German
German, Middle High (ca. 1050-1500)
German, Old High (ca. 750-1050)
Germanic (Other)
Gilbertese
Gondi
Gorontalo
Gothic
Grebo
Greek, Ancient (to 1453)
Greek, Modern (1453-)
Guarani
Gujarati
Gwich'in
Haida
Haitian French Creole
Hausa
Hawaiian
Hebrew
Herero
Hiligaynon
Hindi
Hiri Motu
Hittite
Hmong
Hungarian
Hupa
Iban
Icelandic
Ido
Igbo
Ijo
Iloko
Inari Sami
Indic (Other)
Indo-European (Other)
Indonesian
Ingush
Interlingua (International Auxiliary Language Association)
Interlingue
Inuktitut
Inupiaq
Iranian (Other)
Irish
Irish, Middle (ca. 1100-1550)
Irish, Old (to 1100)
Iroquoian (Other)
Italian
Japanese
Javanese
Judeo-Arabic
Judeo-Persian
Kabardian
Kabyle
Kachin
Kalâtdlisut
Kamba
Kannada
Kanuri
Kara-Kalpak
Karachay-Balkar
Karelian
Karen languages
Kashmiri
Kashubian
Kawi
Kazakh
Khasi
Khmer
Khoisan (Other)
Khotanese
Kikuyu
Kimbundu
Kinyarwanda
Klingon (Artificial language)
Komi
Kongo
Konkani
Kootenai
Korean
Kosraean
Kpelle
Kru (Other)
Kuanyama
Kumyk
Kurdish
Kurukh
Kyrgyz
Ladino
Lahndā
Lamba (Zambia and Congo)
Lao
Latin
Latvian
Lezgian
Limburgish
Lingala
Lithuanian
Lojban (Artificial language)
Low German
Lower Sorbian
Lozi
Luba-Katanga
Luba-Lulua
Luiseño
Lule Sami
Lunda
Luo (Kenya and Tanzania)
Lushai
Luxembourgish
Maasai
Macedonian
Madurese
Magahi
Maithili
Makasar
Malagasy
Malay
Malayalam
Maltese
Manchu
Mandar
Mandingo
Manipuri
Manobo languages
Manx
Maori
Mapuche
Marathi
Mari
Marshallese
Marwari
Mayan languages
Mende
Micmac
Minangkabau
Mirandese
Miscellaneous languages
Mohawk
Moksha
Mon-Khmer (Other)
Mongo-Nkundu
Mongolian
Mooré
Multiple languages
Munda (Other)
N'Ko
Nahuatl
Nauru
Navajo
Ndebele (South Africa)
Ndebele (Zimbabwe)
Ndonga
Neapolitan Italian
Nepali
Newari
Newari, Old
Nias
Niger-Kordofanian (Other)
Nilo-Saharan (Other)
Niuean
No linguistic content
Nogai
North American Indian (Other)
North Frisian
Northern Sami
Northern Sotho
Norwegian
Norwegian (Bokmål)
Norwegian (Nynorsk)
Nubian languages
Nyamwezi
Nyanja
Nyankole
Nyoro
Nzima
Occitan (post-1500)
Oirat
Ojibwa
Old Norse
Old Persian (ca. 600-400 B.C.)
Oriya
Oromo
Osage
Ossetic
Otomian languages
Pahlavi
Palauan
Pali
Pampanga
Pangasinan
Panjabi
Papiamento
Papuan (Other)
Persian
Philippine (Other)
Phoenician
Pohnpeian
Polish
Portuguese
Prakrit languages
Provençal (to 1500)
Pushto
Quechua
Raeto-Romance
Rajasthani
Rapanui
Rarotongan
Romance (Other)
Romani
Romanian
Rundi
Russian
Salishan languages
Samaritan Aramaic
Sami
Samoan
Sandawe
Sango (Ubangi Creole)
Sanskrit
Santali
Sardinian
Sasak
Scots
Scottish Gaelic
Selkup
Semitic (Other)
Serbian
Serer
Shan
Shona
Sichuan Yi
Sicilian Italian
Sidamo
Sign languages
Siksika
Sindhi
Sinhalese
Sino-Tibetan (Other)
Siouan (Other)
Skolt Sami
Slavey
Slavic (Other)
Slovak
Slovenian
Sogdian
Somali
Songhai
Soninke
Sorbian (Other)
Sotho
South American Indian (Other)
Southern Sami
Spanish
Sranan
Sukuma
Sumerian
Sundanese
Susu
Swahili
Swazi
Swedish
Swiss German
Syriac
Syriac, Modern
Tagalog
Tahitian
Tai (Other)
Tajik
Tamashek
Tamil
Tatar
Telugu
Temne
Terena
Tetum
Thai
Tibetan
Tigré
Tigrinya
Tiv
Tlingit
Tok Pisin
Tokelauan
Tonga (Nyasa)
Tongan
Tsimshian
Tsonga
Tswana
Tumbuka
Tupi languages
Turkish
Turkish, Ottoman
Turkmen
Tuvaluan
Tuvinian
Twi
Udmurt
Ugaritic
Uighur
Ukrainian
Umbundu
Undetermined
Upper Sorbian
Urdu
Uzbek
Vai
Venda
Vietnamese
Volapük
Votic
Wakashan languages
Walloon
Waray
Washoe
Welsh
Western Pahari languages
Wolayta
Wolof
Xhosa
Yakut
Yao (Africa)
Yapese
Yiddish
Yoruba
Yupik languages
Zande languages
Zapotec
Zaza
Zenaga
Zhuang
Zulu
Zuni
Author
Insert Diacritics
Insert Diacritics
,
Unlisted
Transliterated author
Insert Diacritics
Insert Diacritics
,
Name of publisher
Insert Diacritics
?
Unlisted
Transliterated publisher
Insert Diacritics
Place of publication
Insert Diacritics
?
Unlisted
Transliterated place
Insert Diacritics
Country/State/Province of publication
Afghanistan
Alabama
Alaska
Albania
Alberta
Algeria
American Samoa
Andorra
Angola
Anguilla
Antarctica
Antigua and Barbuda
Argentina
Arizona
Arkansas
Armenia (Republic)
Aruba
Australia
Australian Capital Territory
Austria
Azerbaijan
Bahamas
Bahrain
Bangladesh
Barbados
Belarus
Belgium
Belize
Benin
Bermuda Islands
Bhutan
Bolivia
Bosnia and Hercegovina
Botswana
Bouvet Island
Brazil
British Columbia
British Indian Ocean Territory
British Virgin Islands
Brunei
Bulgaria
Burkina Faso
Burma
Burundi
Cabo Verde
California
Cambodia
Cameroon
Canada
Caribbean Netherlands
Cayman Islands
Central African Republic
Chad
Chile
China
China (Republic : 1949- )
Christmas Island (Indian Ocean)
Cocos (Keeling) Islands
Colombia
Colorado
Comoros
Congo (Brazzaville)
Congo (Democratic Republic)
Connecticut
Cook Islands
Coral Sea Islands Territory
Costa Rica
Côte d'Ivoire
Croatia
Cuba
Curaçao
Cyprus
Czech Republic
Delaware
Denmark
District of Columbia
Djibouti
Dominica
Dominican Republic
Ecuador
Egypt
El Salvador
England
Equatorial Guinea
Eritrea
Estonia
Ethiopia
Falkland Islands
Faroe Islands
Fiji
Finland
Florida
France
French Guiana
French Polynesia
Gabon
Gambia
Gaza Strip
Georgia
Georgia (Republic)
Germany
Ghana
Gibraltar
Greece
Greenland
Grenada
Guadeloupe
Guam
Guatemala
Guinea
Guinea-Bissau
Guyana
Haiti
Hawaii
Heard and McDonald Islands
Honduras
Hungary
Iceland
Idaho
Illinois
India
Indiana
Indonesia
Iowa
Iran
Iraq
Iraq-Saudi Arabia Neutral Zone
Ireland
Israel
Italy
Jamaica
Japan
Johnston Atoll
Jordan
Kansas
Kazakhstan
Kentucky
Kenya
Kiribati
Korea (North)
Korea (South)
Kosovo
Kuwait
Kyrgyzstan
Laos
Latvia
Lebanon
Lesotho
Liberia
Libya
Liechtenstein
Lithuania
Louisiana
Luxembourg
Macedonia
Madagascar
Maine
Malawi
Malaysia
Maldives
Mali
Malta
Manitoba
Marshall Islands
Martinique
Maryland
Massachusetts
Mauritania
Mauritius
Mayotte
Mexico
Michigan
Micronesia (Federated States)
Midway Islands
Minnesota
Mississippi
Missouri
Moldova
Monaco
Mongolia
Montana
Montenegro
Montserrat
Morocco
Mozambique
Namibia
Nauru
Nebraska
Nepal
Netherlands
Nevada
New Brunswick
New Caledonia
New Hampshire
New Jersey
New Mexico
New South Wales
New York (State)
New Zealand
Newfoundland and Labrador
Nicaragua
Niger
Nigeria
Niue
No place, unknown, or undetermined
Norfolk Island
North Carolina
North Dakota
Northern Ireland
Northern Mariana Islands
Northern Territory
Northwest Territories
Norway
Nova Scotia
Nunavut
Ohio
Oklahoma
Oman
Ontario
Oregon
Pakistan
Palau
Panama
Papua New Guinea
Paracel Islands
Paraguay
Pennsylvania
Peru
Philippines
Pitcairn Island
Poland
Portugal
Prince Edward Island
Puerto Rico
Qatar
Québec (Province)
Queensland
Réunion
Rhode Island
Romania
Russia (Federation)
Rwanda
Saint Helena
Saint Kitts-Nevis
Saint Lucia
Saint Pierre and Miquelon
Saint Vincent and the Grenadines
Saint-Barthélemy
Saint-Martin
Samoa
San Marino
Sao Tome and Principe
Saskatchewan
Saudi Arabia
Scotland
Senegal
Serbia
Seychelles
Sierra Leone
Singapore
Sint Maarten
Slovakia
Slovenia
Solomon Islands
Somalia
South Africa
South Australia
South Carolina
South Dakota
South Georgia and the South Sandwich Islands
South Sudan
Spain
Spanish North Africa
Spratly Island
Sri Lanka
Sudan
Surinam
Swaziland
Sweden
Switzerland
Syria
Tajikistan
Tanzania
Tasmania
Tennessee
Terres australes et antarctiques françaises
Texas
Thailand
Timor-Leste
Togo
Tokelau
Tonga
Trinidad and Tobago
Tunisia
Turkey
Turkmenistan
Turks and Caicos Islands
Tuvalu
Uganda
Ukraine
United Arab Emirates
United Kingdom
United Kingdom Misc. Islands
United States
United States Misc. Caribbean Islands
United States Misc. Pacific Islands
Uruguay
Utah
Uzbekistan
Vanuatu
Various places
Vatican City
Venezuela
Vermont
Victoria
Vietnam
Virgin Islands of the United States
Virginia
Wake Island
Wales
Wallis and Futuna
Washington (State)
West Bank of the Jordan River
West Virginia
Western Australia
Western Sahara
Wisconsin
Wyoming
Yemen
Yukon Territory
Zambia
Zimbabwe
?
Unlisted
Date of publication
?
Unlisted
Copyright date
?
Unlisted
Number of
pages
volumes
?
Unpaged
Dimensions
*
cm
?
Is this item literature?
Yes
No
Not fiction (not further specified)
Fiction (not further specified)
Dramas
Essays
Novels
Humor, satires, etc.
Letters
Short stories
Mixed forms
Poetry
Speeches
Unknown
Does the item include illustrations?
Yes
No
Keywords
*
?
Notes to the Cataloger
Save as
.[file type]
Choose record formats:
MARC
MARCXML
MODS
HTML
* Required field
The Metadata Maker Project was funded by the University of Illinois at Urbana-Champaign Library's Innovation and Seed Funds.
Version 1.0


Secure connections enforced
Connections to all pages on this host will be over
.
Options

Learn More


- D(double) - Method in class imagingbook.calibration.zhang.Camera
-
Radial distortion function, to be applied in the form r' = r * (1 + D(r))
to points in the ideal projection plane.
- debug - Variable in class imagingbook.calibration.zhang.Calibrator.Parameters
-
Turn on debugging output.
- Demo_Draw_3D_Axes - Class in calibration_demos_more
-
This plugin projects and draws the projected X/Y/Z coordinate axes
for each of the given camera views.
- Demo_Draw_3D_Axes() - Constructor for class calibration_demos_more.Demo_Draw_3D_Axes
-
- Demo_Rectification - Class in calibration_demos_more
-
This plugin projects opens an image stack containing the 5 Zhang
test images and removes the lens distortion based on the calibrated
camera parameters.
- Demo_Rectification() - Constructor for class calibration_demos_more.Demo_Rectification
-
- Demo_Replace_Camera - Class in calibration_demos_more
-
This plugin projects opens an image stack containing the 5 Zhang
test images (assumed to be taken with camera A) and re-renders
the images by mapping them to a new camera B.
- Demo_Replace_Camera() - Constructor for class calibration_demos_more.Demo_Replace_Camera
-
- Demo_View_Interpolation - Class in calibration_demos_more
-
This plugin performs interpolation of views, given a sequence
of key views.
- Demo_View_Interpolation() - Constructor for class calibration_demos_more.Demo_View_Interpolation
-
- Demo_Zhang_Calibration - Class in calibration_demos
-
This plugin performs Zhang's camera calibration on the
pre-calculated point data for the N given target views.
- Demo_Zhang_Calibration() - Constructor for class calibration_demos.Demo_Zhang_Calibration
-
- Demo_Zhang_Projection - Class in calibration_demos
-
This plugin projects opens an image stack containing the 5 Zhang
test images and projects the model points into each view,
using the (known) camera and view parameters.
- Demo_Zhang_Projection() - Constructor for class calibration_demos.Demo_Zhang_Projection
-
- Demo_Zhang_Projection_Overlay - Class in calibration_demos
-
This plugin projects opens an image stack containing the 5 Zhang
test images, then outlines the positions of the observed image
points and finally projects the points of the calibration model
using the calculated intrinsic camera parameters (same for all
views) and the extrinsic parameters calculated for each view.
- Demo_Zhang_Projection_Overlay() - Constructor for class calibration_demos.Demo_Zhang_Projection_Overlay
-
- det(RealMatrix) - Static method in class imagingbook.calibration.zhang.util.MathUtil
-
- drawCorner(Point2D, Color) - Method in class imagingbook.calibration.zhang.util.GridPainter
-
- drawLine(Point2D, Point2D) - Method in class imagingbook.calibration.zhang.util.GridPainter
-
- drawSquare(Point2D[]) - Method in class imagingbook.calibration.zhang.util.GridPainter
-
- drawSquares(Point2D[]) - Method in class imagingbook.calibration.zhang.util.GridPainter
-
- getA() - Method in class imagingbook.calibration.zhang.Camera
-
Returns a copy of the camera's inner transformation matrix with contents
- getAllObservedPoints() - Static method in class imagingbook.calibration.zhang.testdata.ZhangData
-
- getAllViewTransforms() - Static method in class imagingbook.calibration.zhang.testdata.ZhangData
-
- getAlpha() - Method in class imagingbook.calibration.zhang.Camera
-
Returns the camera's alpha value.
- getBeta() - Method in class imagingbook.calibration.zhang.Camera
-
Returns the camera's beta value.
- getCameraIntrinsics(RealMatrix[]) - Method in class imagingbook.calibration.zhang.CameraIntrinsicsEstimator
-
Final version by WB (this version is used by default).
- getCameraIntrinsics() - Static method in class imagingbook.calibration.zhang.testdata.ZhangData
-
- getCameraIntrinsicsZhang1(RealMatrix[]) - Method in class imagingbook.calibration.zhang.CameraIntrinsicsEstimator
-
Version 1 (Zhang's original closed form solution).
- getCameraIntrinsicsZhang2(RealMatrix[]) - Method in class imagingbook.calibration.zhang.CameraIntrinsicsEstimator
-
Version 2 (Zhang's corrected closed form solution).
- getCameraIntrinsicsZhang3(RealMatrix[]) - Method in class imagingbook.calibration.zhang.CameraIntrinsicsEstimator
-
Version 3 (WB's closed form solution).
- getColumnVectors(RealMatrix) - Static method in class imagingbook.calibration.zhang.util.MathUtil
-
- getExtrinsics(RealMatrix[]) - Method in class imagingbook.calibration.zhang.ExtrinsicViewEstimator
-
Estimates the extrinsic camera parameters for a sequence of homographies.
- getFinalCamera() - Method in class imagingbook.calibration.zhang.Calibrator
-
Returns the final camera model (including lens distortion).
- getFinalCamera() - Method in class imagingbook.calibration.zhang.NonlinearOptimizer
-
Returns the optimized camera parameters.
- getFinalViews() - Method in class imagingbook.calibration.zhang.Calibrator
-
Returns the sequence of final camera views (extrinsics, including
lens distortion).
- getFinalViews() - Method in class imagingbook.calibration.zhang.NonlinearOptimizer
-
Returns the optimized view parameters.
- getGamma() - Method in class imagingbook.calibration.zhang.Camera
-
Returns the camera's gamma value.
- getHomography(ViewTransform) - Method in class imagingbook.calibration.zhang.Camera
-
Returns the homography for the given view as a 3 x 3 matrix.
- getInfo(double[][]) - Static method in class imagingbook.calibration.zhang.util.MathUtil
-
- getInfo(double[]) - Static method in class imagingbook.calibration.zhang.util.MathUtil
-
- getInitialCamera() - Method in class imagingbook.calibration.zhang.Calibrator
-
Returns the initial camera model (no lens distortion).
- getInitialViews() - Method in class imagingbook.calibration.zhang.Calibrator
-
Returns the sequence of initial camera views (extrinsics, no
lens distortion).
- getInverseA() - Method in class imagingbook.calibration.zhang.Camera
-
Returns the inverse of the camera intrinsic matrix A
as a 3x3 matrix (without the last row {0,0,1}).
- getJacobianFunction(Point2D[]) - Method in class imagingbook.calibration.zhang.HomographyEstimator
-
- getK() - Method in class imagingbook.calibration.zhang.Camera
-
Returns the camera's lens distortion coefficients.
- getModelPoints() - Static method in class imagingbook.calibration.zhang.testdata.ZhangData
-
- getObservedPoints(int) - Static method in class imagingbook.calibration.zhang.testdata.ZhangData
-
- getParameterLength() - Method in class imagingbook.calibration.zhang.ViewTransform
-
- getParameters() - Method in class imagingbook.calibration.zhang.ViewTransform
-
- getParameterVector() - Method in class imagingbook.calibration.zhang.Camera
-
Returns the camera's inner parameters as a vector
(alpha, beta, gamma, uc, vc, k0, k1).
- getProjectionError(Camera, ViewTransform, Point2D[]) - Method in class imagingbook.calibration.zhang.Calibrator
-
Calculates the squared projection error for a single view, associated
with a set of observed image points.
- getProjectionError(Camera, ViewTransform[], Point2D[][]) - Method in class imagingbook.calibration.zhang.Calibrator
-
Calculates the squared projection error for a sequence of views, associated
with a sequence of observed image point sets.
- getResourcePath(String) - Static method in class imagingbook.calibration.zhang.testdata.ZhangData
-
- getRotation() - Method in class imagingbook.calibration.zhang.ViewTransform
-
- getRotationAxis() - Method in class imagingbook.calibration.zhang.ViewTransform
-
- getRotationMatrix() - Method in class imagingbook.calibration.zhang.ViewTransform
-
- getRowPackedVector(RealMatrix) - Static method in class imagingbook.calibration.zhang.util.MathUtil
-
- getTranslation() - Method in class imagingbook.calibration.zhang.ViewTransform
-
- getTranslationVector() - Method in class imagingbook.calibration.zhang.ViewTransform
-
- getUc() - Method in class imagingbook.calibration.zhang.Camera
-
Returns the camera's uc value.
- getVc() - Method in class imagingbook.calibration.zhang.Camera
-
Returns the camera's vc value.
- getViewImagePath(int) - Static method in class imagingbook.calibration.zhang.testdata.ZhangData
-
Returns the path to the test image for the given view number
- getViewTransform(int) - Static method in class imagingbook.calibration.zhang.testdata.ZhangData
-
- GridPainter - Class in imagingbook.calibration.zhang.util
-
Helper class for drawing projections of the calibration target.
- GridPainter(ImageProcessor) - Constructor for class imagingbook.calibration.zhang.util.GridPainter
-


Work Experience
Nika Solutions
Predictive Analyst for Dept. of Defense (Nov. 2019 - Present)
- Develop analytic models, data visualizations, and dashboards using Power BI and Tableau.
- Manage and maintain routine Pentaho ETL processes.
- Design various solutions to display complex data using various tools such as custom columns, stories, calculated fields, and parameters.
- Assist in efforts to satisfy client’s reporting and data needs by gathering, prioritizing, and tracking requirements and implementing use friendly reports and dashboards.
- Uphold effective governance of government and business data to ensure data quality and data management, maximize confidentiality and security of sensitive information, and minimize risks surrounding data sharing.
CGI Federal, Inc.
Junior Data Scientist for Dept. of State (April 2019 - Nov. 2019)
- Optimized SQL queries to improve system performance.
- Maintained SQL views and SAP Business Objects universes that drove client reports.
- Developed reports within SAP Business Objects based on client software requirements.
- Developed and maintained functional and technical documentation of products delivered.


Astronauts Start Spacewalk Series to Fix Cosmic Ray Detector
by ASSOCIATED PRESSCAPE CANAVERAL, Fla. (AP) — Astronauts began an extraordinarily complicated series of spacewalks Friday to fix a cosmic ray detector at the International Space Station.
Italian astronaut Luca Parmitano and U.S. astronaut Andrew Morgan ventured out Friday with dozens of tools to dissect the Alpha Magnetic Spectrometer. It took them nearly two hours to get to the instrument and start removing a protective shield, one fastener at a time, to gain access inside.
“Nice work, Luca. Looks great,” Mission Control radioed to Parmitano on the end of the space station’s long robot arm.
NASA considers these spacewalks the most difficult since the Hubble Space Telescope repairs a few decades ago. Unlike Hubble, the spectrometer was never meant to undergo space surgery. After 8 ½ years in orbit, its cooling system is almost dead.
Parmitano and Morgan will go out at least four times this month and next to revitalize the instrument.
Delivered to orbit by Endeavour in 2011 on the next-to-last space shuttle flight, the $2 billion spectrometer is hunting for elusive antimatter and dark matter.
It’s already studied more than 148 billion charged cosmic rays. That’s more than what was collected in over a century by high-altitude balloons and small satellites, said lead scientist Samuel Ting, a Nobel laureate at the Massachusetts Institute of Technology. He monitored Friday’s spacewalk from Mission Control in Houston.
The huge spectrometer — 16 feet by 13 feet by 10 feet, with a mass of 7 ½ tons — was designed to operate for three years. By installing four new and improved coolant pumps, the astronauts can keep it working throughout the life of the space station, or another five to 10 years. The replacement pumps arrived at the space station nearly two weeks ago, along with an assortment of new tools.
Parmitano, the lead spacewalker, and Morgan trained extensively for the plumbing job before rocketing into orbit. Friday’s task entailed removing the shield and tossing it overboard. The next spacewalk will involve slicing through stainless steel tubes and splicing in connections for the new pumps, which like the old will use liquid carbon dioxide as the coolant.
In some respects, this work, 250 miles up, is even trickier than the Hubble spacewalks, said NASA project manager Ken Bollweg. As before, the stakes are high.
“Any time you do heart surgery you’re taking some risks,” Bollweg said in an interview earlier this week.
Morgan is an emergency physician in the Army — a bonus for this kind of intricate work. He’s making his first spaceflight.
For second-time station resident Parmitano, it marked his return to spacewalking following a close call in 2013. He almost drowned when his helmet flooded with water from the cooling system of his spacesuit. Unable to talk because of the rising water, he managed to keep his cool as he made his way back to the safe confines of the space station.
___
By MARCIA DUNN AP Aerospace Writer
The Associated Press Health and Science Department receives support from the Howard Hughes Medical Institute’s Department of Science Education. The AP is solely responsible for all content.
Copyright © 2019 courthousenews.com


PWHC
Home
Blog
About
Hairstylists
Login
Sign Up
Lennox Prince
Project Lead, UX Designer
Caleb Redd
Front End Architect, React
Yarriba Castro
Front End Architect, React
Laura Theimer
UI Interface Developer
Jada Broome
UI Interface Developer


Work overseas and bring home the bacon, labor ministry urges Thais
by Coconuts BangkokThe Labor Ministry is encouraging Thais to work overseas next year for the billions of baht they add to the economy, it announced yesterday.
Nearly 98,000 Thais have gone abroad as of October this year, and labor official Suchat Pornchaiwiseskul said it wants to keep that up with 100,000 workers abroad in 2020, which it hopes will generate THB140 billion (US$463 million) in economic activity.
It also hopes that people who go work in prosperous countries such as Taiwan, Japan, South Korea, and Israel will come home with improved know-how and skills.
While most imagine jobs in massage or restaurants, many Thais work in agriculture and factories abroad. They often do so under poor conditions, as the BBC reported last year following a year-long look into the “unsafe and squalid” conditions workers face in Israel under a program organized by both nations’ governments.
In 2016, the Bank of Thailand put the number of overseas Thai workers at 1.1 million.
Suchat did encourage those working abroad to do so legally.
“We ask Thai workers to process their immigration applications and work abroad legally, which can be done via agencies, via the Department of Employment for government-sponsored programs, from employer-provided internship programs abroad and through jobseekers’ own attempts to find employment abroad,” he said yesterday.
The department also offers a self-service program for job-seekers and help with paperwork on its website.
In recent years, many Thais working illegally overseas have been arrested. One of the countries where this happens frequently, South Korea, has debated reinstating visa requirements for Thai travelers due to the problem.
Related:
Almost 100 undocumented Filipino workers arrive from the United Arab Emirates
‘No arrests or crackdowns’: Thailand backtracks on labor law after migrant workers flee
Undocumented foreign workers crawled through septic pipe to escape crackdown


--- layout: post title: "Spring Boot, Apache Camel and Swagger UI" date: 2018-01-17 15:00:00 author: "Bennet Schulz" tags: - Maven ---
Companies are using lots of systems which have to talk with each other. Therefore it's a good idea to use something to integrate these systems.
Such an application integration can be done by an Enterprise Service Bus or even with an integration framework like Apache Camel.
I highly recommend to use one of these and don't program it on your own by using lots of APIs. Please don't do this!
I'm a big fan of lightweight integration and flexibility so it's not surprising that Apache Camel is my tool of choice.
Apache Camel can be used in standalone mode by using a jar containing the Camel routes or as part of a runtime like Spring Boot or WildFly/WildFly Swarm for example.
I decided to use Spring Boot as runtime because it is widely used and comes with a lot of useful things, a very good documentation and so on.
In addition to that I'm usind Swagger UI to get a beautiful API documentation which makes consuming REST APIs much easier.
This blog posts describes how to combine these technologies with each other. In case you just want to use the code, here's the link to my GitHub repository.
First we have to create a Spring Boot project containing the Apache Camel dependency first. This can easily be done by using the Spring Initializr which is available at: https://start.spring.io/
You just change the Group and Artifact to the names you like and Add Apache Camel as Spring Boot Starters dependency. After that you have to click on Generate Project and you project is up and running.
Now we can add the Swagger UI files to our Spring Boot project. This can be done by downloading the Swagger UI sources from:
https://github.com/swagger-api/swagger-ui.
Note: I'm using Swagger UI 2.2.8 instead of the latest version because the Camel component doesn't support the new API specification of Swagger 3.X for now.
After that we have to create a new folder at src/main/resources
which have to be named: static
, public
or resources
to serve our static Swagger UI content via Spring Boot.
Now we simply have to add the dist
folder of Swagger UI to this folder to make Swagger UI available in our project.
In the next step we have to add a simple Camel route to the Spring Boot project. By doing this we have to add a Camel servlet first. This snippet adds a servlet mapping which will be the prefix of all Camel routes we will add later. After that all camel routes will be available at localhost:8080/api/*. Now its time to add the route itself: This route adds a person REST URI which can be used by HTTP GET only and returns a JSON response of my Person POJO class: After these steps the Person respone is available at: http://localhost:8080/api/person
After adding the REST API it's time to combine Camel and Swagger UI with each other.
This can be done by changing the url in the swagger index.html from the sample petstore to /api-doc/camel-1
:
Now we have to add a servlet mapping for Swagger to use the Camel route urls:
After that Swagger UI will use the Camel REST API instead of the sample petstore. It's important to change the base.path
of the servlet to api
because our REST APIs have /api/
as prefix.
These steps let Swagger UI show a beautiful documentation of our Camel REST APIs.
Have fun with it! :-)
Bye,
Bennet


GEMS AND RUNES
Median XL: Ultimative contains the standard Diablo II gems with new bonuses, but also 5 new gem types and 23 new runes.
LIST OF GEMS
| Chipped Amber | Level 1 | Weapons : 1% Reanimate As: Death Gnat Armor : Lightning Resist +4% Shields : Slows Attacker by 1% | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Flawed Amber | Level 5 | Weapons : 2% Reanimate As: Death Gnat Armor : Lightning Resist +8% Shields : Slows Attacker by 2% | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Amber | Level 12 | Weapons : 3% Reanimate As: Death Gnat Armor : Lightning Resist +12% Shields : Slows Attacker by 3% | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Flawless Amber | Level 15 | Weapons : 4% Reanimate As: Death Gnat Armor : Lightning Resist +16%, +1% to Maximum Lightning Resist Shields : Slows Attacker by 4% | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Perfect Amber | Level 18 | Weapons : 5% Reanimate As: Death Gnat Armor : Lightning Resist +20%, +2% to Maximum Lightning Resist Shields : Slows Attacker by 5%
| Chipped Amethyst
| Level | 1 Weapons : 10% Bonus to Attack Rating | Armor : 1% Bonus to Dexterity Shields : +2 Mana when Struck by an Enemy
| Flawed Amethyst
| Level | 5 Weapons : 20% Bonus to Attack Rating | Armor : 2% Bonus to Dexterity Shields : +4 Mana when Struck by an Enemy
| Amethyst
| Level | 12 Weapons : 30% Bonus to Attack Rating | Armor : 3% Bonus to Dexterity Shields : +6 Mana when Struck by an Enemy
| Flawless Amethyst
| Level | 15 Weapons : 40% Bonus to Attack Rating | Armor : 4% Bonus to Dexterity Shields : +8 Mana when Struck by an Enemy
| Perfect Amethyst
| Level | 18 Weapons : 50% Bonus to Attack Rating | Armor : 5% Bonus to Dexterity Shields : +10 Mana when Struck by an Enemy
| Chipped Bloodstone
| Level | 1 Weapons : +2% Bonus to Summoned Minion Life | Armor : Fire Resist +4% Shields : +1% Bonus to Summoned Minion Resistances
| Flawed Bloodstone
| Level | 5 Weapons : +4% Bonus to Summoned Minion Life | Armor : Fire Resist +8% Shields : +2% Bonus to Summoned Minion Resistances
| Bloodstone
| Level | 12 Weapons : +6% Bonus to Summoned Minion Life | Armor : Fire Resist +12% Shields : +3% Bonus to Summoned Minion Resistances
| Flawless Bloodstone
| Level | 15 Weapons : +8% Bonus to Summoned Minion Life | Armor : Fire Resist +16%, +1% to Maximum Fire Resist Shields : +4% Bonus to Summoned Minion Resistances
| Perfect Bloodstone
| Level | 18 Weapons : +10% Bonus to Summoned Minion Life | Armor : Fire Resist +20%, +2% to Maximum Fire Resist Shields : +5% Bonus to Summoned Minion Resistances
| Chipped Diamond
| Level | 1 Weapons : +1% to Spell Damage | Armor : 1% Bonus to Strength Shields : All Resists +1%
| Flawed Diamond
| Level | 5 Weapons : +2% to Spell Damage | Armor : 2% Bonus to Strength Shields : All Resists +2%
| Diamond
| Level | 12 Weapons : +3% to Spell Damage | Armor : 3% Bonus to Strength Shields : All Resists +3%
| Flawless Diamond
| Level | 15 Weapons : +4% to Spell Damage | Armor : 4% Bonus to Strength Shields : All Resists +4%
| Perfect Diamond
| Level | 18 Weapons : +5% to Spell Damage | Armor : 5% Bonus to Strength Shields : All Resists +5%
| Chipped Emerald
| Level | 1 Weapons : +2 to Maximum Damage | Armor : Regenerate Life +4 Shields : Poison Resist +6%
| Flawed Emerald
| Level | 5 Weapons : +4 to Maximum Damage | Armor : Regenerate Life +8 Shields : Poison Resist +12%
| Emerald
| Level | 12 Weapons : +6 to Maximum Damage | Armor : Regenerate Life +12 Shields : Poison Resist +18%
| Flawless Emerald
| Level | 15 Weapons : +8 to Maximum Damage | Armor : Regenerate Life +16 Shields : Poison Resist +24%
| Perfect Emerald
| Level | 18 Weapons : +10 to Maximum Damage | Armor : Regenerate Life +20 Shields : Poison Resist +30%
| Chipped Onyx
| Level | 1 Weapons : +2% Bonus to Summoned Minion Damage | Armor : Cold Resist +4% Shields : 1% Chance of Uninterruptable Attack
| Flawed Onyx
| Level | 5 Weapons : +4% Bonus to Summoned Minion Damage | Armor : Cold Resist +8% Shields : 2% Chance of Uninterruptable Attack
| Onyx
| Level | 12 Weapons : +6% Bonus to Summoned Minion Damage | Armor : Cold Resist +12% Shields : 3% Chance of Uninterruptable Attack
| Flawless Onyx
| Level | 15 Weapons : +8% Bonus to Summoned Minion Damage | Armor : Cold Resist +16%, +1% to Maximum Cold Resist Shields : 4% Chance of Uninterruptable Attack
| Perfect Onyx
| Level | 18 Weapons : +10% Bonus to Summoned Minion Damage | Armor : Cold Resist +20%, +2% to Maximum Cold Resist Shields : 5% Chance of Uninterruptable Attack
| Chipped Ruby
| Level | 1 Weapons : +2 to Life after each Kill | Armor : 1% Bonus to Vitality Shields : Fire Resist +6%
| Flawed Ruby
| Level | 5 Weapons : +4 to Life after each Kill | Armor : 2% Bonus to Vitality Shields : Fire Resist +12%
| Ruby
| Level | 12 Weapons : +6 to Life after each Kill | Armor : 3% Bonus to Vitality Shields : Fire Resist +18%
| Flawless Ruby
| Level | 15 Weapons : +8 to Life after each Kill | Armor : 4% Bonus to Vitality Shields : Fire Resist +24%
| Perfect Ruby
| Level | 18 Weapons : +10 to Life after each Kill | Armor : 5% Bonus to Vitality Shields : Fire Resist +30%
| Chipped Sapphire
| Level | 1 Weapons : +2 to Mana after each Kill | Armor : +1% Bonus to Buff/Debuff/Cold Skill Duration Shields : Cold Resist +6%
| Flawed Sapphire
| Level | 5 Weapons : +4 to Mana after each Kill | Armor : +2% Bonus to Buff/Debuff/Cold Skill Duration Shields : Cold Resist +12%
| Sapphire
| Level | 12 Weapons : +6 to Mana after each Kill | Armor : +3% Bonus to Buff/Debuff/Cold Skill Duration Shields : Cold Resist +18%
| Flawless Sapphire
| Level | 15 Weapons : +8 to Mana after each Kill | Armor : +4% Bonus to Buff/Debuff/Cold Skill Duration Shields : Cold Resist +24%
| Perfect Sapphire
| Level | 18 Weapons : +10 to Mana after each Kill | Armor : +5% Bonus to Buff/Debuff/Cold Skill Duration Shields : Cold Resist +30%
| Chipped Topaz
| Level | 1 Weapons : +6 Energy Factor to Spell Damage | Armor : 1% Bonus to Energy Shields : Lightning Resist +6%
| Flawed Topaz
| Level | 5 Weapons : +7 Energy Factor to Spell Damage | Armor : 2% Bonus to Energy Shields : Lightning Resist +12%
| Topaz
| Level | 12 Weapons : +8 Energy Factor to Spell Damage | Armor : 3% Bonus to Energy Shields : Lightning Resist +18%
| Flawless Topaz
| Level | 15 Weapons : +9 Energy Factor to Spell Damage | Armor : 4% Bonus to Energy Shields : Lightning Resist +24%
| Perfect Topaz
| Level | 18 Weapons : +10 Energy Factor to Spell Damage | Armor : 5% Bonus to Energy Shields : Lightning Resist +30%
| Chipped Turquoise
| Level | 1 Weapons : Regenerate Mana +2% | Armor : Poison Resist +4% Shields : 5% Better Chance of Getting Magic Items
| Flawed Turquoise
| Level | 5 Weapons : Regenerate Mana +4% | Armor : Poison Resist +8% Shields : 10% Better Chance of Getting Magic Items
| Turquoise
| Level | 12 Weapons : Regenerate Mana +6% | Armor : Poison Resist +12% Shields : 15% Better Chance of Getting Magic Items
| Flawless Turquoise
| Level | 15 Weapons : Regenerate Mana +8% | Armor : Poison Resist +16%, +1% to Maximum Poison Resist Shields : 20% Better Chance of Getting Magic Items
| Perfect Turquoise
| Level | 18 Weapons : Regenerate Mana +10% | Armor : Poison Resist +20%, +2% to Maximum Poison Resist Shields : 25% Better Chance of Getting Magic Items
| Chipped Rainbow Stone
| Level | 1 Weapons : 1% Crushing Blow | Armor : +4 Crafting Points Shields : 2% Curse Length Reduction
| Flawed Rainbow Stone
| Level | 5 Weapons : 2% Crushing Blow | Armor : +8 Crafting Points Shields : 4% Curse Length Reduction
| Rainbow Stone
| Level | 12 Weapons : 3% Crushing Blow | Armor : +12 Crafting Points Shields : 6% Curse Length Reduction
| Flawless Rainbow Stone
| Level | 15 Weapons : 4% Crushing Blow | Armor : +16 Crafting Points Shields : 8% Curse Length Reduction
| Perfect Rainbow Stone
| Level | 18 Weapons : 5% Crushing Blow | Armor : +20 Crafting Points Shields : 10% Curse Length Reduction
| Chipped Skull
| Level | 1 Weapons : +7% Enhanced Damage | Armor : +7% Enhanced Defense Shields : Poison Length Reduced by 1%
| Flawed Skull
| Level | 5 Weapons : +9% Enhanced Damage | Armor : +9% Enhanced Defense Shields : Poison Length Reduced by 2%
| Skull
| Level | 12 Weapons : +11% Enhanced Damage | Armor : +11% Enhanced Defense Shields : Poison Length Reduced by 3%
| Flawless Skull
| Level | 15 Weapons : +13% Enhanced Damage | Armor : +13% Enhanced Defense Shields : Poison Length Reduced by 4%
| Perfect Skull
| Level | 18 Weapons : +15% Enhanced Damage | Armor : +15% Enhanced Defense Shields : Poison Length Reduced by 5% |
Btw. The new gem types are not considered gems in some parts of the game; for example, you cannot upgrade them with Gem Shrines. This is a Diablo II engine limitation and cannot be fixed.
LIST OF RUNES
| El | Level 11 | Weapons : +1 to Light Radius Armor : +1 to Light Radius Shields : +1 to Light Radius | |
|---|---|---|---|
| Eld | Level 11 | Weapons : 25% Bonus to Attack Rating Armor : 25% Bonus to Attack Rating Shields : 25% Bonus to Attack Rating | |
| Tir | Level 13 | Weapons : +75% Extra Gold from Monsters Armor : +50% Extra Gold from Monsters Shields : +50% Extra Gold from Monsters | |
| Nef | Level 13 | Weapons : +15% Bonus to Poison Skill Duration Armor : +10% Bonus to Poison Skill Duration Shields : +10% Bonus to Poison Skill Duration | |
| Eth | Level 15 | Weapons : +10 to Maximum Damage Armor : +5 to Maximum Damage Shields : +5 to Maximum Damage | |
| Ith | Level 15 | Weapons : +15% Enhanced Damage Armor : +15% Enhanced Defense Shields : +15% Enhanced Defense | |
| Tal | Level 17 | Weapons : +5 to All Attributes Armor : +5 to All Attributes Shields : +5 to All Attributes | |
| Ral | Level 19 | Weapons : +5% to Fire Spell Damage Armor : +5% to Fire Spell Damage Shields : +5% to Fire Spell Damage | |
| Ort | Level 21 | Weapons : +5% to Lightning Spell Damage Armor : +5% to Lightning Spell Damage Shields : +5% to Lightning Spell Damage | |
| Thul | Level 23 | Weapons : +5% to Cold Spell Damage Armor : +5% to Cold Spell Damage Shields : +5% to Cold Spell Damage | |
| Amn | Level 25 | Weapons : 25% Damage Reflected Armor : 25% Damage Reflected Shields : 25% Damage Reflected | |
| Sol | Level 27 | Weapons : +5% to Poison Spell Damage Armor : +5% to Poison Spell Damage Shields : +5% to Poison Spell Damage | |
| Shael | Level 29 | Weapons : +10 to Strength Armor : +10 to Strength Shields : +10 to Strength | |
| Dol | Level 31 | Weapons : +10 to Minimum Damage Armor : +5 to Minimum Damage Shields : +5 to Minimum Damage | |
| Hel | Level 33 | Weapons : +5% to Physical/Magic Spell Damage Armor : +5% to Physical/Magic Spell Damage Shields : +5% to Physical/Magic Spell Damage | |
| Io | Level 35 | Weapons : 5% Bonus to Dexterity Armor : 5% Bonus to Dexterity Shields : 5% Bonus to Dexterity | |
| Lum | Level 37 | Weapons : +20% Better Chance of Getting Magic Items Armor : +20% Better Chance of Getting Magic Items Shields : +20% Better Chance of Getting Magic Items | |
| Ko | Level 39 | Weapons : 5% Bonus to Strength Armor : 5% Bonus to Strength Shields : 5% Bonus to Strength | |
| Fal | Level 41 | Weapons : +10 to Dexterity Armor : +10 to Dexterity Shields : +10 to Dexterity | |
| Lem | Level 43 | Weapons : +2% to Experience Gained Armor : +2% to Experience Gained Shields : +2% to Experience Gained | |
| Pul | Level 45 | Weapons : Fire Resist +40% Armor : Fire Resist +30% Shields : Fire Resist +30% | |
| Um | Level 47 | Weapons : 5% Bonus to Energy Armor : 5% Bonus to Energy Shields : 5% Bonus to Energy | |
| Mal | Level 49 | Weapons : Poison Resist +40% Armor : Poison Resist +30% Shields : Poison Resist +30% | |
| Ist | Level 51 | Weapons : +10 to Energy Armor : +10 to Energy Shields : +10 to Energy | |
| Gul | Level 53 | Weapons : Cold Resist +40% Armor : Cold Resist +30% Shields : Cold Resist +30% | |
| Vex | Level 55 | Weapons : Half Freeze Duration Armor : Half Freeze Duration Shields : Half Freeze Duration | |
| Ohm | Level 57 | Weapons : 5% Bonus to Vitality Armor : 5% Bonus to Vitality Shields : 5% Bonus to Vitality | |
| Lo | Level 59 | Weapons : Lightning Resist +40% Armor : Lightning Resist +30% Shields : Lightning Resist +30% | |
| Sur | Level 61 | Weapons : +25 Crafting Points Armor : +25 Crafting Points Shields : +25 Crafting Points | |
| Ber | Level 63 | Weapons : 10% Uninterruptable Attack Armor : 5% Uninterruptable Attack Shields : 5% Uninterruptable Attack | |
| Jah | Level 65 | Weapons : +25% Enhanced Damage Armor : +25% Enhanced Defense Shields : +25% Enhanced Defense | |
| Cham | Level 67 | Weapons : +10 to Vitality Armor : +10 to Vitality Shields : +10 to Vitality | |
| Zod | Level 69 | Weapons : Slows Melee Target by 5% Armor : Slows Attacker by 5% Shields : Slows Attacker by 5% | |
| Sha | Level 72 | Weapons : 15% Increased Attack Speed Armor : 15% Increased Attack Speed Shields : 15% Increased Attack Speed | |
| Lah | Level 75 | Weapons : 3% Bonus to All Attributes Armor : 3% Bonus to All Attributes Shields : 3% Bonus to All Attributes | |
| Kur | Level 78 | Weapons : 15% Faster Run/Walk Armor : 15% Faster Run/Walk Shields : 15% Faster Run/Walk | |
| Ix | Level 81 | Weapons : 15% Faster Cast Rate Armor : 15% Faster Cast Rate Shields : 15% Faster Cast Rate | |
| Thur | Level 84 | Weapons : 50% Bonus to Summoned Minion Attack Rating Armor : 50% Bonus to Summoned Minion Attack Rating Shields : 50% Bonus to Summoned Minion Attack Rating | |
| Nas | Level 87 | Weapons : +10% Bonus to Summoned Minion Life Armor : +10% Bonus to Summoned Minion Life Shields : +10% Bonus to Summoned Minion Life | |
| Ath | Level 90 | Weapons : 15% Faster Hit Recovery Armor : 15% Faster Hit Recovery Shields : 15% Faster Hit Recovery | |
| Kra | Level 94 | Weapons : +5% Bonus to Summoned Minion Resistances Armor : +5% Bonus to Summoned Minion Resistances Shields : +5% Bonus to Summoned Minion Resistances | |
| Vith | Level 98 | Weapons : +5% Increased Healing Rate from Apples Armor : +5% Increased Healing Rate from Apples Shields : +5% Increased Healing Rate from Apples | |
| No | Level 100 | Weapons : 15% Faster Block Rate Armor : 15% Faster Block Rate Shields : 15% Faster Block Rate | |
| Yul | Level 100 | Weapons : +10% Bonus to Summoned Minion Damage Armor : +10% Bonus to Summoned Minion Damage Shields : +10% Bonus to Summoned Minion Damage | |
| Thai | Level 100 | Weapons : All Resists +15% Armor : All Resists +15% Shields : All Resists +15% | |
| Rha | Level 100 | Weapons : +200 Defense Armor : +200 Defense Shields : +200 Defense | |
| Xar | Level 100 | Weapons : Increase Maximum Life and Mana 2% Armor : Increase Maximum Life and Mana 2% Shields : Increase Maximum Life and Mana 2% | |
| Nih | Level 100 | Weapons : 10% Bonus to Buff/Debuff/Cold Skill Duration Armor : 10% Bonus to Buff/Debuff/Cold Skill Duration Shields : 10% Bonus to Buff/Debuff/Cold Skill Duration | |
| Lai | Level 100 | Weapons : Enhanced Weapon Damage +5% Armor : Enhanced Weapon Damage +5% Shields : Enhanced Weapon Damage +5% | |
| On | Level 100 | Weapons : Total Character Defense Plus 5% Armor : Total Character Defense Plus 5% Shields : Total Character Defense Plus 5% |
Fauztinville Great Runes
These three runes are very rare and can only be found in the Fauztinville and Yshari Sanctum uberlevels
on Destruction difficulty. Their chance to drop ratio is 3:2:1, from first to last.
See THIS PAGE and THIS PAGE for more information about Fauztinville and the Yshari Sanctum.
| Taha | Level 100 | Weapons : +40 to Maximum Damage Armor : +20 to Maximum Damage Shields : +20 to Maximum Damage | |
|---|---|---|---|
| Ghal | Level 100 | Weapons : +15 Energy Factor to Spell Damage Armor : +5 Energy Factor to Spell Damage Shields : +5 Energy Factor to Spell Damage | |
| Qor | Level 100 | Weapons : Requirements -12% Armor : Requirements -12% Shields : Requirements -12% |
Toraja Great Runes
Like the Fauztinville Great Runes, these are very rare and can only be found in the
Toraja and Yshari Sanctum uberquests on Destruction difficulty. Their chance to drop ratio is 3:2:1, from first to last.
See THIS PAGE and THIS PAGE for more information about Toraja and the Yshari Sanctum.
| Krys | Level 100 | Weapons : Target Takes Additional Damage of 100 Armor : Target Takes Additional Damage of 25 Shields : Target Takes Additional Damage of 25 | |
|---|---|---|---|
| Auhe | Level 100 | Weapons : Regenerate Mana +15% Armor : Regenerate Mana +5% Shields : Regenerate Mana +5% | |
| Sha'ad | Level 100 | Weapons : +30% Enhanced Damage Armor : +30% Enhanced Defense Shields : +30% Enhanced Defense |
Secret Elemental Runes
On Destruction difficulty, in the Unformed Land uberlevel, you can come by the Elemental Stones and Unknown Skulls 1. They all have the same chance to drop.
| Unknown Skull 1 |
|---|
You can cube them to get the Elemental Runes and Kabraxis' Stone rune:
See THIS PAGE for more information about the Unformed Land uberlevel.
| Earth | Level 100 | Weapons : Adds 10-20 damage Armor : Adds 5-10 damage Shields : Adds 5-10 damage | |
|---|---|---|---|
| Magic | Level 100 | Weapons : Adds 100-200 magic damage Armor : Adds 50-100 magic damage Shields : Adds 50-100 magic damage | |
| Fire | Level 100 | Weapons : Adds 100-200 fire damage Armor : Adds 50-100 fire damage Shields : Adds 50-100 fire damage | |
| Ice | Level 100 | Weapons : Adds 100-200 cold damage Armor : Adds 50-100 cold damage Shields : Adds 50-100 cold damage | |
| Light | Level 100 | Weapons : Adds 100-200 lightning damage Armor : Adds 50-100 lightning damage Shields : Adds 50-100 lightning damage | |
| Poison | Level 100 | Weapons : Adds 200-400 poison damage over 1 second Armor : Adds 100-200 poison damage over 1 second Shields : Adds 100-200 poison damage over 1 second | |
| Kabraxis' Stone | Level 120 | (Can't be Unsocketed) Weapons : +50% Enhanced Damage Armor : +50% Enhanced Defense Shields : +50% Enhanced Defense |


Filter
is
is not
Value Filter
in
out
Add Composite Scenario Column
Format
Column
Format
Edit
New
Format Configuration
Key
Suggested Values:
(n/a).
Value
Display
Group
Color
Save
Delete
Aggregate
mean
geomean
over
Add as new value column
Normalise
to specific scenario
=
to best value
Grouping
Settings
Normalise to corresponding normaliser value
Normalise to specific value in normaliser
Invert normalised result (speedup).
Graph
Format
Edit
New
Series
Pivot
Values
Graph each unique scenario separately
Include incomplete rows in aggregates
Graph Configuration
Key
Parent
Save
Delete
Hide
Pipeline
{% for pipeline in pipelines %}
{{ pipeline.name }}
{% endfor %}
Load
Delete
New
Short URL
Log Files
{% for log in logs %}
{{ log }}
{% endfor %}
Scenario Columns
[all]
[none]
Value Columns
Derived Value Columns
Add Block
Comp. Scenario
Filter
Value Filter
Aggregate
Normalise
Graph
Format
Save Pipeline
Save
Tools
Purge Cache
Reinstall Default Formats
Pause automatic loading
Tabulating
[LOGFILE]
(
% complete)
Loading...
There are
0
rows of results. Rendering the table may hang your browser.
Load anyway
Load without sorting (faster)


16 sklearn
This is a machine learning library.
16.2 The Library
sklearn does not automatically import its subpackages. Therefore all subpakcages must be specifically loaded before use.
# Sample Data
from sklearn import datasets
# Model Selection
from sklearn.model_selection import train_test_split
from sklearn.model_selection import KFold
from sklearn.model_selection import LeaveOneOut
from sklearn.model_selection import cross_validate
# Preprocessing
# from sklearn.preprocessing import Imputer
from sklearn.impute import SimpleImputer
from sklearn.preprocessing import MinMaxScaler
from sklearn.preprocessing import StandardScaler
from sklearn.preprocessing import Normalizer
from sklearn.preprocessing import PolynomialFeatures
# Model and Pipeline
from sklearn.linear_model import LinearRegression,Lasso
from sklearn.pipeline import make_pipeline
# Measurement
from sklearn.metrics import *
import statsmodels.formula.api as smf
16.3 Model Fitting
16.3.1 Underfitting
- The model does not fit the training data and therefore misses the trends in the data
- The model cannot be generalized to new data, this is usually the result of a very simple model (not enough predictors/independent variables)
- The model will have poor predictive ability
- For example, we fit a linear model (like linear regression) to data that is not linear
16.3.2 Overfitting
- The model has trained ?too well? and is now, well, fit too closely to the training dataset
- The model is too complex (i.e. too many features/variables compared to the number of observations)
- The model will be very accurate on the training data but will probably be very not accurate on untrained or new data
- The model is not generalized (or not AS generalized), meaning you can generalize the results
- The model learns or describes the ?noise? in the training data instead of the actual relationships between variables in the data
16.4 Model Tuning
- A highly complex model tend to overfit
- A too flexible model tend to underfit
Complexity can be reduced by: - Less features - Less degree of polynomial features - Apply generalization (tuning hyperparameters)
16.6 Built-in Datasets
sklearn included some popular datasets to play with
Each dataset is of type Bunch.
It has useful data (array) in the form of properties:
- keys (display all data availabe within the dataset)
- data (common)
- target (common)
- DESCR (common)
- feature_names (some dataset)
- target_names (some dataset)
- images (some dataset)
16.6.1 diabetes (regression)
<IP_ADDRESS> Load Dataset
= datasets.load_diabetes()
diabetes print (type(diabetes))
#:> <class 'sklearn.utils.Bunch'>
<IP_ADDRESS> keys
diabetes.keys()
#:> dict_keys(['data', 'target', 'frame', 'DESCR', 'feature_names', 'data_filename', 'target_filename'])
<IP_ADDRESS> Features and Target
.data = features - two dimension array
.target = target - one dimension array
print (type(diabetes.data))
#:> <class 'numpy.ndarray'>
print (type(diabetes.target))
#:> <class 'numpy.ndarray'>
print (diabetes.data.shape)
#:> (442, 10)
print (diabetes.target.shape)
#:> (442,)
16.6.2 digits (Classification)
This is a copy of the test set of the UCI ML hand-written digits datasets
= datasets.load_digits()
digits print (type(digits))
#:> <class 'sklearn.utils.Bunch'>
print (type(digits.data))
#:> <class 'numpy.ndarray'>
digits.keys()
#:> dict_keys(['data', 'target', 'frame', 'feature_names', 'target_names', 'images', 'DESCR'])
digits.target_names
#:> array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
<IP_ADDRESS> Images
- images is 3 dimensional array
- There are 1797 samples, each sample is 8x8 pixels
digits.images.shape
#:> (1797, 8, 8)
type(digits.images)
#:> <class 'numpy.ndarray'>
Each element represent the data that make its target
print (digits.target[100])
#:> 4
print (digits.images[100])
#:> [[ 0. 0. 0. 2. 13. 0. 0. 0.]
#:> [ 0. 0. 0. 8. 15. 0. 0. 0.]
#:> [ 0. 0. 5. 16. 5. 2. 0. 0.]
#:> [ 0. 0. 15. 12. 1. 16. 4. 0.]
#:> [ 0. 4. 16. 2. 9. 16. 8. 0.]
#:> [ 0. 0. 10. 14. 16. 16. 4. 0.]
#:> [ 0. 0. 0. 0. 13. 8. 0. 0.]
#:> [ 0. 0. 0. 0. 13. 6. 0. 0.]]
100]) plt.matshow(digits.images[
16.6.3 iris (Classification)
= datasets.load_iris() iris
iris.keys()
#:> dict_keys(['data', 'target', 'frame', 'target_names', 'DESCR', 'feature_names', 'filename'])
<IP_ADDRESS> Feature Names
iris.feature_names
#:> ['sepal length (cm)', 'sepal width (cm)', 'petal length (cm)', 'petal width (cm)']
<IP_ADDRESS> target
iris.target_names
#:> array(['setosa', 'versicolor', 'virginica'], dtype='<U10')
iris.target
#:> array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
#:> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
#:> 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
#:> 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
#:> 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
#:> 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
#:> 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2])
16.7 Train Test Data Splitting
16.7.1 Sample Data
Generate 100 rows of data, with 3x features (X1,X2,X3), and one dependant variable (Y)
= 21 # number of samples
n = 5 # intercept value
I = np.random.randint( 1,20, n) # Error
E = np.random.randint( 1,n+1, n)
x1 = np.random.randint( 1,n+1, n)
x2 = np.random.randint( 1,n+1, n)
x3 = 0.1*x1 + 0.2*x2 + 0.3*x3 + E + I
y = pd.DataFrame({
mydf 'y':y,
'x1':x1,
'x2':x2,
'x3':x3
}) mydf.shape
#:> (21, 4)
16.7.2 One Time Split
sklearn::train_test_split() has two forms: - Take one DF, split into 2 DF (most of sklearn modeling use this method - Take two DFs, split into 4 DF
mydf.head()
#:> y x1 x2 x3
#:> 0 28.2 4 17 8
#:> 1 19.8 3 12 7
#:> 2 18.4 10 10 8
#:> 3 20.0 20 18 8
#:> 4 19.4 20 6 14
<IP_ADDRESS> Method 1: Split One Dataframe Into Two (Train & Test)
traindf, testdf = train_test_split( df, test_size=, random_state= )
# random_state : seed number (integer), optional
# test_size : fraction of 1, 0.2 means 20%
= train_test_split(mydf,test_size=0.2, random_state=25) traindf, testdf
print (len(traindf))
#:> 16
print (len(testdf))
#:> 5
<IP_ADDRESS> Method 2: Split Two DataFrame (X,Y) into Four x_train/test, y_train/test
x_train, x_test, y_train, y_test = train_test_split( X,Y, test_size=, random_state= )
# random_state : seed number (integer), optional
# test_size : fraction of 1, 0.2 means 20%
Split DataFrame into X and Y First
= ['x1','x2','x3']
feature_cols = mydf[feature_cols]
X = mydf.y Y
Then Split X/Y into x_train/test, y_train/test
= train_test_split( X,Y, test_size=0.2, random_state=25)
x_train, x_test, y_train, y_test print (len(x_train))
#:> 16
print (len(x_test))
#:> 5
16.7.3 K-Fold
KFold(n_splits=3, shuffle=False, random_state=None)
suffle=False (default), meaning index number is taken continously
= KFold(n_splits=7) kf
for train_index, test_index in kf.split(X):
print (train_index, test_index)
#:> [ 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20] [0 1 2]
#:> [ 0 1 2 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20] [3 4 5]
#:> [ 0 1 2 3 4 5 9 10 11 12 13 14 15 16 17 18 19 20] [6 7 8]
#:> [ 0 1 2 3 4 5 6 7 8 12 13 14 15 16 17 18 19 20] [ 9 10 11]
#:> [ 0 1 2 3 4 5 6 7 8 9 10 11 15 16 17 18 19 20] [12 13 14]
#:> [ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 18 19 20] [15 16 17]
#:> [ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17] [18 19 20]
shuffle=True
= KFold(n_splits=7, shuffle=True) kf
for train_index, test_index in kf.split(X):
print (train_index, test_index)
#:> [ 0 1 2 3 4 5 7 8 9 10 11 12 13 15 16 17 18 19] [ 6 14 20]
#:> [ 0 1 2 3 4 5 6 8 10 11 12 13 14 16 17 18 19 20] [ 7 9 15]
#:> [ 0 2 3 4 5 6 7 8 9 10 11 12 14 15 16 17 19 20] [ 1 13 18]
#:> [ 0 1 2 3 4 5 6 7 9 10 13 14 15 16 17 18 19 20] [ 8 11 12]
#:> [ 0 1 2 3 4 5 6 7 8 9 11 12 13 14 15 18 19 20] [10 16 17]
#:> [ 1 2 3 5 6 7 8 9 10 11 12 13 14 15 16 17 18 20] [ 0 4 19]
#:> [ 0 1 4 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20] [2 3 5]
16.7.4 Leave One Out
- For a dataset of N rows, Leave One Out will split N-1 times, each time leaving one row as test, remaning as training set.
- Due to the high number of test sets (which is the same as the number of samples-1) this cross-validation method can be very costly. For large datasets one should favor KFold.
= LeaveOneOut() loo
for train_index, test_index in loo.split(X):
print (train_index, test_index)
#:> [ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20] [0]
#:> [ 0 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20] [1]
#:> [ 0 1 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20] [2]
#:> [ 0 1 2 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20] [3]
#:> [ 0 1 2 3 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20] [4]
#:> [ 0 1 2 3 4 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20] [5]
#:> [ 0 1 2 3 4 5 7 8 9 10 11 12 13 14 15 16 17 18 19 20] [6]
#:> [ 0 1 2 3 4 5 6 8 9 10 11 12 13 14 15 16 17 18 19 20] [7]
#:> [ 0 1 2 3 4 5 6 7 9 10 11 12 13 14 15 16 17 18 19 20] [8]
#:> [ 0 1 2 3 4 5 6 7 8 10 11 12 13 14 15 16 17 18 19 20] [9]
#:> [ 0 1 2 3 4 5 6 7 8 9 11 12 13 14 15 16 17 18 19 20] [10]
#:> [ 0 1 2 3 4 5 6 7 8 9 10 12 13 14 15 16 17 18 19 20] [11]
#:> [ 0 1 2 3 4 5 6 7 8 9 10 11 13 14 15 16 17 18 19 20] [12]
#:> [ 0 1 2 3 4 5 6 7 8 9 10 11 12 14 15 16 17 18 19 20] [13]
#:> [ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 15 16 17 18 19 20] [14]
#:> [ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 16 17 18 19 20] [15]
#:> [ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 17 18 19 20] [16]
#:> [ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 18 19 20] [17]
#:> [ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 19 20] [18]
#:> [ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 20] [19]
#:> [ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19] [20]
X
#:> x1 x2 x3
#:> 0 4 17 8
#:> 1 3 12 7
#:> 2 10 10 8
#:> 3 20 18 8
#:> 4 20 6 14
#:> .. .. .. ..
#:> 16 17 5 10
#:> 17 10 16 12
#:> 18 3 12 1
#:> 19 3 3 5
#:> 20 2 8 5
#:>
#:> [21 rows x 3 columns]
16.8 Polynomial Transform
This can be used as part of feature engineering, to introduce new features for data that seems to fit with quadradic model.
16.8.1 Single Variable
<IP_ADDRESS> Sample Data
Data must be 2-D before polynomial features can be applied. Code below convert 1D array into 2D array.
= np.array([1, 2, 3, 4, 5])
x = x[:,np.newaxis]
X X
#:> array([[1],
#:> [2],
#:> [3],
#:> [4],
#:> [5]])
<IP_ADDRESS> Degree 1
One Degree means maintain original features. No new features is created.
=1, include_bias=False).fit_transform(X) PolynomialFeatures(degree
#:> array([[1.],
#:> [2.],
#:> [3.],
#:> [4.],
#:> [5.]])
<IP_ADDRESS> Degree 2
Degree-1 original feature: x
Degree-2 additional features: x^2
=2, include_bias=False).fit_transform(X) PolynomialFeatures(degree
#:> array([[ 1., 1.],
#:> [ 2., 4.],
#:> [ 3., 9.],
#:> [ 4., 16.],
#:> [ 5., 25.]])
<IP_ADDRESS> Degree 3
Degree-1 original feature: x
Degree-2 additional features: x^2
Degree-3 additional features: x^3
=3, include_bias=False).fit_transform(X) PolynomialFeatures(degree
#:> array([[ 1., 1., 1.],
#:> [ 2., 4., 8.],
#:> [ 3., 9., 27.],
#:> [ 4., 16., 64.],
#:> [ 5., 25., 125.]])
<IP_ADDRESS> Degree 4
Degree-1 original feature: x
Degree-2 additional features: x^2
Degree-3 additional features: x^3
Degree-3 additional features: x^4
=4, include_bias=False).fit_transform(X) PolynomialFeatures(degree
#:> array([[ 1., 1., 1., 1.],
#:> [ 2., 4., 8., 16.],
#:> [ 3., 9., 27., 81.],
#:> [ 4., 16., 64., 256.],
#:> [ 5., 25., 125., 625.]])
16.8.2 Two Variables
<IP_ADDRESS> Sample Data
= pd.DataFrame( {'x1': [1, 2, 3, 4, 5 ],
X 'x2': [6, 7, 8, 9, 10]})
X
#:> x1 x2
#:> 0 1 6
#:> 1 2 7
#:> 2 3 8
#:> 3 4 9
#:> 4 5 10
<IP_ADDRESS> Degree 2
Degree-1 original features: x1, x2
Degree-2 additional features: x1^2, x2^2, x1:x2
=2, include_bias=False).fit_transform(X) PolynomialFeatures(degree
#:> array([[ 1., 6., 1., 6., 36.],
#:> [ 2., 7., 4., 14., 49.],
#:> [ 3., 8., 9., 24., 64.],
#:> [ 4., 9., 16., 36., 81.],
#:> [ 5., 10., 25., 50., 100.]])
<IP_ADDRESS> Degree 3
Degree-1 original features: x1, x2
Degree-2 additional features: x1^2, x2^2, x1:x2
Degree-3 additional features: x1^3, x2^3 x1:x2^2 x2:x1^2
=3, include_bias=False).fit_transform(X) PolynomialFeatures(degree
#:> array([[ 1., 6., 1., 6., 36., 1., 6., 36., 216.],
#:> [ 2., 7., 4., 14., 49., 8., 28., 98., 343.],
#:> [ 3., 8., 9., 24., 64., 27., 72., 192., 512.],
#:> [ 4., 9., 16., 36., 81., 64., 144., 324., 729.],
#:> [ 5., 10., 25., 50., 100., 125., 250., 500., 1000.]])
16.9 Imputation of Missing Data
16.10 Scaling
It is possible that some insignificant variable with larger range will be dominating the objective function.
We can remove this problem by scaling down all the features to a same range.
16.10.1 Sample Data
=mydf.filter(like='x')[:5]
X X
#:> x1 x2 x3
#:> 0 4 17 8
#:> 1 3 12 7
#:> 2 10 10 8
#:> 3 20 18 8
#:> 4 20 6 14
16.10.2 MinMax Scaler
MinMaxScaler( feature_range(0,1), copy=True )
# default feature range (output result) from 0 to 1
# default return a copy of new array, copy=False will inplace original array
Define Scaler Object
= MinMaxScaler() scaler
Transform Data
scaler.fit_transform(X)
#:> array([[0.05882353, 0.91666667, 0.14285714],
#:> [0. , 0.5 , 0. ],
#:> [0.41176471, 0.33333333, 0.14285714],
#:> [1. , 1. , 0.14285714],
#:> [1. , 0. , 1. ]])
Scaler Attributes
data_min_: minimum value of the feature (before scaling)
data_max_: maximum value of the feature (before scaling)
list(zip(scaler.data_min_, scaler.data_max_)),
pd.DataFrame(=['data_min','data_max'],
columns=X.columns) index
#:> data_min data_max
#:> x1 3.0 20.0
#:> x2 6.0 18.0
#:> x3 7.0 14.0
16.10.3 Standard Scaler
It is most suitable for techniques that assume a Gaussian distribution in the input variables and work better with rescaled data, such as linear regression, logistic regression and linear discriminate analysis.
StandardScaler(copy=True, with_mean=True, with_std=True)
# copy=True : return a copy of data, instead of inplace
# with_mean=True : centre all features by substracting with its mean
# with_std=True : centre all features by dividing with its std
Define Scaler Object
= StandardScaler() scaler
Transform Data
scaler.fit_transform(X)
#:> array([[-0.99745315, 0.98782916, -0.39528471],
#:> [-1.13224412, -0.13470398, -0.79056942],
#:> [-0.18870735, -0.58371723, -0.39528471],
#:> [ 1.15920231, 1.21233579, -0.39528471],
#:> [ 1.15920231, -1.48174374, 1.97642354]])
Scaler Attributes
After the data transformation step above, scaler will have the mean and variance information for each feature.
list(zip(scaler.mean_, scaler.var_)),
pd.DataFrame(=['mean','variance'],
columns=X.columns) index
#:> mean variance
#:> x1 11.4 55.04
#:> x2 12.6 19.84
#:> x3 9.0 6.40
16.11 Pipeline
With any of the preceding examples, it can quickly become tedious to do the transformations by hand, especially if you wish to string together multiple steps. For example, we might want a processing pipeline that looks something like this:
-
Impute missing values using the mean
-
Transform features to quadratic
- Fit a linear regression
make_pipeline takes list of functions as parameters. When calling fit() on a pipeline object, these functions will be performed in sequential with data flow from one function to another.
make_pipeline (
function_1 (),
function_2 (),
function_3 ()
)
16.11.1 Sample Data
X
#:> x1 x2 x3
#:> 0 4 17 8
#:> 1 3 12 7
#:> 2 10 10 8
#:> 3 20 18 8
#:> 4 20 6 14
y
#:> array([14, 16, -1, 8, -5])
16.11.2 Create Pipeline
= make_pipeline (
my_pipe ='mean'),
SimpleImputer (strategy=2),
PolynomialFeatures (degree
LinearRegression ()
)type(my_pipe)
#:> <class 'sklearn.pipeline.Pipeline'>
my_pipe
#:> Pipeline(steps=[('simpleimputer', SimpleImputer()),
#:> ('polynomialfeatures', PolynomialFeatures()),
#:> ('linearregression', LinearRegression())])
16.11.3 Executing Pipeline
# execute the pipeline my_pipe.fit( X, y)
#:> Pipeline(steps=[('simpleimputer', SimpleImputer()),
#:> ('polynomialfeatures', PolynomialFeatures()),
#:> ('linearregression', LinearRegression())])
print (y)
#:> [14 16 -1 8 -5]
print (my_pipe.predict(X))
#:> [14. 16. -1. 8. -5.]
type(my_pipe)
#:> <class 'sklearn.pipeline.Pipeline'>
16.12 Cross Validation
16.12.3 Run Cross Validation
Single Scorer
Use default scorer of the estimator (if available)
= Lasso()
lasso = cross_validate(lasso, X,y,cv=kf,
cv_results1 =False) return_train_score
Multiple Scorer
Specify the scorer
http://scikit-learn.org/stable/modules/model_evaluation.html#scoring-parameter
= cross_validate(lasso, X,y,cv=kf,
cv_results2 =("neg_mean_absolute_error","neg_mean_squared_error","r2"),
scoring=False) return_train_score
16.12.4 The Result
Result is a dictionary
cv_results1.keys()
#:> dict_keys(['fit_time', 'score_time', 'test_score'])
cv_results2.keys()
#:> dict_keys(['fit_time', 'score_time', 'test_neg_mean_absolute_error', 'test_neg_mean_squared_error', 'test_r2'])
cv_results1
#:> {'fit_time': array([0.00172329, 0.0009141 , 0.00079846, 0.0021131 , 0.00171661]), 'score_time': array([0.0008173 , 0.00063205, 0.00058079, 0.00156474, 0.000808 ]), 'test_score': array([0.28349047, 0.35157959, 0.3533813 , 0.33481474, 0.36453281])}
cv_results2
#:> {'fit_time': array([0.00099969, 0.00148869, 0.0009346 , 0.00071526, 0.00097752]), 'score_time': array([0.00457335, 0.00144625, 0.00123525, 0.00114274, 0.00107718]), 'test_neg_mean_absolute_error': array([-50.09003423, -52.54110842, -55.02813846, -50.81121806,
#:> -55.60471593]), 'test_neg_mean_squared_error': array([-3491.74009759, -4113.86002091, -4046.91780932, -3489.74018715,
#:> -4111.92401769]), 'test_r2': array([0.28349047, 0.35157959, 0.3533813 , 0.33481474, 0.36453281])}


By default this job will spider the first context defined in the environment and so none of the parameters are mandatory.
- type: spider # The traditional spider - fast but doesnt handle modern apps so well parameters: context: # String: Name of the context to spider, default: first context user: # String: An optional user to use for authentication, must be defined in the env url: # String: Url to start spidering from, default: first context URL maxDuration: # Int: The max time in minutes the spider will be allowed to run for, default: 0 unlimited maxDepth: # Int: The maximum tree depth to explore, default 5 maxChildren: # Int: The maximum number of children to add to each node in the tree acceptCookies: # Bool: Whether the spider will accept cookies, default: true handleODataParametersVisited: # Bool: Whether the spider will handle OData responses, default: false handleParameters: # Enum [ignore_completely, ignore_value, use_all]: How query string parameters are used when checking if a URI has already been visited, default: use_all maxParseSizeBytes: # Int: The max size of a response that will be parsed, default: 2621440 - 2.5 Mb parseComments: # Bool: Whether the spider will parse HTML comments in order to find URLs, default: true parseGit: # Bool: Whether the spider will parse Git metadata in order to find URLs, default: false parseRobotsTxt: # Bool: Whether the spider will parse 'robots.txt' files in order to find URLs, default: true parseSitemapXml: # Bool: Whether the spider will parse 'sitemap.xml' files in order to find URLs, default: true parseSVNEntries: # Bool: Whether the spider will parse SVN metadata in order to find URLs, default: false postForm: # Bool: Whether the spider will submit POST forms, default: true processForm: # Bool: Whether the spider will process forms, default: true requestWaitTime: # Int: The time between the requests sent to a server in milliseconds, default: 200 sendRefererHeader: # Bool: Whether the spider will send the referer header, default: true threadCount: # Int: The number of spider threads, default: 2 userAgent: # String: The user agent to use in requests, default: '' - use the default ZAP one tests: - name: 'At least 100 URLs found' # String: Name of the test, default: statistic + operator + value type: 'stats' # String: Type of test, only 'stats' is supported for now statistic: 'automation.spider.urls.added' # String: Name of an integer / long statistic, currently supported: 'automation.spider.urls.added' operator: '>=' # String ['==', '!=', '>=', '>', '<', '<=']: Operator used for testing value: 100 # Int: Change this to the number of URLs you expect to find onFail: 'info' # String: One of 'warn', 'error', 'info', mandatory


{% extends "events/base.html" %} {% block page_title %}About | {{ super() }}{% endblock %} {% block page_id %}about{% endblock %} {% block page_class %}{{ super() }} section-campaign{% endblock %} {% block content %}
We're building a generation of webmakers. First step: invite people everywhere to MEET up to MAKE something cool and LEARN how the code behind the web works. It's called the Summer Code Party and it starts June 23rd. Mozilla and dozens of other organizations are getting together to make this happen.
Want to create a prettier template for your blog? Or make your latest YouTube video cooler? Or just learn a bit of HTML by remixing your favorite webpage? We'll have tools, tutorials and activites to help. Get started by creating an event or see if there's one near you already.
Meetups and events where you learn how to make things for the web.
June 23 - Sept 23, kicking off with a Global Weekend of Code.
Anywhere. Your kitchen table. Your office. Your local library.
We believe everyone should know how to create and code on the web.
Organize a meet-up. Volunteer to teach. Or become a partner.
Follow @Mozilla for updates
#MozParty is the main Summer Code Party hashtag
Need help? Just tag your tweet with #MozHelp
Email us at<EMAIL_ADDRESS>with questions or links to awesome stuff you've made.
Tag your posts and photos with "mozparty"
Like Mozilla on Facebook for updates. Add your comments and questions.
Join the Summer Code Party Facebook group.
Feel free to start a local group of summer code partyers to coordinate near you.
On IRC? Come on over to irc.mozilla.org and join the #MozParty channel.
It's Mozilla's big summer campaign. Kicking off June 23rd and running all summer long. It's all about helping people learn the basics of coding and the web by making and building together. With tools, resources and events that make it easy and social. It's 100% free, open and fun.
Anyone who wants to learn the web, learn how to code and make stuff with new tools. Or just increase your general web literacy.


A million more Tokyo 2020 tickets on sale in new lottery
Tokyo - Tokyo Olympics organisers said on Friday they will put around a million more tickets for the 2020 Games on sale this month, with seats up for grabs at the boxing for the first time.
But tickets for the Olympic marathon, which is controversially being shifted from Tokyo to the northern city of Sapporo over heat fears, will not be on offer.
The second online lottery, restricted to residents of Japan, will run from November 13 to 26 and will be the last time tickets are offered exclusively for residents of the host nation.
Additional rounds of sales will begin in the spring.
The lottery will for the first time include tickets for boxing, which came close to being excluded from the Games after its governing body was suspended from organising the sport's competition at the Olympics.
Tickets will not be available however for the marathon as organisers work out how to handle ticketing after shifting the race to Sapporo.
Some tickets for the event were sold before the move was announced, and organisers are also mulling how to handle compensation.
Officials said they were concerned about an apparent slowing in enthusiasm for tickets after an initial surge in applications during the first round.
Masaaki Komiya, a vice director-general with the organising committee, said he was worried some "distance" might be developing between locals and the Games.
"Just before this (second lottery), the move of the marathon competition arose," Komiya said.
"I realise various opinions are being expressed. But our resolve to deliver exciting Games remains unchanged," he said.
The IOC's decision to move the marathon, as well as the race-walking event, sparked anger in Tokyo, with the governor citing public disappointment in her staunch opposition to the decision.
Officials did not offer details on any new security measures for the new lottery round, despite having had to invalidate nearly 7 000 tickets from the first round after discovering they were purchased with fraudulent identities through an online lottery.


Catholic Crossroads
Home
Prayers
Bible
Spiritual Books
Church Calendar
Learning
The Church Calendar
"All things have their season, and in their times all things pass under heaven."
Ecclesiastes 3:1
2021 Liturgical Calendar for the Dioceses of the United States of America (PDF)
Daily Scripture Readings
Online Church Calendar
Currently in the calendar...


WebScraper and MongoDB site. Pull info from hiFrucotse and add custom notes.
chat_bubble_outline
developer_modePhilly Neighborhoods
2nd full-stack app deployed on Heroku. This group project makes use of mysql, google maps, and handlebars.
chat_bubble_outline
developer_modeBelay Partners
Find A climbing partner on this app live on Heroku. This application makes use of Express for route handling.
computer
developer_modeLiri App
Liri is a Node project and runs in your terminal. Install node and packages to try it out.
computer
developer_modeTrips-To-Plan
This was my first group project. Trips To Plan uses amadeus and eventful APIs to gather information and google
maps for displaying results.
local_airport
developer_modeGiphy
This app uses AJAX calls to the Giphy API and generates content on the fly. Oh, if only all API's were as
kind to new developers as the Giphy API.
favorite
developer_modeTrivia Game
The Trivia Game was an exercise in using the setTimout() method. I hope you're well aquainted with alternative
rock from the 90s.
access_time
developer_modeHangman
Hangman Project was a lot of fun aside from subjecting myself to the Halloween theme song repeatedly.
near_me
Past Projects
developer_modeMedical Device Registry
The Medical Device Registry was an application that correlated the FDA's medical device databases: approavals,
Recalls, MedSun and MAUDE reports. The site was built using an SQL datase. I took the live site down in
2016 when the FDA created the UDI and put forth APIs.
assessment
developer_modeClincial Trials
As a BREF project, I hired Philadelphia-based Azavea to develop a site based on the government site clincialtrials.gov.
We wanted to add features improve the mapping visualization. Something to aspire to!
near_me
developer_modeMedical Center Locator
The EMCL app was created by BREF and built by the team at Azavea. The iOS app returned location based results
on for medical emergencies using my currated list of specialty centers.
near_me


PAPERBACK ROMANCE (aka LUCKY BREAK)
A Film Review by James Berardinelli
RATING (0 TO 10): 7.0 Alternative Scale: *** out of ****
Australia, 1994 U.S. Release Date: 8/97 (limited) Running Length: 1:27 MPAA Classification: R (Sexual situations, nudity) Theatrical Aspect Ratio: 1.66:1
Cast: Gia Carides, Anthony LaPaglia, Rebecca Gibney, Sioban Tuke, Jacek Koman Director: Ben Lewin Producer: Bob Weis Screenplay: Ben Lewin Cinematography: Vincent Monton Music: Paul Grabowski U.S. Distributor: The Samuel Goldwyn Company
The phrase "paperback romance" generates all sorts of vivid images: lusty, well-endowed women; men with "ruggedly handsome features" and "well-chiseled muscles"; exotic locations; and, most importantly, plenty of steamy sex. The purple prose of these so-called bodice-rippers is appreciated and admired by millions, yet, by its very nature, it's ripe for the kind of satire evident in PAPERBACK ROMANCE. However, not wanting to isolate an important element of its audience, the film goes for a gentle parody rather than something more vicious. Like PULP FICTION's Quentin Tarantino, writer/director Ben Lewin is more interested in having a little over-the-top fun within the genre than blatantly mocking it.
As such, PAPERBACK ROMANCE can be considered a legitimate romantic comedy, although it's a little too quirky to be lumped in with most of the run-of-the-mill entries. The summer of 1997 has produced three such offbeat offerings -- PAPERBACK ROMANCE arrives in the wake of ADDICTED TO LOVE and MY BEST FRIEND'S WEDDING, both of which took roads less traveled. Of course, it's worth noting that PAPERBACK ROMANCE isn't really a 1997 movie (although that's when it's being released in the United States). In fact, it's three years old, having sat on The Samuel Goldwyn Company's shelves while the distributor went through bankruptcy proceedings.
Our heroine is Sophie (played by the delightful Gia Carides), an author of romance novels. She's a dreamer who takes refuge in her writing; since her love life is barren, she kisses through her characters. One day at a library, as Sophie is reading aloud while she pens an erotic passage, her voice and words captivate Eddie (Anthony LaPaglia), a high-stakes jewel dealer who is browsing nearby. He is so taken with Sophie's beauty and charm that he asks her out on the spot, but she refuses. A childhood victim of polio, Sophie cannot walk without a leg brace, and she doesn't want Eddie to see her disability. He leaves, convinced that she's the perfect woman. (Why? Because she rejected him.)
For Sophie, out of sight does not mean out of mind. Unable to dismiss Eddie from her thoughts, she finds out where he works, then goes to spy on him, watching him with his fiancee, Gloria (Rebecca Gibney). When she's afraid that Eddie is about to notice her, brace and all, Sophie hurries to get out of sight. In the process, she takes a nasty spill and breaks her leg. Now, with her stricken limb in a cast, she can pretend that she's normal and that the injury is the result of a skiing accident. Freed from her fear that Eddie will reject her because she's disabled, she is able to pursue a relationship with him -- at least temporarily.
The two leads, Australians Gia Carides and Anthony LaPaglia, are the film's most familiar faces. Carides has appeared in STRICTLY BALLROOM (as Scott's original partner) and BAD COMPANY. LaPaglia, despite his Australian birth, is best known for his performances as tough Italian American characters, such as Mick in BULLETPROOF HEART and Barry Muldano in THE CLIENT. Together, these two generate a palpable chemistry -- not surprising, since they're a real-life couple. Of the pair, Carides has the best screen presence, and her portrayal of Sophie manages to find the right mix of playfulness and wistful yearning. We like her and root for her to find love, but we never pity her.
Film maker Ben Lewin apparently likes films that are somewhat non- traditional -- his previous effort was the odd THE FAVOUR, THE WATCH, AND THE VERY BIG FISH. With PAPERBACK ROMANCE, one could argue that he doesn't go far enough in his satirical approach, choosing instead to play up the romantic angle. But there are a few unexpected twists, including a subplot involving cops, robbers, and love with a twinge of Dostoevsky. Some of the best sequences, however, are the re-creations of steamy passages from Sophie's writing. Ripe with overblown romantic cliches (crashing waves, orchestral music rising to a crescendo, and lots of firelight-illuminated naked flesh), these scenes are knowing, clever, and amusing.
The tone of PAPERBACK ROMANCE is erratic; you can be laughing one minute and wincing the next. The film's approach careens wildly from low-key to over-the-top, without much of a break in between. It's rather disconcerting to go from a relatively pleasant erotic interlude to a scene where someone is screaming while blood spills all over. And, on at least two occasions, the slapstick, while admittedly funny in a sophomoric way, is so overblown that it seems out of place. In general, however, PAPERBACK ROMANCE manages to successfully navigate such choppy waters, and the result is a pleasant, if uneven, hour and a half.
Copyright 1997 James Berardinelli
- James Berardinelli e-mail<EMAIL_ADDRESS>The website is moving!! ReelViews web site through 8/31: http://www.cybernex.net/~berardin ReelViews web site beginning 9/1: http://movie-reviews.colossus.net/
"The cinema is not an art which films life: the cinema is something between art and life. Unlike painting and literature, the cinema both gives to life and takes from it..."
- Jean-Luc Godard
The review above was posted to the
rec.arts.movies.reviews newsgroup (de.rec.film.kritiken for German reviews).
The Internet Movie Database accepts no responsibility for the contents of the
review and has no editorial control. Unless stated otherwise, the copyright
belongs to the author.
Please direct comments/criticisms of the review to relevant newsgroups.
Broken URLs inthe reviews are the responsibility of the author.
The formatting of the review is likely to differ from the original due
to ASCII to HTML conversion.
Related links: index of all rec.arts.movies.reviews reviews


Art
Ink
Air
Brush
Erase
Mesh
Paint
Delete
Draw
Line
Circle
Size
Spacing
Size
Opacity
Size
Quad
Triangle
Snap Radius
Dot Size
Edge Thickness
Size
Aspect Ratio
Thickness
Opacity
Painting
Blending
Smearing


This function produces a data table for a basic cross-classified design with random intercepts for subjects and items.
For example, the following code produces the data for 100 subjects responding to 50 items where the response has an overall mean (grand_i
) of 10. Subjects vary in their average response with an SD of 1, items vary in their average response with an SD of 2, and the residual error term has an SD of 3.
dat_cc <- sim_mixed_cc(
sub_n = 100, # subject sample size
item_n = 50, # item sample size
grand_i = 10, # overall mean of the score
sub_sd = 1, # SD of subject random intercepts
item_sd = 2, # SD of item random intercepts
error_sd = 3 # SD of residual error
)
You can then see how changing these numbers affects the random effects in an intercept-only mixed effects model.
lme4::lmer(y ~ 1 + (1 | sub_id) + (1 | item_id), data = dat_cc) %>%
broom.mixed::tidy() %>%
knitr::kable(digits = 3)
| effect | group | term | estimate | std.error | statistic |
|---|---|---|---|---|---|
| fixed | NA | (Intercept) | 10.256 | 0.35 | 29.322 |
| ran_pars | sub_id | sd__(Intercept) | 0.942 | NA | NA |
| ran_pars | item_id | sd__(Intercept) | 2.363 | NA | NA |
| ran_pars | Residual | sd__Observation | 2.986 | NA | NA |
For example, changing grand_i
to 0 changes the estimate for the fixed effect of the intercept (Intercept)
. Changing sub_sd
to 1.5 and item_sd
to 3 change the estimate for the SD of their corresponding random effects. Changing error_sd
to 10 changes the estimate from the Residual SD.
dat_cc <- sim_mixed_cc(100, 50, 0, 1.5, 3, 10)
lme4::lmer(y ~ 1 + (1 | sub_id) + (1 | item_id), data = dat_cc) %>%
broom.mixed::tidy() %>%
knitr::kable(digits = 3)
| effect | group | term | estimate | std.error | statistic |
|---|---|---|---|---|---|
| fixed | NA | (Intercept) | 1.094 | 0.466 | 2.349 |
| ran_pars | sub_id | sd__(Intercept) | 1.228 | NA | NA |
| ran_pars | item_id | sd__(Intercept) | 3.019 | NA | NA |
| ran_pars | Residual | sd__Observation | 9.904 | NA | NA |
This function uses lme4::lmer()
to get subject, item and error SDs from an existing dataset and simulates a new dataset with the specified number of subjects and items with distributions drawn from the example data.
This example uses the fr4
dataset from this package to simulate 100 new subjects viewing 50 new faces.


To change the Miami tech landscape and set a foundation for talent to thrive in an company that is the premier development shop of the Americas.
Our mission is to provide product and technical mentorships to businesses and companies that have lost confidence in the development process through a unique and refreshing onboarding experience.


Audius
Web app
and extension
are in the making
Keyboard shortcuts
- c
- Play / pause
- b
- Next song
- s
- Shuffle on / off
- j
- Jump to song
- f
- Find song on YouTube
Community
If you have questions or feedback, join the chat on gitter or create an issue.
Install as app
Chrome desktop:
- At the top right, click More (Icon top right).
- Click More Tools.
- Add the app: Windows users: Click Add to taskbar. Linux users: Click Add to desktop. Chromebook users: Click Add to shelf.
Chrome android: Tap the menu button and tap Add to homescreen. The app is not yet optimized for mobile phones, it might work on tables.
Local HTML5: Since this player is a pure HTML5 app without server side code you can simply download the HTML and JS code and run it from a local file. You can also download the latest version from the source code repository at github (see Source code). Use the web version to always get the latest updates automatically. A word of caution: I recognized that using this app from a local file block$ a lot of videos on YouTube :(
Web apps are true freedom! Support an open and liberal web without geo borders and login screens.
System requirements
- Vivaldi
- Chrome >= 51
- FireFox >= 49
- Internet Explorer & Safari ... not supported, might work though
Extension
... development started, but now stopped until the main app is ready.
The Audius extension allows you to open a music player on any website. It will then automatically collect all linked videos and add it to a playlist similar to the one in this app. The videos will still be played in this app due to restrictions of some websites. This setup allows you to create a "Music" chat group on Whatsapp or Slack and have fresh music from your friends every day playing right where you share it. You can then continue and add this music to you regular playlist with a simple click.
Migration from Streamus
On Linux use this script I created to dump the Streamus WebSql to a JSON file. The JSON can be imported using the IMPORT button below the playlist. Use the script like this:
./streamus-export.sh ~/.config/google-chrome/Profile\ 1/Local\ Storage/chrome-extension_jbnkffmindojffecdhbbmekbmkkfpmjd_0.localstorage
Be sure to validate the JSON output, the script is just a quick hack and you might have to tweak it.
Other Projects
Here are some other fun projects I created this year.
Motivation
You are writing another music player, seriously? That's what I thought a lot when creating this, but you know ...
The extension should have been the actual player since the original idea was to create a Chrome/FireFox extension with a media player for web.whatsapp. This however failed since the conten security policy does not allow the embdding of youtube videos and somehow it is not possible to overwrite the header fields of web.whatsapp. That meant no player, no music. The only way around this issue I could come up with is to create a background process that the extension cummunicates with and that sends messages to a main player web app. This is currently still untested but that is the plan.
Contributing
- Fork it!
- Create your feature branch:
git checkout -b my-new-feature
- Commit your changes:
git commit -am 'Add some feature'
- Push to the branch:
git push origin my-new-feature
- Submit a pull request :D
Credits
This work is inspired by the incredible Streamus app. It was created with:
- VueJs
- Redux
- Icomoon
- Google material icons
- Webpack
- LivingStyleGuide
History
... still working on version 0.0.1
License
MIT


Money Play. How should Red play 43?
pips Red=143 White=131
(CorrectAnswer= 0/0, ErrorScore= 0)
This is similar in concept to Problem 198.
Red does not want three blots trapped on the 22-pt and once again the blots protect themselves so if one is hit the others will generate return hits.
The correct play is bar/22/18. Anything else is nearly a double blunder.
Red does not want three blots trapped on the 22-pt and once again the blots protect themselves so if one is hit the others will generate return hits.
The correct play is bar/22/18. Anything else is nearly a double blunder.
1. Cubeful 2-ply bar/18 Eq.: +0.642 0.755 0.282 0.017 - 0.245 0.081 0.004 2. Cubeful 2-ply bar/22 13/9 Eq.: +0.526 (-0.116) 0.718 0.253 0.010 - 0.282 0.075 0.003 3. Cubeful 2-ply bar/22 11/7 Eq.: +0.466 (-0.176) 0.698 0.246 0.011 - 0.302 0.080 0.003 4. Cubeful 0-ply bar/22 6/2* Eq.: -0.063 (-0.705) 0.545 0.212 0.014 - 0.455 0.207 0.018 5. Cubeful 0-ply bar/22 7/3 Eq.: -0.095 (-0.737) 0.532 0.197 0.009 - 0.468 0.194 0.012


|
Groovy JDK |
| Method Summary | |
|---|---|
Calendar
|
clearTime()
Clears the time portion of this Calendar instance; useful utility where it makes sense to compare month/day/year only portions of a Calendar. |
String
|
format(String pattern)
Shortcut for SimpleDateFormat to output a String representation of this calendar instance. |
int
|
getAt(int field)
Support the subscript operator for a Calendar. |
int
|
minus(Calendar then)
Subtract another date from this one and return the number of days of the difference. |
Calendar
|
next()
Increment a Calendar by one day. |
Calendar
|
previous()
Decrement a Calendar by one day. |
void
|
putAt(int field, int value)
Support the subscript operator for mutating a Calendar. |
void
|
set(Map updates)
Support mutating a Calendar with a Map. |
Calendar
|
updated(Map updates)
Support creating a new Date having similar properties to an existing Date (which remains unaltered) but with some fields updated according to a Map of changes. |
| Method Detail |
|---|
public Calendar clearTime()
public String format(String pattern)
Shortcut for SimpleDateFormat to output a String representation
of this calendar instance. This method respects the Calendar's assigned
TimeZone, whereas calling cal.time.format('HH:mm:ss')
would use the system timezone.
Note that Calendar equivalents of date.getDateString()
and variants do not exist because those methods are Locale-dependent.
Although a Calendar may be assigned a Locale, that information is
lost and therefore cannot be used to control the default date/time formats
provided by these methods. Instead, the system Locale would always be
used. The alternative is to simply call
DateFormat#getDateInstance and pass the same Locale
that was used for the Calendar.
pattern
- format pattern.public int getAt(int field)
field
- a Calendar field, e.g. MONTH.public int minus(Calendar then)
Date self = Date then + (Date self - Date then)
IOW, if self is before then the result is a negative value.
then
- another Calendar.public Calendar next()
public Calendar previous()
public void putAt(int field, int value)
import static java.util.Calendar.* def cal = Calendar.instance cal[DAY_OF_WEEK] = MONDAY cal[MONTH] = MARCH println cal.time // A Monday in March
field
- A Calendar field, e.g. MONTH.value
- The value for the given field, e.g. FEBRUARY.public void set(Map updates)
The map values are the normal values provided as the
second parameter to java.util.Calendar#set(int, int)
.
The keys can either be the normal fields values provided as
the first parameter to that method or one of the following Strings:
| year | Calendar.YEAR |
| month | Calendar.MONTH |
| date | Calendar.DATE |
| hourOfDay | Calendar.HOUR_OF_DAY |
| minute | Calendar.MINUTE |
| second | Calendar.SECOND |
import static java.util.Calendar.* def cal = Calendar.instance def m = [:] m[YEAR] = 2010 m[MONTH] = DECEMBER m[DATE] = 25 cal.set(m) println cal.time // Christmas 2010 cal.set(year:2011, month:DECEMBER, date:25) println cal.time // Christmas 2010
updates
- A Map of Calendar keys and values.public Calendar updated(Map updates)
Example usage:
import static java.util.Calendar.YEAR def now = Calendar.instance def nextYear = now[YEAR] + 1 def oneYearFromNow = now.updated(year: nextYear) println now.time println oneYearFromNow.time
updates
- A Map of Calendar keys and values.
|
Groovy JDK |


Tome of Mastering
Download
Tools
Graph
About
Language: Undercommon
Spoken by
Beholder
Spoken by
Cloaker
Spoken by
Death Tyrant
Spoken by
Deep Gnome
Spoken by
Drider
Spoken by
Drow
Spoken by
Drow Elite Warrior
Spoken by
Drow Mage
Spoken by
Drow Priestess of Lolth
Spoken by
Duergar
Spoken by
Fomorian
Spoken by
Grimlock
Spoken by
Kuo-toa
Spoken by
Kuo-toa Archpriest
Spoken by
Kuo-toa Monitor
Spoken by
Kuo-toa Whip
Spoken by
Mind Flayer
Spoken by
Mind Flayer Arcanist
Spoken by
Nothic
Spoken by
Quaggoth
Spoken by
Quaggoth Thonot
Spoken by
Spectator
Spoken by
Yochlol
Spoken by
Derro
Spoken by
Derro Savant
Spoken by
Drow Arachnomancer
Spoken by
Drow Favored Consort
Spoken by
Drow House Captain
Spoken by
Drow Inquisitor
Spoken by
Drow Matron Mother
Spoken by
Drow Shadowblade
Spoken by
Duergar Despot
Spoken by
Duergar Kavalrachni
Spoken by
Duergar Mind Master
Spoken by
Duergar Soulblade
Spoken by
Duergar Stone Guard
Spoken by
Duergar Warlord
Spoken by
Duergar Xarrorn
Spoken by
Star Spawn Seer
Spoken by
Alhoon
Spoken by
Chitine
Spoken by
Choldrith
Spoken by
Death Kiss
Spoken by
Draegloth
Spoken by
Gauth
Spoken by
Illithilich
Spoken by
Korred
Spoken by
Mind Flayer Psion
Spoken by
Mindwitness
Spoken by
Neogi
Spoken by
Neogi Master
Spoken by
Ulitharid
Understood by
Beholder Zombie
Understood by
Flumph
Understood by
Retriever
Understood by
Elder Brain