OpenLLM-France/wikimedia huggingface dataset:
# Java Persistence/What is Java?

Java is an object oriented programming language first released by Sun Microsystems in 1995. It blended concepts from existing languages such as C++ and Smalltalk into a new programming language. It achieved its success over the many rival languages of the day because it was associated with this newish thing called the "Internet" in allowing Java applets to be embedded in web pages and run using Netscape. Its other main reason for success was unlike many of its competitors it was open, "free", and not embedded with a integrated development environment (IDE). Java also included the source code to its class library. This enabled Java to be adopted by many different companies producing their own Java development environments but sharing the same language, this open model fostered the growth in the Java language and continues today with the open sourcing of Java.
Java quickly moved from allowing developers to build dinky applets to being the standard server-side language running much of the Internet today. The Enterprise Edition (JEE) of Java was defined to provide an open model for server application to be written and portable across any compliant JEE platform provider. The JEE standard is basically a basket of other Java specifications brought together under one umbrella and has major providers including IBM WebSphere, RedHat JBoss, Sun Glassfish, BEA WebLogic, Oracle AS and many others.

## Google Trends

* Programming Languages
* JEE Servers
* ↑ Unfortunately hard to separate Java island from Java language.
* ↑ Could not include Oracle because of Oracle database hits.

## See also

* Java Programming
# Java Persistence/What is Java persistence?

Persistence, in computer science, is a noun describing data that outlives the process that created it. Java persistence could be defined as storing anything to any level of persistence using the Java programming language, but obviously this would be too broad a definition to cover in a single book. That is why this book is more focused on storing Java objects to relational databases. In particular using the Java Persistence API (JPA).
There are many ways to make data persist in Java, including (to name a few): JDBC, serialization, file IO, JCA, object databases, and XML databases. However, the majority of data is persisted in databases, specifically relational databases. Most things that you do on a computer or web site that involve storing data, involve accessing a relational database. Relational databases are the standard mode of persistent storage for most industries, from banking to manufacturing.
There are many things that can be stored in databases with Java. Java data includes strings, numbers, date and byte arrays, images, XML, and Java objects. Many Java applications use Java objects to model their application data. Because Java is an Object Oriented language, storing Java objects is a natural and common approach to persisting data from Java.
There are many ways to access a relational database from Java, JPA is just the latest of many different specifications, but it seems to be the direction that most programmers are heading.
# Java Persistence/What is new in JPA 2.0?

The JPA 2.0 specification adds several enhancements to the JPA 1.0 specification including:
* Extended Map support - Support for maintaining a key column for a Basic, Embeddable, or Entity key value in any collection relationship using a Map.
* Derived Identifiers
* Nested embedding
* New collection mappings - Support for collections of Basic or Embeddable types.
* Undirectional OneToMany
* Ordered List mappings - Support for maintaining an index column in any collection relationship using a List.
* Orphan removal - Automatic deletion of objects removed from relationships.
* Pessimistic Locking
* EntityManager API updates
* Cache APIs
* Standard Properties
* Metadata
* Criteria API
* JPQL enhancements

### Resources

* JPA 2.0 Spec
* JPA 2.0 Reference Implementation (EclipseLink)
* Eclipse EclipseLink to be JPA 2.0 Reference Implementation
* JPA 2.0 Examples
# Java Persistence/What is new in JPA 2.1?

The JPA 2.1 specification adds several enhancements to the JPA 2.0 specification including:
* Converters - allowing custom code conversions between database and object types.
* Criteria Update/Delete - allows bulk updates and deletes through the Criteria API.
* Stored Procedures - allows queries to be defined for database stored procedures.
* ConstructorResult support for SQLResultSetMapping
* Runtime creation of named queries
* Injectable EntityListeners
* Unsynchronized persistence contexts
* DDL generation - automatic table, index and schema generation.
* Entity Graphs - allow partial or specified fetching or merging of objects.
* JPQL/Criteria enhancements - arithmetic sub-queries, generic database functions, join ON clause, TREAT option.

### Resources

* JPA 2.1 Spec
* JPA 2.1 Reference Implementation (EclipseLink)
# Java Persistence/TopLink Essentials

TopLink Essentials is an open source project from the Sun java.net Glassfish community. It is the EJB3 JPA 1.0 reference implementation, and is the JPA provider for the Sun Glassfish v1 application server.
TopLink Essentials was based on the TopLink product, which Oracle contributed some of the source code from to create the TopLink Essentials project. The original contribution was from TopLink's 10.1.3 code base, only some of the TopLink product source code was contributed, which did not include some key enterprise features. The package names were changed and some of the code was moved around.
TopLink Essentials has been replaced by the EclipseLink project. EclipseLink will be the JPA 2.0 reference implementation and be part of Sun Glassfish v3.
* TopLink Essentials Home
* TopLink Essentials Forum
* TopLink Essentials Wiki
# Java Persistence/What is a database?

A database program is an executable that stores and retrieves data. There are many types of databases: flat-file, hierarchical, relational, object-relational, object-oriented, xml, and others. The original databases programs were mainly proprietary and non-standardized.
Relational databases were the first databases to achieve great success and standardization. Relational databases are characterized by the SQL (structured query language) standard to query and modify the database, their client/server architecture, and relational table storage structure. Relational databases achieved great success because their standardization allowed many different vendors such as Oracle, IBM, and Sybase to produce interoperable products giving users the flexibility to switch their vendor and avoid vendor lock-in to a proprietary solution. Their client/server architecture allows the client programming language to be decoupled from the server, allowing the database server to support interface APIs into multiple different programming languages and clients.
Although relational databases are relatively old technology, they still dominate the industry. There have been many attempts to replace the relational model, first with object-oriented databases, then with object-relational databases, and finally with XML databases, but none of the new database models achieved much success and relational databases remain the overwhelmingly dominant database model.
The main relational databases used today are: Oracle, MySQL (Oracle), PostgreSQL, DB2 (IBM), SQL Server (Microsoft).
# Why use JPA or ORM?

This is an intriguing question. There are many reasons to use an ORM framework or persistence product, and many reasons to use JPA in particular.

#### Reasons for ORM

* Eliminates all of the 'hand' mapping in Java from a SQL ResultSet to a Java POJO greatly reducing the amount of mapping work.
* Reduces the amount of work required to the persistence code base with a domain data model and/or relational data model change.
* Leverages large persistence library to avoid developing solutions to problems that others have already solved.
* Avoids low level JDBC and SQL code.
* Leverages object oriented programming and object model usage.
* Provides database and schema independence.
* Most ORM products are free and open source.
* Many enterprise corporations provide support and services for ORM products.
* Provides high end performance features such as caching and sophisticated database and query optimizations.

#### Reasons for JPA

* It is a standard and part of EJB3 and Java EE.
* Many free and open source products with enterprise level support.
* Portability across application servers and persistence products (avoids vendor lock-in).
* A usable and functional specification.
* Supports both Java EE and Java SE.
ORM can be a hot topic for some people, and there are many ORM camps. There are those that endorse a particular standard or product. There are those that don't believe in ORM or even objects in general and prefer JDBC. There are those that still believe that object databases are the way to go. Personally I would recommend you use whatever technology you are most comfortable with, but if you have never used ORM or JPA, perhaps give it a try and see if you like it. The below list provides several discussions on why or why not to use JPA and ORM.

#### Discussions on JPA and ORM Usage

* Why do we need anything other than JDBC? (Java Ranch)
* JPA Explained (The Server Side)
* JPA vs JDO (The Server Side)
# Nuclear Medicine/CNS

Central Nervous System

# PET/CT
## For Tumor
### INDICATION

* For the evaluation or diagnosis of tumors of the central nervous system

### PROCEDURE

* Alternate techniques exist. We describe the more common methods.

#### Dimension

* In 2D mode, septa are usually used to collimate using coincidental detection between 2 adjacent detector rings.
* In 3D mode, all the detector rings are used, which does not necessitate septum separation.

#### Static Imaging

* The traditional method of acquisition

#### Dynamic imaging

* A newer, and less used method for detection. Using this approach, there is the potential to measure the metabolic kinetics of a region of interest over time. A time-activity curve can be generated using definable ROIs, which has been used to pre-stage tumors with imaging alone.
* Limitations of this technique includes the (1) highly difficult and technical nature of the technique; (2) somewhat longer time in which the patient needs to keep their head motionless; (3) reliance on arterial input function for metabolic analysis which can be an invasive procedure; (4) lack of compensation for the increased expertise and time needed to acquire and interpret scans; (5) limited outcomes-based research to validate the technique for standard practice.

### INTERPRETATION
## For Cognitive
### INDICATION

* For the evaluation or diagnosis of tumors of the central nervous system

### PROCEDURE
#### Static imaging

* Stuff

### INTERPRETATION

** ^ -- "Society of Nuclear Medicine Procedure Guideline for PDG PET Brain Imaging" (Waxman A.D. Online PDF. Ver 1.0. Feb 9, 2009.

## Acronyms used

ROI - Region of Interest
# Thyroid Ablation
## Indications

* Thyroid cancer - Either localized or metastatic
* Benign disease refractory to conservative treatment and/or causing symptoms or complications

## Procedure

* Calculation of dose
** The dose should be calculated with two different variables: The weight of the gland(in grams), and how much it's 24 hr uptake is (For example, 24% would be 0.24). You can then use the following formula:
** The weight of the gland is a very subjective measurement. One can attempt to approximate the gland weight with the following guidelines:
*** A regular non-palpable thyroid gland weighs approximately 15-20 grams.
*** A thyroid that you cannot see but is palpable weighs approximately 30-40 grams (needs verification)
*** A gland that is easily seen and palpated can be anywhere from 40-200 grams (needs verification)
** ^ ISBN 0-323-02946-9 -- "Nuclear Medicine: The Requisites, Third Edition (Requisites in Radiology)." (Harvey A. Ziessman, Janis P. O'Malley MD, James H. Thrall MD. 2006. Mosby, Inc.)
Acronyms used:
# Gastrointestinal
## Neonatal Jaundice

* Neonatal jaundice is a difficult problem for many pediatricians. Scintigraphy has been shown to be useful in diagnosis in the pediatric population. Differential diagnosis in this age group can include Biliary atresia (BA) and neonatal hepatitis syndrome (NHS)

## Cholecystitis

References
* ^ PMID 16967250 - "Biliary atresia in infants with prolonged cholestatic jaundice: diagnostic accuracy of hepatobiliary scintigraphy." Esmaili J, Izadyar S, Karegar I, Gholamrezanezhad A. (Abdom Imaging. 2007 Mar-Apr;32(2):243-7. Epub 2006 Sep 12.)
Acronyms used:
* BA - Biliary atresia
* NHS - neonatal hepatitis syndrome
# MeGUI/Tools

This is the root index for the documentation of the tools in MeGUI, available in the "Tools" menu.
* MeGUI/Tools
* MeGUI/Tools/Audio Cutter
* MeGUI/Tools/AutoEncode
* MeGUI/Tools/Avisynth Script Creator
* MeGUI/Tools/Bitrate Calculator
* MeGUI/Tools/One Click Encoder
# MeGUI/Tools/AutoEncode

The AutoEncode window lets you combine audio encoding, bitrate calculation, video encoding and finally muxing into a single job configuration step. It is one of two ways to configure a file to be muxed that does not yet exist (the other is the One click window).

## Options
### Output Options

* Container: allows you to set the final container format. This uses mux path finding to determine which container formats are possible. Changing this will also change the extension of the output file.
* Split Output: checking this tells the muxer to split the final file into chunks of the size given in the textbox next to it.
* Name of output: Displays location of the output file. You can change this by pressing the [...] button.

### Size and Bitrate

You have three options here to determine how the video bitrate is calculated:
* File Size: After the audio has finished encoding (if there is any), the video bitrate is adjusted to reach the size given in file size. You can set this to one of the presets by using the Storage Medium combobox. When this mode is checked, it displays an estimated value of the average bitrate in the Average Bitrate box. Be aware that this may not take audio into account, and is thus only an estimate.
* Average Bitrate: After the audio has finished encoding (if there is any), the video bitrate is adjusted so that the final bitrate of the file (including audio) reaches an average of what is set.
* No target size: This disables bitrate adjusting and leaves the bitrate/quality as what the settings are set to.

### Miscellaneous

* Add additional content: Checking this will let you add other already-existing files when you press queue.
* Cancel: Closes the window without generating any jobs.
* Queue: Generates the jobs and closes the window. This possibly opens the adaptive mux window beforehand if add additional content is checked.
# MeGUI/Presentation/Detecting interlace

Detecting the interlace type of a video stream can be difficult at first, but there are a number of tools to make it easier for you.

## MeGUI interlace analyser

This is the recommended method for determining the interlace type.
The MeGUI analyser can be found in the avisynth creator. Open the video file, move across to the second tab and there is the interlace detector. All you need to do is click "Analyse...", but you should check the box labelled source is anime, if it applies to you. Once it has finished, it will pop up its findings and recommended filters to produce a progressive output.
# MeGUI/Presentation
## Specifications

Input:
* DVD (vob through d2v) and other MPEG-1 and MPEG-2 streams receive special input support for demuxing of audio and subtitles, and faster video seeking
* Any computer video file via AviSynth
Output:
* Video:
** x264
** XviD.
* Audio:
** MP2 (via ffmpeg)
** AAC (via Nero AAC)
** Vorbis
** AC3 (via Aften or FFmpeg)
** Opus
** Flac
* Container:
** Matroska
** MP4
** AVI

## Features

* Powerful job queue support, with in-place job editing, related job linking, play/pause controls, etc.
** Parallel job execution makes job processing very flexible and improves speed on multi-core systems.
* Automatic interlace detection can analyse your input video to determine whether it is progressive/interlaced/film/hybrid, and also determine field order.
* AutoUpdate keeps MeGUI and its assisting programs up-to-date and eases installation.
* Audio encoding also based on Avisynth, which allows highly accurate editing of audio, including sample-accurate audio cutting.
* More...

## Documentation
### Starting out

* The Basic DVD Ripping Guide is a good place to start.
* The MeGUI Frequently Asked Questions
* Read up about all the items in the Tools|tools menu
* The Glossary

### Digging deeper

* Documentation on advanced m. Template:Video Encoder Configuration.
* A more advanced guide for m. Template:HDTV Transcoding Guide.
* Read more on what m. Template:AutoUpdate does, and how it works.

### Other

* This wiki's MeGUI for further other useful information and links about video.
* MeGUI Contributors for all the people who have helped with MeGUI.
* The Guides page for MeGUI guides hosted on this wiki
* Helping with MeGUI for how to contribute.
* The Original Guide Berrinam wrote in 2006 (originally posted here) has been migrated across here. It's very out of date now.

## External links

* MeGUI's SourceForge project page for bug and feature request trackers.
* German MeGUI Documentation, hosted by the German doom9 forums, gleitz.info.
* A guide to producing QuickTime compatible DVD Rips in MeGUI
* doom9.org and its associated forums, the birthplace of MeGUI.
# MeGUI/Tools/Avisynth Script Creator

The MeGUI AviSynth script creator is used to create the AVS file which will supply the data to the video encoder to be encoded. It provides a standardised way to load any type of video into one program, as well as process it in various ways. The AVS creator provides a frontend to create the AVS script for you.

## Page 1: Options

Basic input and processing.
* Video Input: Load the video source you want to use as input.
* Re-open original video player: Reopen MeGUI's video preview window.
* Video DAR: Set the input DAR. MeGUI mostly detects this correctly.
* Clever (TM) Anamorphic Encoding: Checking this box will enable anamorphic encoding. There are three methods to encode anamorphic video with MeGUI:
   * Resize to mod16: Video is cropped as requested, then resized to mod16 dimensions.
   * Overcrop to achieve mod16: Video is cropped by at least the requested numbers. Extra cropping is done so the final video is mod16.
   * Encode non mod16: Video is cropped as requested, then resized as requested.
* AVS Profile: You can load an Avisynth profile here. AVS profiles are templates used when by the AVS Script Creator. Their use should be reasonably self-explanatory if you know enough to touch them.
* Crop: 'Cut' the sides off the input video, in case there are black borders. MeGUI will graphically the cropping if the video preview window has not been updated since it was opened.
* Resize: Resize the video. Resizing is only allowed to multiples of 16, and when reducing the resolution. See these two pages for information on why these restrictions exist.

## Page 2: Filters

Deinterlacing and other filtering.
* Deinterlacing: Choose what deinterlacing (if any) should be applied.
   * If you know the video type already, set the 'Source Type' and choose appropriate deinterlacing.
   * If you don't know the video type, click 'Analyse' (make sure 'source is anime' is ticked if appropriate). MeGUI will make a (virtually always) accurate guess as to the source type and suggest filtering.
* Resize Filter: Choose the resizer algorithm. Generally, spline36 is a good choice.
* Noise Filter: The noise filter adds one of four predefined noise reducing scripts to the AVS file. The noise reductions go all the way from undot to Convolution3D("movielq").
* MPEG2 Deblocking: Should only be enabled for very blocky MPEG-2 sources, which generally means not on DVDs, such as the following:
* Colour Correction: Automatically added with .d2v sources. Colour correction for DVDs and other MPEG2 files ensures the video has the right colours.
* Framerate: Required only if MeGUI cannot auto-detect it.
* Vertical Flip

## Options on all pages

The options down the bottom of every page:
* On save close and load to be encoded: When this is checked, immediately after saving the AVS creator will be closed and the AVS loaded into MeGUI ready for you to set up video encoding options.
* Preview: Clicking this will refresh the video preview window. Be aware this causes a problem when cropping, as detailed above.
* Save: Saves the AVS.
# MeGUI/Presentation/AutoUpdate

The update window allows you to keep MeGUI and its components up to date. Whenever you run MeGUI, it will automatically check for updates and prompt you if there are any available. You can also run the updater from the Tools menu.
When the updater window opens, it will automatically poll the webserver for any updates. If updates are available, it will automatically select them in the list, ready for you to click Update.
If you do not wish to update a certain component, you can right click on the item and choose "Ignore updates for this file". Any future updates will not be automatically suggested. You can undo this by right clicking and selecting "Ignore updates for this file" again.

## Technical Information

The download cache for MeGUI is located at megui.org/auto or here as mirror. An xml file (update.xml) is downloaded which contains a list of components and their latest versions. If the latest version is newer than the version MeGUI has recorded as downloading, it will prompt for updating. Keep in mind MeGUI determines what requires updating by its internal records, not by reading file version from the files or anything.
# MeGUI/Tools/Audio Cutter

The Audio cutter is a simple tool for cutting audio streams based on MeGUI cutlists. Unlike the use of cutlists for audio in the main window, the Audio cutter edits the audio files without re-encoding; thus, this is a lossless process. It uses the tool, BeSplit.

## Use

* In the input file you select the audio file to be cut.
* In the cut file you select the MeGUI cutlist file specifying which sections to include (this can be created with the AVS Cutter)
* In the output file you select where the cut file should be saved.
* If it is all set up correctly, pressing create job will generate two jobs:
** A splitting job, in which the file is cut up into multiple smaller ones
** A join job, which joins the relevant smaller files together.
* After these two jobs complete, the intermediate files (the smaller ones) will be deleted if Delete intermediate files in the settings is checked.

## Inaccuracies

Unfortunately, inaccuracies arise because cutting is only accurate to the audio frame, which is a number of milliseconds. Further, these inaccuracies can accumulate as you do more cuts. In some cases, this can result in a noticeable delay between audio and video. You may be better advised using the sample-accurate cutting in the main form (which requires a re-encode) or encoding the entire video and then cutting with a muxer (not yet supported in MeGUI).
Nevertheless, the cutter may be useful in certain circumstances, and interfaces well with cutlists.

## BeSplit

The Audio cutter works through BeSplit, requiring version 0.9b6.
# Observing the Sky from 30°S/Sky maps/May 1, 10:00 pm

Celestial map for May 1, 10:00 pm, from 30°S. South is up and North is down. On the left there is the detailed map, on the right there is an illustration of the sky as it appears.
# Observing the Sky from 30°S/Sky maps/March 1, 10:00 pm

Celestial map for March 1, 10:00 pm, from 30°S. South is up and North is down. On the left there is the detailed map, on the right there is an illustration of the sky as it appears.
# Observing the Sky from 30°S/Sky maps/July 1, 10:00 pm

Celestial map for July 1, 10:00 pm, from 30°S. South is up and North is down. On the left there is the detailed map, on the right there is an illustration of the sky as it appears.