Apache FOP Output Formats
FOP supports multiple output formats by using a different renderer for each format. The renderers do not all have the same set of capabilities, sometimes because of the output format itself, sometimes because some renderers get more development attention than others.
General Information
Fonts
Most FOP renderers use a FOP-specific system for font registration. However, the Java2D/AWT and print renderers use the Java AWT package, which gets its font information from the operating system registration. This can result in several differences, including actually using different fonts, and having different font metrics for the same font. The net effect is that the layout of a given FO document can be quite different between renderers that do not use the same font information.
Theoretically, there's some potential to make the output of the PDF/PS renderers match the output of the Java2D-based renderers. If FOP used the font metrics from its own font subsystem but still used Java2D for text painting in the Java2D-based renderers, this could probably be achieved. However, this approach hasn't been implemented, yet.
With a work-around, it is possible to match the PDF/PS output in a Java2D-based renderer pretty closely. The clue is to use the intermediate format. The trick is to layout the document using FOP's own font subsystem but then render the document using Java2D. Here are the necessary steps (using the command-line):
-
Produce an IF file: fop -fo myfile.fo -at application/pdf myfile.at.xml
Specifying "application/pdf" for the "-at" parameter causes FOP to use FOP's own font subsystem (which is used by the PDF renderer). Note that no PDF file is created in this step. - Render to a PDF file: fop -atin myfile.at.xml -pdf myfile.pdf
- Render to a Java2D-based renderer:
- fop -atin myfile.at.xml -print
- fop -atin myfile.at.xml -awt
- fop -atin myfile.at.xml -tiff myfile.tiff
Output to a Printer or Other Device
The most obvious way to print your document is to use the FOP print renderer, which uses the Java2D API (AWT). However, you can also send output from the Postscript renderer directly to a Postscript device, or output from the PCL renderer directly to a PCL device.
Here are Windows command-line examples for Postscript and PCL:
fop ... -ps \\computername\printer
fop ... -pcl \\computername\printer
Here is some Java code to accomplish the task in UNIX:
proc = Runtime.getRuntime().exec("lp -d" + print_queue + " -o -dp -"); out = proc.getOutputStream();
Set the output MIME type to "application/x-pcl" (MimeConstants.MIME_PCL) and it happily sends the PCL to the UNIX printer queue.
PDF is the best supported output format. It is also the most accurate with text and layout. This creates a PDF document that is streamed out as each page is rendered. This means that the internal page index information is stored near the end of the document. The PDF version supported is 1.4. PDF versions are forwards/backwards compatible.
Note that FOP does not currently support "tagged PDF" or PDF/A-1a. Support for PDF/A-1b and PDF/X has recently been added, however.
Fonts
PDF has a set of fonts that are always available to all PDF viewers; to quote from the PDF Specification: "PDF prescribes a set of 14 standard fonts that can be used without prior definition. These include four faces each of three Latin text typefaces (Courier, Helvetica, and Times), as well as two symbolic fonts (Symbol and ITC Zapf Dingbats). These fonts, or suitable substitute fonts with the same metrics, are guaranteed to be available in all PDF viewer applications."
Post-processing
FOP does not currently support several desirable PDF features: watermarks and signatures. One workaround is to use Adobe Acrobat (the full version, not the Reader) to process the file manually or with scripting that it supports.
Another popular post-processing tool is iText, which has tools for adding security features, document properties, watermarks, and many other features to PDF files.
Here is some sample code that uses iText to encrypt a FOP-generated PDF. (Note that FOP now supports PDF encryption. However the principles for using iText for other PDF features are similar.)
public static void main(String args[]) { try { ByteArrayOutputStream fopout = new ByteArrayOutputStream(); FileOutputStream outfile = new FileOutputStream(args[2]); FopFactory fopFactory = FopFactory.newInstance(); Fop fop = fopFactory.newFop(MimeConstants.MIME_PDF, fopout); Transformer transformer = TransformerFactory.newInstance().newTransformer( new StreamSource(new File(args[1]))); transformer.transform(new StreamSource(new File(args[0])), new SAXResult(fop.getDefaultHandler())); PdfReader reader = new PdfReader(fopout.toByteArray()); int n = reader.getNumberOfPages(); Document document = new Document(reader.getPageSizeWithRotation(1)); PdfWriter writer = PdfWriter.getInstance(document, outfile); writer.setEncryption(PdfWriter.STRENGTH40BITS, "pdf", null, PdfWriter.AllowCopy); document.open(); PdfContentByte cb = writer.getDirectContent(); PdfImportedPage page; int rotation; int i = 0; while (i < n) { i++; document.setPageSize(reader.getPageSizeWithRotation(i)); document.newPage(); page = writer.getImportedPage(reader, i); rotation = reader.getPageRotation(i); if (rotation == 90 || rotation == 270) { cb.addTemplate(page, 0, -1f, 1f, 0, 0, reader.getPageSizeWithRotation(i).height()); } else { cb.addTemplate(page, 1f, 0, 0, 1f, 0, 0); } System.out.println("Processed page " + i); } document.close(); } catch( Exception e) { e.printStackTrace(); } }
Check the iText tutorial and documentation for setting access flags, password, encryption strength and other parameters.
Watermarks
In addition to the PDF Post-processing options, consider the following workarounds:
- Use a background image for the body region.
- (submitted by Trevor Campbell) Place an image in a region that overlaps the flowing text. For example, make region-before large enough to contain your image. Then include a block (if necessary, use an absolutely positioned block-container) containing the watermark image in the static-content for the region-before. Note that the image will be drawn on top of the normal content.
PostScript
The PostScript renderer has been brought up to a similar quality as the PDF renderer, but may still be missing certain features. It provides good support for most text and layout. Images and SVG are not fully supported, yet. Currently, the PostScript renderer generates PostScript Level 3 with most DSC comments. Actually, the only Level 3 features used are the FlateDecode and DCTDecode filter (the latter is used for 1:1 embedding of JPEG images), everything else is Level 2.
Configuration
The PostScript renderer configuration currently allows the following settings:
<renderer mime="application/postscript"> <auto-rotate-landscape>false</auto-rotate-landscape> <language-level>3</language-level> <optimize-resources>false</optimize-resources> <safe-set-page-device>false</safe-set-page-device> <dsc-compliant>true</dsc-compliant> </renderer>
The default value for the "auto-rotate-landscape" setting is "false". Setting it to "true" will automatically rotate landscape pages and will mark them as landscape.
The default value for the "language-level" setting is "3". This setting specifies the PostScript language level which should be used by FOP. Set this to "2" only if you don't have a Level 3 capable interpreter.
The default value for the "optimize-resources" setting is "false". Setting it to "true" will produce the PostScript file in two steps. A temporary file will be written first which will then be processed to add only the fonts which were really used and images are added to the stream only once as PostScript forms. This will reduce file size but can potentially increase the memory needed in the interpreter to process.
The default value for the "safe-set-page-device" setting is "false". Setting it to "true" will cause the renderer to invoke a postscript macro which guards against the possibility of invalid/unsupported postscript key/values being issued to the implementing postscript page device.
The default value for the "dsc-compliant" setting is "true". Setting it to "false" will break DSC compliance by minimizing the number of setpagedevice calls in the postscript document output. This feature may be useful when unwanted blank pages are experienced in your postscript output. This problem is caused by the particular postscript implementation issuing unwanted postscript subsystem initgraphics/erasepage calls on each setpagedevice call.
Limitations
- Images and SVG may not be displayed correctly. SVG support is far from being complete. No image transparency is available.
- Only Type 1 fonts are supported.
- Multibyte characters are not supported.
- PPD support is still missing.
PCL
This format is for the Hewlett-Packard PCL printers and other printers supporting PCL. It should produce output as close to identical as possible to the printed output of the PDFRenderer within the limitations of the renderer, and output device.
The output created by the PCLRenderer is generic PCL 5, HP GL/2 and PJL. This should allow any device fully supporting PCL 5 to be able to print the output generated by the PCLRenderer. PJL is used to control the print job and switch to the PCL language. PCL 5 is used for text, raster graphics and rectangular fill graphics. HP GL/2 is used for more complex painting operations. Certain painting operations are done off-screen and rendered to PCL as bitmaps because of limitations in PCL 5.
References
Limitations
- Text or graphics outside the left or top of the printable area are not rendered properly. This is a limitation of PCL, not FOP. In general, things that should print to the left of the printable area are shifted to the right so that they start at the left edge of the printable area.
- The Helvetica and Times fonts are not well supported among PCL printers so Helvetica is mapped to Arial and Times is mapped to Times New. This is done in the PCLRenderer, no changes are required in the FO's. The metrics and appearance for Helvetica/Arial and Times/Times New are nearly identical, so this has not been a problem so far.
- For the non-symbol fonts, the ISO 8859-1 symbol set is used (PCL set "0N").
- All fonts available to the Java2D subsystem are usable. The texts are painted as bitmap much like the Windows PCL drivers do.
- Multibyte characters are not supported.
- At the moment, only monochrome output is supported. PCL5c color extensions will only be implemented on demand. Color and grayscale images are converted to monochrome bitmaps (1-bit). Dithering only occurs if the JAI image library is available.
- Images are scaled up to the next resolution level supported by PCL (75, 100, 150, 200, 300, 600 dpi). For color and grayscale images an even higher PCL resolution is selected to give the dithering algorithm a chance to improve the bitmap quality.
- Currently, there's no support for clipping and image transparency, largely because PCL 5 has certain limitations.
Configuration
The PCL renderer configuration currently allows the following settings:
<renderer mime="application/vnd.hp-PCL"> <rendering>quality</rendering> <text-rendering>bitmap</text-rendering> <disable-pjl>false</disable-pjl> </renderer>
The default value for the "rendering" setting is "speed" which causes borders to be painted as plain rectangles. In this mode, no special borders (dotted, dashed etc.) are available. If you want support for all border modes, set the value to "quality" as indicated above. This will cause the borders to be painted as bitmaps.
The default value for the "text-rendering" setting is "auto" which paints the base fonts using PCL fonts. Non-base fonts are painted as bitmaps through Java2D. If the mix of painting methods results in unwelcome output, you can set this to "bitmap" which causes all text to be rendered as bitmaps.
The default value for the "disable-pjl" setting is "false". This means that the PCL renderer usually generates PJL commands before and after the document in order to switch a printer into PCL language. PJL commands can be disabled if you set this value to "true".
You can control the output resolution for the PCL using the "target resolution" setting on the FOUserAgent. The actual value will be rounded up to the next supported PCL resolution. Currently, only 300 and 600 dpi are supported which should be enough for most use cases. Note that this setting directly affects the size of the output file and the print quality.
Extensions
The PCL Renderer supports some PCL specific extensions which can be embedded into the input FO document. To use the extensions the appropriate namespace must be declared in the fo:root element like this:
<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format" xmlns:pcl="http://xmlgraphics.apache.org/fop/extensions/pcl">
Page Source (Tray selection)
The page-source extension attribute on fo:simple-page-master allows to select the paper tray the sheet for a particular simple-page-master is to be taken from. Example:
<fo:layout-master-set> <fo:simple-page-master master-name="simple" pcl:paper-source="2"> ... </fo:simple-page-master> </fo:layout-master-set>
Note: the tray number is a positive integer and the value depends on the target printer. Not all PCL printers support the same paper trays. Usually, "1" is the default tray, "2" is the manual paper feed, "3" is the manual envelope feed, "4" is the "lower" tray and "7" is "auto-select". Consult the technical reference for your printer for all available values.
Output Bin
The output-bin extension attribute on fo:simple-page-master allows to select the output bin into which the printed output should be fed. Example:
<fo:layout-master-set> <fo:simple-page-master master-name="simple" pcl:output-bin="2"> ... </fo:simple-page-master> </fo:layout-master-set>
Note: the output bin number is a positive integer and the value depends on the target printer. Not all PCL printers support the same output bins. Usually, "1" is the upper output bin, "2" is the lower (rear) output bin. Consult the technical reference for your printer for all available values.
Page Duplex Mode
The duplex-mode extension attribute on fo:simple-page-master allows to select the duplex mode to be used for a particular simple-page-master. Example:
<fo:layout-master-set> <fo:simple-page-master master-name="simple" pcl:duplex-mode="0"> ... </fo:simple-page-master> </fo:layout-master-set>
Note: the duplex is a positive integer and the value depends on the target printer. Not all PCL printers support duplexing. Usually, "0" is simplex, "1" is duplex (long-edge binding), "2" is duplex (short-edge binding). Consult the technical reference for your printer for all available values.
AFP
The FOP AFP Renderer deals with creating documents conforming to the IBM AFP document architecture also refered to as MO:DCA (Mixed Object Document Content Architecture).
The mapping of XSL-FO elements to the major MO:DCA structures is as follows:
| XSL-FO element | MO:DCA-P object |
|---|---|
| fo:root | Document |
| fo:page-sequence | Page Group |
| fo:simple-page-master | Page |
FOP creates exactly one Document per Printfile with an optional Resource Group at the beginning. FOP does not create document indices.
References
- AFP (Advanced Function Presentation)
- AFP Resources on the FOP WIKI
- Technical notes on AFP output in FOP
Limitations
This list is most likely badly incomplete.
- Clipping of text and graphics is not supported.
- Only IBM outline and raster fonts and to a limited extend the original fonts built into FOP are supported. Support for TrueType fonts may be added later.
Deployment in older environments
There are still a big number of older (or limited) MO:DCA/IPDS environments in production out there. AFP has grown in functionality over time and not every environment supports the latest features. We're trying to make AFP output work in as many environments as possible. However, to make AFP output work on older environments it is recommended to set to configuration to 1 bit per pixel (see below on how to do this). In this case, all images are converted to bi-level images using IOCA function set 10 (FS10) and are enclosed in page-segments since some implementation cannot deal with IOCA objects directly. If a higher number of bits per pixel is configured, FOP has to switch to at least FS11 which may not work everywhere.
Configuration
Fonts
The AFP Renderer requires special configuration particularly related to fonts. AFP Render configuration is done through the normal FOP configuration file. The MIME type for the AFP Renderer is application/x-afp which means the AFP Renderer section in the FOP configuration file looks like:
<renderer mime="application/x-afp"> <!-- AFP Renderer --> ... </renderer>
There are 4 font configuration variants supported:
- IBM Raster fonts
- IBM Outline fonts
- IBM CID-keyed (Type 0) fonts
- FOP built-in Base14 fonts
A typical raster font configuration looks like:
<!-- This is an example of mapping actual IBM raster fonts / code pages to a FOP font --> <font> <!-- The afp-font element defines the IBM code page, the matching Java encoding and the base URI for the font --> <afp-font type="raster" codepage="T1V10500" encoding="Cp500" base-uri="fonts/ibm/"> <!-- For a raster font a separate element for each font size is required providing the font size and the corresponding IBM Character set name --> <afp-raster-font size="7" characterset="C0N20070"/> <afp-raster-font size="8" characterset="C0N20080"/> <afp-raster-font size="10" characterset="C0N20000"/> <afp-raster-font size="11" characterset="C0N200A0"/> <afp-raster-font size="12" characterset="C0N200B0"/> <afp-raster-font size="14" characterset="C0N200D0"/> <afp-raster-font size="16" characterset="C0N200F0"/> <afp-raster-font size="18" characterset="C0N200H0"/> <afp-raster-font size="20" characterset="C0N200J0"/> <afp-raster-font size="24" characterset="C0N200N0"/> <afp-raster-font size="30" characterset="C0N200T0"/> <afp-raster-font size="36" characterset="C0N200Z0"/> </afp-font> <!-- These are the usual FOP font triplets as they apply to this font --> <font-triplet name="serif" style="normal" weight="normal"/> <font-triplet name="Times" style="normal" weight="normal"/> <font-triplet name="Times-Roman" style="normal" weight="normal"/> <font-triplet name="TimesNewRoman" style="normal" weight="normal"/> </font>
An outline font configuration is simpler as the individual font size entries are not required. However, the characterset definition is now required within the afp-font element.
<font> <afp-font type="outline" codepage="T1V10500" encoding="Cp500" characterset="CZH200 " base-uri="file:/fonts/ibm" /> <font-triplet name="sans-serif" style="normal" weight="normal"/> <font-triplet name="Helvetica" style="normal" weight="normal"/> <font-triplet name="any" style="normal" weight="normal"/> </font>
If "base-uri" is missing or a relative URI, the fonts are resolved relative to the font base URI specified in the configuration (or on the FopFactory).
A CID-keyed font (Type 0, double-byte outline font) configuration is much the same as an outline font. However, the characterset definition is now required within the afp-font element.
<font> <afp-font type="CIDKeyed" characterset="CZJHMNU" codepage="T1120000" encoding="UnicodeBigUnmarked" base-uri="file:/fonts/ibm" /> <font-triplet name="J-Heisei Mincho" style="normal" weight="normal" /> </font>
Note that the value of the encoding attribute in the example is the double-byte encoding 'UnicodeBigUnmarked' (UTF-16BE).
Experimentation has shown that the font metrics for the FOP built-in Base14 fonts are actually very similar to some of the IBM outline and raster fonts. In cases were the IBM font files are not available the base-uri attribute in the afp-font element can be replaced by a base14-font attribute giving the name of the matching Base14 font. In this case the AFP Renderer will take the font metrics from the built-in font.
<!-- The following are examples of defining outline fonts based on FOP built-in font metrics for the Adobe Base14 fonts --> <!-- sans-serif fonts based on Helvetica --> <font> <afp-font type="outline" codepage="T1V10500" encoding="Cp500" characterset="CZH200 " base14-font="Helvetica" /> <font-triplet name="sans-serif" style="normal" weight="normal"/> <font-triplet name="Helvetica" style="normal" weight="normal"/> <font-triplet name="any" style="normal" weight="normal"/> </font> <font> <afp-font type="outline" codepage="T1V10500" encoding="Cp500" characterset="CZH300 " base14-font="HelveticaOblique" /> <font-triplet name="sans-serif" style="italic" weight="normal"/> <font-triplet name="Helvetica" style="italic" weight="normal"/> <font-triplet name="any" style="italic" weight="normal"/> </font> <font> <afp-font type="outline" codepage="T1V10500" encoding="Cp500" characterset="CZH400 " base14-font="HelveticaBold" /> <font-triplet name="sans-serif" style="normal" weight="bold"/> <font-triplet name="Helvetica" style="normal" weight="bold"/> <font-triplet name="any" style="normal" weight="bold"/> </font> <font> <afp-font type="outline" codepage="T1V10500" encoding="Cp500" characterset="CZH500 " base14-font="HelveticaBoldOblique" /> <font-triplet name="sans-serif" style="italic" weight="bold"/> <font-triplet name="Helvetica" style="italic" weight="bold"/> <font-triplet name="any" style="italic" weight="bold"/> </font> <!-- serif fonts based on Times Roman --> <font> <afp-font type="outline" codepage="T1V10500" encoding="Cp500" characterset="CZN200 " base14-font="TimesRoman" /> <font-triplet name="serif" style="normal" weight="normal"/> <font-triplet name="Times" style="normal" weight="normal"/> <font-triplet name="Times-Roman" style="normal" weight="normal"/> </font> <!-- The following are examples of defining raster fonts based on FOP built-in font metrics for the Adobe Base14 fonts --> <!-- monospaced fonts based on Courier --> <font> <afp-font type="raster" codepage="T1V10500" encoding="Cp500"> <afp-raster-font size="7" characterset="C0420070" base14-font="Courier"/> <afp-raster-font size="8" characterset="C0420080" base14-font="Courier"/> <afp-raster-font size="10" characterset="C0420000" base14-font="Courier"/> <afp-raster-font size="12" characterset="C04200B0" base14-font="Courier"/> <afp-raster-font size="14" characterset="C04200D0" base14-font="Courier"/> <afp-raster-font size="20" characterset="C04200J0" base14-font="Courier"/> </afp-font> <font-triplet name="monospace" style="normal" weight="normal"/> <font-triplet name="Courier" style="normal" weight="normal"/> </font> <font> <afp-font type="raster" codepage="T1V10500" encoding="Cp500"> <afp-raster-font size="7" characterset="C0440070" base14-font="CourierBold"/> <afp-raster-font size="8" characterset="C0440080" base14-font="CourierBold"/> <afp-raster-font size="10" characterset="C0440000" base14-font="CourierBold"/> <afp-raster-font size="12" characterset="C04400B0" base14-font="CourierBold"/> <afp-raster-font size="14" characterset="C04400D0" base14-font="CourierBold"/> <afp-raster-font size="20" characterset="C04400J0" base14-font="CourierBold"/> </afp-font> <font-triplet name="monospace" style="normal" weight="bold"/> <font-triplet name="Courier" style="normal" weight="bold"/> </font>
By default, all manually configured fonts are embedded, unless they are matched in the referenced-fonts section of the configuration file. However, the default fonts shown above will not be embedded.
Output Resolution
By default the AFP Renderer creates output with a resolution of 240 dpi. This can be overridden by the <renderer-resolution/> configuration element. Example:
<renderer-resolution>240</renderer-resolution>
Images
By default the AFP Renderer converts all images to 8 bit grey level. This can be overridden by the <images/> configuration element. Example:
<images mode="color" />
This will put images as RGB images into the AFP output stream. The default setting is:
<images mode="b+w" bits-per-pixel="8" native="true"/>
Only the values "color" and "b+w" are allowed for the mode attribute.
The bits-per-pixel attribute is ignored if mode is "color". For "b+w" mode is must be 1, 4, or 8.
<images native="true"/>
When the native attribute is specified and set to "true", all image resources will be natively injected into the datastream using an object container rather than being converted into an IOCA FS45 image. Support for native image formats (e.g. JPEG, TIFF, GIF) is not always available on printer implementations so by default this configuration option is set to "false".
Setting cmyk="true" on the images element will enable CMYK colors. This will only have an effect if the color mode is set to "color". Example:
<images mode="color" cmyk="true"/>
When the color mode is set to 1 bit (bi-level), the "dithering-quality" attribute can be used to select the level of quality to use when converting images to bi-level images. Valid values for this attribute are floating point numbers from 0.0 (fastest) to 1.0 (best), or special values: "minimum" (=0.0), "maximum" (1.0), "medium" (0.5, the default). For the higher settings to work as expected, JAI needs to be present in the classpath. If JAI is present, 0.0 results in a minimal darkness-level switching between white and black. 0.5 does bayer-based dithering and 1.0 will use error-diffusion dithering. The higher the value, the higher the quality and the slower the processing of the images.
<images mode="b+w" bits-per-pixel="1" dithering-quality="maximum"/>
Shading
By default, filled rectangles are painted using their given color using a PTOCA I-axis rule (DIR). But not all environments handle these colors correctly. That's why a setting is supported that paints the rectangles using an ordered dither pattern (bi-level) with an inline IOCA FS10 image that is used together with the "replicate and trim" mapping. The optional "shading" element can be used to control the shading mode. Its default value is "color". To enable the dithered mode, use "dithered". Example:
<shading>dithered</shading>
Resource Group File
By default the AFP Renderer will place all data resource objects such as images within the document of the main output datastream. An external resource group file where document resources may be specified with the <resource-group-file/> configuration element. Example:
<resource-group-file>external_resources.afp</resource-group-file>
Resource Level Defaults
By default, bitmap image objects (or page segments derived from them) are put in the print-file-level resource group and GOCA graphics are inlined for compatibility with the AFP Workbench tool.
It is possible to override these defaults, either per image (see the afp:resource-level extension attribute below) or by specifying different defaults in the configuration:
<default-resource-levels goca="print-file" bitmap="inline"/>
"goca" refers to GOCA graphics and "bitmap" refers to IOCA images. The possible values for the attributes are "inline" and "print-file". In the future, additional possibilities may be added.
Extensions
The AFP Renderer supports some AFP specific extensions which can be embedded into the input fo document. To use the extensions the appropriate namespace must be declared in the fo:root element like this:
<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format" xmlns:afp="http://xmlgraphics.apache.org/fop/extensions/afp">
Page Overlay (IPO) Extension
The include-page-overlay extension element allows to define on a per simple-page-master basis a page overlay resource. Example:
<fo:layout-master-set> <fo:simple-page-master master-name="simple"> <afp:include-page-overlay name="O1SAMP1 " x="20mm" y="30mm" /> ... </fo:simple-page-master> </fo:layout-master-set>
The mandatory name attribute must refer to an 8 character (space padded) resource name that must be known in the AFP processing environment. Optional x and y attributes can be specified to place the Overlay at an offset from the top left of the page.
Page Segment (IPS) Extension
The include-page-segment extension element allows to define resource substitution for fo:external-graphics elements. Example:
<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format" xmlns:afp="http://xmlgraphics.apache.org/fop/extensions/afp"> <fo:layout-master-set> <fo:simple-page-master master-name="simple"> <afp:include-page-segment name="S1ISLOGO" src="../../resources/images/bgimg300dpi.jpg" /> <fo:region-body/> </fo:simple-page-master> </fo:layout-master-set>
The include-page-segment extension element can only occur within a simple-page-master. Multiple include-page-segment extension elements within a simple-page-master are allowed. The mandatory name attribute must refer to an 8 character (space padded) resource name that must be known in the AFP processing environment. The value of the mandatory src attribute is compared against the value of the src attribute in fo:external-graphic elements and if it is identical (string matching is used) in the generated AFP the external graphic is replaced by a reference to the given resource.
The effect here is that whenever FOP encounters the URI specified in the extension, it will effectively generate code to include the page segment with the given name instead of embedding the image referenced by the URI. The URI is still required as the underlying image serves as a provider for the intrinsic size of the image (At the moment, FOP is unable to extract the intrinsic size of the page segment from an AFP resource file). For the image to appear in an AFP viewer or to be printed, the AFP resource must be available on the target device. FOP does not embed the page segment in the generated file. Please also note that page segments cannot be scaled. They are always rendered in their intrinsic size.
Tag Logical Element (TLE) Extension
The tag-logical-element extension element allows to injects TLEs into the AFP output stream. Example:
<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format" xmlns:afp="http://xmlgraphics.apache.org/fop/extensions/afp"> <fo:layout-master-set> <fo:simple-page-master master-name="simple"> <afp:tag-logical-element name="The TLE Name" value="The TLE Value" /> <fo:region-body/> </fo:simple-page-master> </fo:layout-master-set> [..] <fo:page-sequence master-reference="simple"> <afp:tag-logical-element name="foo" value="bar"/> <fo:flow flow-name="xsl-region-body"> [..]
The tag-logical-element extension element can appear within a simple-page-master (page level) or it can appear as child of page-sequence (page group level). Multiple tag-logical-element extension elements within a simple-page-master or page-sequence are allowed. The name and value attributes are mandatory.
No Operation (NOP) Extension
The no-operation extension provides the ability to carry up to 32K of comments or any other type of unarchitected data into the AFP output stream. Example:
<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format" xmlns:afp="http://xmlgraphics.apache.org/fop/extensions/afp"> <fo:layout-master-set> <fo:simple-page-master master-name="simple"> <afp:no-operation name="My NOP">insert up to 32k of character data here!</afp:no-operation> </fo:simple-page-master> </fo:layout-master-set>
The no-operation extension element can only occur within a simple-page-master. Multiple no-operation extension elements within a simple-page-master are allowed. The name attribute is mandatory.
Invoke Medium Map (IMM) Extension
The invoke-medium-map extension allows to generate IMM fields (Invoke Medium Map) in the generated AFP output. Example:
<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format" xmlns:afp="http://xmlgraphics.apache.org/fop/extensions/afp"> [..] <fo:page-sequence master-reference="normal"> <afp:invoke-medium-map name="MYMAP"/> <fo:flow flow-name="xsl-region-body"> [..]
The invoke-medium-map element is allowed as child of fo:page-sequence (page group level) or fo:simple-page-master. It is NOT supported on document level (fo:root), yet. FOP also doesn't support specifying medium maps inside XML (using BMM/EMM). It can only reference an existing medium map by name. The medium map has to be constructed through different means and available on the target platform.
Form Maps/Defs
Apache FOP supports embedding an external form map resource in the generated AFP output. This is done using the afp:include-form-map extension. An example:
<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format" xmlns:afp="http://xmlgraphics.apache.org/fop/extensions/afp"> [..] <fo:declarations> <afp:include-form-map name="F1SAMP1" src="file:f1samp1.fde"/> </fo:declarations>
The afp:include-form-map is to be placed as a direct child of fo:declarations. The name is an AFP resource name (max. 8 characters) and the src attribute is the URI identifying the external form map resource. When such a form map is embedded, you can use the afp:invoke-medium-map extension (described above) to invoke any medium map included in the form map.
Foreign Attributes
Resource
The resource foreign attributes provides the ability to name and control where data object resources (e.g. images/scalable vector graphics) will reside in the AFP output. The afp foreign attributes are only used in conjuntion with <fo:external-graphic/> and <instream-foreign-object/>. Example:
<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format" xmlns:afp="http://xmlgraphics.apache.org/fop/extensions/afp"> ... <fo:block> <fo:external-graphic width="2.0cm" content-width="2.0cm" height="1.8cm" content-height="1.8cm" src="examples/fo/graphics/xml_feather.gif" afp:resource-name="feather" afp:resource-level="external" afp:resource-group-file="resources.afp"/> </fo:block> <fo:block> <fo:instream-foreign-object height="758.047pt" content-height="758.047pt" width="576.96pt" content-width="576.96pt" afp:resource-name"circles" afp:resource-level="inline"> <svg xmlns="http://www.w3.org/2000/svg" width="12cm" height="12cm"> <g style="fill-opacity:0.7; stroke:black; stroke-width:0.1cm;"> <circle cx="6cm" cy="2cm" r="100" style="fill:red;" transform="translate(0,50)" /> <circle cx="6cm" cy="2cm" r="100" style="fill:blue;" transform="translate(70,150)" /> <circle cx="6cm" cy="2cm" r="100" style="fill:green;" transform="translate(-70,150)"/> </g> </svg> </fo:instream-foreign-object> </fo:block>
The resource-level attribute where the resource object will reside in the AFP output datastream. The possible values for this are "inline", "print-file" and "external". When "external" is used a resource-group-file attribute must also be specified. Please refer to the Resource Level Defaults above to see what is used if the resource-level attribute is not specified.
RTF
JFOR, an open source XSL-FO to RTF converter has been integrated into Apache FOP. This will create an RTF (rich text format) document that will attempt to contain as much information from the XSL-FO document as possible. It should be noted that is not possible (due to RTF's limitations) to map all XSL-FO features to RTF. For complex documents, the RTF output will never reach the feature level from PDF, for example. Thus, using RTF output is only recommended for simple documents such as letters.
The RTF output follows Microsoft's RTF specifications and produces best results on Microsoft Word.
These are some known restrictions compared to other supported output formats (not a complete list):
-
Not supported/implemented:
- break-before/after (supported by the RTF library but not tied into the RTFHandler)
- fo:page-number-citation-last
- keeps (supported by the RTF library but not tied into the RTFHandler)
- region-start/end (RTF limitation)
- multiple columns
- Only a single page-master is supported
- Not all variations of fo:leader are supported (RTF limitation)
- percentages are not supported everywhere
XML (Area Tree XML)
This is primarily for testing and verification. The XML created is simply a representation of the internal area tree put into XML. We use that to verify the functionality of FOP's layout engine.
The other use case of the Area Tree XML is as FOP's "intermediate format". More information on that can be found on the page dedicated to the Intermediate Format.
Java2D/AWT
The Java2DRenderer provides the basic functionality for all Java2D-based output formats (AWT viewer, direct print, PNG, TIFF).
The AWT viewer shows a window with the pages displayed inside a Java graphic. It displays one page at a time. The fonts used for the formatting and viewing depend on the fonts available to your JRE.
It is possible to directly print the document from the command line. This is done with the same code that renders to the Java2D/AWT renderer.
Known issues
If you run into the problem that the printed output is incomplete on Windows: this often happens to users printing to a PCL printer. There seems to be an incompatibility between Java and certain PCL printer drivers on Windows. Since most network-enabled laser printers support PostScript, try switching to the PostScript printer driver for that printer model.
Bitmap (TIFF/PNG)
It is possible to directly create bitmap images from the individual pages generated by the layout engine. This is done with the same code that renders to the Java2D/AWT renderer.
Currently, two output formats are supported: PNG and TIFF. TIFF produces one file with multiple pages, while PNG output produces one file per page. Note: FOP can only produce multiple files (with PNG output) if you can set a java.io.File indicating the primary PNG file using the FOUserAgent.setOutputFile(File) method.
The quality of the bitmap depends on the target resolution setting on the FOUserAgent and on further settings described below.
Configuration
The TIFF and PNG renderer configuration currently allows the following settings:
<renderer mime="image/png"> <color-mode>rgba</color-mode> <transparent-page-background>true</transparent-page-background> <background-color>white</background-color> <anti-aliasing>true</anti-aliasing> <rendering>quality</rendering> <fonts><!-- described elsewhere --></fonts> </renderer>
The default value for the "color-mode" setting is "rgba" which is equivalent to a 24bit RGB image with an 8bit alpha channel for transparency. Valid values are:
- rgba: RGB with alpha channel (24bit + 8bit = 32bit)
- rgb: RGB (24bit)
- gray: gray (8bit)
- bi-level (or binary): bi-level (1bit)
Please note that there is currently no dithering or error diffusion available for bi-level bitmap output.
The default value for the "transparent-page-background" setting is "false" which paints an opaque, white background for the whole image. If you set this to "true", no such background will be painted and you will get a transparent image if an alpha channel is available in the output format.
The default value for the "background-color" setting is "white". The color specifies in which color the page background is painted. It will only be painted if "transparent-page-background" is not set to "true". All XSL-FO colors (including color functions) can be used.
The default value for the "anti-aliasing" setting is "true". You can set this value to "false" to disable anti-aliasing and thus improve rendering speeds a bit at the loss of some image quality.
The default value for the "rendering" setting is "true". You can set this value to "false" to improve rendering speeds a bit at the loss of some image quality. If this setting has an actual effect depends on the JVM's Java2D backend.
TIFF-specific Configuration
In addition to the above values the TIFF renderer configuration allows some additional settings:
<renderer mime="image/tiff"> <transparent-page-background>true</transparent-page-background> <compression>CCITT T.6</compression> <fonts><!-- described elsewhere --></fonts> </renderer>
The default value for the "compression" setting is "PackBits" which which is a widely supported RLE compression scheme for TIFF. The set of compression names to be used here matches the set that the Image I/O API uses. Note that not all compression schemes may be available during runtime. This depends on the actual codecs being available. Here is a list of possible values:
- NONE (no compression)
- PackBits (RLE, run-length encoding)
- JPEG
- Deflate
- LZW
- ZLib
- CCITT T.4 (Fax Group 3)
- CCITT T.6 (Fax Group 4)
This setting may override any setting made using the "color-mode". For example, if "CCITT T.6" is selected, the color mode is automatically forced to "bi-level" because this compression format only supports bi-level images.
Runtime Rendering Options
The IF-based bitmap output implementations support a rendering option with the key "target-bitmap-size" (value: java.awt.Dimension) that allows to force the pages to be proportionally fit into a bitmap of a given size. This can be used to produce thumbnails or little preview images of the individual pages. An example:
userAgent.getRenderingOptions().put( "target-bitmap-size", new Dimension(320, 200));
TXT
The text renderer produces plain ASCII text output that attempts to match the output of the PDFRenderer as closely as possible. This was originally developed to accommodate an archive system that could only accept plain text files, and is primarily useful for getting a quick-and-dirty view of the document text. The renderer is very limited, so do not be surprised if it gives unsatisfactory results.
The Text renderer works with a fixed size page buffer. The size of this buffer is controlled with the textCPI and textLPI public variables. The textCPI is the effective horizontal characters per inch to use. The textLPI is the vertical lines per inch to use. From these values and the page width and height the size of the buffer is calculated. The formatting objects to be rendered are then mapped to this grid. Graphic elements (lines, borders, etc) are assigned a lower priority than text, so text will overwrite any graphic element representations.
Because FOP lays the text onto a grid during layout, there are frequently extra or missing spaces between characters and lines, which is generally unsatisfactory. Users have reported that the optimal settings to avoid such spacing problems are:
- font-family="Courier"
- font-size="7.3pt"
- line-height="10.5pt"
Output Formats in the Sandbox
Due to the state of certain renderers we moved some of them to a "sandbox" area until they are ready for more serious use. The renderers and FOEventHandlers in the sandbox can be found under src/sandbox and are compiled into build/fop-sandbox.jar during the main build. The output formats in the sandbox are marked as such below.
MIF
This format is the Maker Interchange Format which is used by Adobe Framemaker.
SVG
This format creates an SVG document that has links between the pages. This is primarily for slides and creating svg images of pages. Large documents will create SVG files that are far too large for an SVG viewer to handle. Since FO documents usually have text the SVG document will have a large number of text elements. The font information for the text is obtained from the JVM in the same way as for the AWT viewer. If the SVG is viewed on a system where the fonts are different, such as another platform, then the page may look wrong.
Wish list
Apache FOP is easily extensible and allows you to add new output formats to enhance FOP's functionality. There's a number of output formats which are on our wish list. We're looking for volunteers to help us implement them.
- ODF (Open Document Format): The standardized successor to OpenOffice's file format.
by Keiron Liddle, Art Welch
version 953952


Two Sheep Found Fatally Stabbed And Marked With Pentagrams
by Cameron FrewEnglish villagers suspect a Satanic cult is roaming their woods, after sheep and cattle were found slaughtered and marked with pentagrams.
Advertisements
Over the past five days, Hampshire’s New Forest National Park has been hit with a spate of disturbing animal murders.
Three cattle were found knifed to death, two sheep were killed and marked with pentagrams, a heifer was injured, and a church was sprayed with Satanic symbols – something wicked this way comes, it seems.
Advertisements
Police have launched an investigation into the strange, grim incidents in Bramshaw – naturally, residents and local farmers are growing increasingly concerned for the village’s safety.
Judy Rudd, who’s lived in New Forest for 40 years, was walking her two dogs when she came across the deceased, bloodied sheep.
‘It had purple and green aerosol symbols sprayed on it. It was a pentagram and a cross. It had been stabbed to death. The wounds were in the side of the body by the rib cage. It was very unpleasant… some people think it’s sinister,’ she said.
Her husband Julian added:
Advertisements
I think it’s reasonable to say it’s not just lads messing about. The owner’s very cut up about it and very worried. There’s a certain amount of concern, it’s unnerving – we’ve lived here 40 years and there’s been nothing like this before.
I don’t agree that it’s done to shock – you don’t go around knifing animals simply to shock people. It’s related to something other than simply a desire to injure animals – it’s either witchcraft or whatever. It’s rather worrying.
Witchcraft appears to be a common suspicion among the residents. Reverend David Bacon, from St Peter’s Church in the village, says while it could be kids, he’s ‘seen a lot of stuff’ over the past 15 years, ‘but nothing like this’.
Rev. Bacon added: ‘There’s been witchcraft round here for hundreds of years – the New Forest is well known for witchcraft and black magic happening, and this has obviously gone up a level. The symbol drawn on the sheep is a Satanic symbol, that’s quite well known.’
In addition to an inverted cross and ‘666’ being painted on the doors of the church, three calves were also found brutally stabbed in Linford, just nearby.
Advertisements
The farmer who owns the injured heifer – which required veterinary treatment – says it’s scary to think there’s potentially a group people out there doing this to animals. ‘I’ve also got a grandchild and we’re out and about in the dark… why injure and kill animals and put symbols on them?’ he said.
Sergeant Andy Williams, of Hampshire Constabulary’s Country Watch team, said:
These incidents are unusual in the New Forest. We are looking at the circumstances of each one to see if they are linked, and to see how these animals came to be injured. We would also urge anyone who uses the Forest, including Commoners, to be vigilant. Please contact us if you see anything suspicious.
After graduating from Glasgow Caledonian University with an NCTJ and BCTJ-accredited Multimedia Journalism degree, Cameron ventured into the world of print journalism at The National, while also working as a freelance film journalist on the side, becoming an accredited Rotten Tomatoes critic in the process. He’s now left his Scottish homelands and took up residence at UNILAD as a journalist.


Blogs,Projects,Hackathons
Competitive Coding
Ace DSA
Head into open-source
A Computer Science Portal
Machine Learning and Data Science Community
30 Days of Web development
Boost your open-source journey


The Home of all SoftUni Ninjas!
Here all noob ninjas start their journey to become masters after many years of hard training every day. Its tough and only around 10% of them survive, but they become the best in what they do.
The Judge watches all ninjas and punishes them for nothing even if they have done their job perfectly. No one dares to argue with him, because he gets angry very easy and this causes big problems not only for them but for everyone who is unlucky to get in his way.
There are plenty of rooms to study different ninjutsus.The noob nindjas need dedication and hard work every day to master them. Not many graduate but that is the way of the SoftUni ninjas, only the toughest survive.


The brown bear (Ursus arctos) is native to parts of northern Eurasia and North America. It's conservation status is currently "Least Concern". There are many subspecies within the brown bear species, including the Atlas bear and the Himalayan brown bear.
Learn moreHere are some bear species:
The following countries have the largest populations of brown bears:


closed
by None at 2020-01-31 14:36:40.referenced
by None at 2020-01-31 14:36:39.merged
by None at 2020-01-31 14:36:39.closed
by None at 2020-01-31 14:36:40.head_ref_deleted
by None at 2020-01-31 14:36:44.review_requested
by Shaun Ellis at 2020-01-30 22:10:44.referenced
by None at 2020-01-31 14:38:17.merged
by None at 2020-01-31 14:38:17.closed
by None at 2020-01-31 14:38:17.head_ref_deleted
by None at 2020-01-31 14:38:21.head_ref_force_pushed
by None at 2020-01-31 15:44:16.head_ref_force_pushed
by None at 2020-01-31 21:17:24.review_requested
by None at 2020-01-31 21:19:15.mentioned
by Axa Mei Liauw at 2020-01-31 15:42:58.subscribed
by Axa Mei Liauw at 2020-01-31 15:42:58.mentioned
by None at 2020-01-31 21:22:12.subscribed
by None at 2020-01-31 21:22:12.Browse Everthing appears to be passing each file twice: once with a location and once without. The files are serving fine on figgy so this either got them all anyway or the user tried again and it worked. But is this intended behavior?
I asked Dan whether this was him and if so, whether he could tell us more about what happened. If I hear back I'll update this ticket.
Params {
...
"browse_everything" => {"selected_files" => [
{
"name" => "cd-6484_01.wav",
"size" => "66138298",
"container" => "false",
"provider" => "file_system",
"type" => "audio/x-wav"
},
{
"name" => "cd-6484_02.wav",
"size" => "63387610",
"container" => "false",
"provider" => "file_system",
"type" => "audio/x-wav"
},
{
"name" => "cd-6484_03.wav",
"size" => "49275586",
"container" => "false",
"provider" => "file_system",
"type" => "audio/x-wav"
},
{
"name" => "cd-6484_04.wav",
"size" => "47687980",
"container" => "false",
"provider" => "file_system",
"type" => "audio/x-wav",
"location" => "file_system:/mnt/hydra_sources/music/cd-6000-6999/cd-6484/1133081/cd-6484_01.wav"
},
{
"name" => "cd-6484_01.wav",
"size" => "66138298",
"container" => "false",
"provider" => "file_system",
"type" => "audio/x-wav",
"location" => "file_system:/mnt/hydra_sources/music/cd-6000-6999/cd-6484/1133081/cd-6484_02.wav"
},
{
"name" => "cd-6484_02.wav",
"size" => "63387610",
"container" => "false",
"provider" => "file_system",
"type" => "audio/x-wav",
"location" => "file_system:/mnt/hydra_sources/music/cd-6000-6999/cd-6484/1133081/cd-6484_03.wav"
},
{
"name" => "cd-6484_03.wav",
"size" => "49275586",
"container" => "false",
"provider" => "file_system",
"type" => "audio/x-wav",
"location" => "file_system:/mnt/hydra_sources/music/cd-6000-6999/cd-6484/1133081/cd-6484_04.wav"
},
{
"name" => "cd-6484_04.wav",
"size" => "47687980",
"container" => "false",
"provider" => "file_system",
"type" => "audio/x-wav"
}
]},
"controller" => "browse_everything",
"action" => "resolve"
}
I will investigate this and get this fixed.
I'm sorry for the delay in providing an update (yarn
and solr_wrapper
were delaying me in my local environment). I'm struggling to actually reproduce this behavior.
I have attempted the following:
Perhaps this is just specific to audio files? I will look further towards reproducing this with those cases.
I've also just tried this with a Recording
specifically. I'm going to need to request a description of the behavior which triggered this before I can propose a solution for this.
renamed
by None at 2020-01-31 14:01:09.labeled
by James R. Griffin III at 2020-01-31 14:04:53.assigned
by James R. Griffin III at 2020-01-31 14:04:55.unassigned
by James R. Griffin III at 2020-01-31 15:54:51.head_ref_force_pushed
by Trey Pendragon at 2020-01-30 22:07:02.head_ref_force_pushed
by Trey Pendragon at 2020-01-30 22:08:26.head_ref_force_pushed
by Trey Pendragon at 2020-01-30 22:09:42.head_ref_force_pushed
by Trey Pendragon at 2020-01-30 22:16:03.head_ref_force_pushed
by Trey Pendragon at 2020-01-30 22:18:04.referenced
by Trey Pendragon at 2020-01-31 17:29:08.merged
by Trey Pendragon at 2020-01-31 17:29:08.closed
by Trey Pendragon at 2020-01-31 17:29:08.head_ref_deleted
by Trey Pendragon at 2020-01-31 17:29:11.Updates hadn't been processing. Resolved now: https://catalog.princeton.edu/catalog/11732481
closed
by Nikitas Tampakis at 2020-01-31 21:01:27.closed
by Nikitas Tampakis at 2020-01-31 21:01:44.referenced
by Kevin Reiss at 2020-01-31 20:41:38.merged
by Kevin Reiss at 2020-01-31 20:41:38.closed
by Kevin Reiss at 2020-01-31 20:41:38.head_ref_deleted
by Kevin Reiss at 2020-01-31 20:42:13.For context, Marquand and reference items, which don't circulate out of the library, are "On-site" items. In Marquand, usually when an item is charged/checked out, it is taken to a study carrel within the library. Staff have requested we instruct users to visit the front desk ("See front desk") because they should be able to locate the item within the library. Staff are unable to locate lost and missing items however.
Visiting the front desk of the library may be the most useful text to display to the user, but either way, the behavior should be consistent with missing items from circulating library locations ie: https://catalog.princeton.edu/catalog/1787963
referenced
by Trey Pendragon at 2020-01-31 19:31:41.merged
by Trey Pendragon at 2020-01-31 19:31:41.closed
by Trey Pendragon at 2020-01-31 19:31:41.head_ref_deleted
by Trey Pendragon at 2020-01-31 19:31:44.referenced
by Cliff Wulfman at 2020-01-30 22:04:23.merged
by Cliff Wulfman at 2020-01-30 22:04:23.closed
by Cliff Wulfman at 2020-01-30 22:04:23.head_ref_deleted
by Francis Kayiwa at 2020-01-30 22:04:28.referenced
by Francis Kayiwa at 2020-01-31 13:30:21.referenced
by Francis Kayiwa at 2020-01-31 13:50:27.closed
by Francis Kayiwa at 2020-01-31 14:03:29.head_ref_force_pushed
by Francis Kayiwa at 2020-01-31 13:50:27.referenced
by Francis Kayiwa at 2020-01-31 14:03:29.merged
by Francis Kayiwa at 2020-01-31 14:03:29.closed
by Francis Kayiwa at 2020-01-31 14:03:30.review_requested
by Francis Kayiwa at 2020-01-31 13:54:34.referenced
by None at 2020-01-31 14:06:18.merged
by None at 2020-01-31 14:06:18.closed
by None at 2020-01-31 14:06:19.head_ref_deleted
by None at 2020-01-31 14:06:38.referenced
by Francis Kayiwa at 2020-01-31 13:53:27.assigned
by None at 2020-01-31 13:53:55.unassigned
by None at 2020-01-31 13:54:07.closed
by Francis Kayiwa at 2020-01-31 14:08:11.review_requested
by Francis Kayiwa at 2020-01-31 14:10:49.referenced
by None at 2020-01-31 14:22:02.merged
by None at 2020-01-31 14:22:02.closed
by None at 2020-01-31 14:22:02.head_ref_deleted
by None at 2020-01-31 14:22:06.closed
by Francis Kayiwa at 2020-01-31 14:53:00.head_ref_force_pushed
by Trey Pendragon at 2020-01-31 15:57:09.referenced
by None at 2020-01-31 17:05:18.merged
by None at 2020-01-31 17:05:18.closed
by None at 2020-01-31 17:05:18.referenced
by Francis Kayiwa at 2020-01-31 18:15:17.merged
by Francis Kayiwa at 2020-01-31 18:15:17.closed
by Francis Kayiwa at 2020-01-31 18:15:17.head_ref_deleted
by Francis Kayiwa at 2020-01-31 18:15:20.referenced
by Francis Kayiwa at 2020-02-01 00:12:14.merged
by Francis Kayiwa at 2020-02-01 00:12:15.closed
by Francis Kayiwa at 2020-02-01 00:12:15.head_ref_deleted
by Francis Kayiwa at 2020-02-01 00:12:18.@tampakis Thanks for putting this together.
mentioned
by Nikitas Tampakis at 2020-01-31 16:19:38.subscribed
by Nikitas Tampakis at 2020-01-31 16:19:38.closed
by Kevin Reiss at 2020-01-31 16:19:56.referenced
by Kevin Reiss at 2020-01-31 16:19:56.merged
by Kevin Reiss at 2020-01-31 16:19:56.closed
by Kevin Reiss at 2020-01-31 16:19:56.head_ref_deleted
by Kevin Reiss at 2020-01-31 16:25:08.


{% extends "global/Page.html" %} {% load staticfiles otree_tags %} {% block title %} Quiz 3/3 {% endblock %} {% block content %} {% formfield player.comprehension_coalitions with label="What are all the possible coalitions that can be formed?" %}


| Name | https://lab-.bcdevexchange.org |
| I want to: Reserve this namespace only Proxy this namespace to an existing site Proxy this namespace to a lab instance |
|
| Existing Site URL |
| Information to setup lab instance | |
| GitHub Owner/Repo | / |
| Git Branch | |
| Dockerfile Path | |
| Published Docker Port |


Good Morning, {{name}}
Placeholder dashboard popup. To be completed in a future sprint.
My Analytics
Settings
Notifications
Log Out


Suffolk Coastal Brexit Party hopeful to stand as Independent in 2019 General Election
by Paul GeaterThe candidate chosen by The Brexit Party to stand against Dr Therese Coffey in Suffolk Coastal will still be on the ballot paper - even though the party has pulled out of seats won by the Tories in 2017.
Businessman Tony Love said he was angered by the decision announced by party leader Nigel Farage on Monday - and would still be putting his name forward as an Independent Brexit candidate in the general election on December 12.
He said: "We've already been campaigning hard and we're getting some good reactions from voters - and then we suddenly heard the campaign was being pulled!
"This constituency voted to leave the EU - but all the other candidates voted to Remain in 2016. If I don't stand, who is going to represent those people who want to leave?
"We're hearing about a deal - but a lot of us don't think that is really Brexit. We have a shop in Felixstowe and that has been very popular."
Mr Love said he would continue to campaign across the constituency - and believed he was the first Brexit Party candidate who had been dropped to confirm that he would stand as an independent.
The decision to pull the Brexit Party candidates from constituencies won by the Tories two years ago has affected almost every seat in Suffolk and Essex - only Ipswich where Labour's Sandy Martin is hoping to be re-elected is still facing a Brexit Party challenge.
And there is pressure for the Brexit Party to pull out of Labour/Conservative marginal seats like this in a bid to give the Tories a clear run in the election.
In Suffolk Coastal the defending Conservative candidate and cabinet minister Dr Therese Coffey said she was not concerned about Mr Love's decision. She is defending a majority of 16,000 over Labour.
She said: "If he wants to stand, then it's up to him. It really doesn't bother me - we're getting out message out across the constituency.
"What we're hearing people say is that they want us to get on with leaving the EU with a deal - and that is what the government has negotiated. Voters seem to understand that."
The other confirmed candidates in the election in Suffolk Coastal - Labour, the Liberal Democrats and Greens are all in favour of either a second referendum on membership of the EU or revoking Article 50 and remaining in the Union.
Potential candidates have until 4pm on Thursday afternoon to be nominated or withdraw from the election process.


Hello! I'm
Roman
.I'm a
Front-End Web Developer
andGraphic Designer
, living in London.I love building unique, engaging and functional websites. You know, the ones that make you stop and think, "Ooh, that's cool". Yeah, those ones.
I am currently available for freelance web design and development work, and I'm also on the hunt for a full-time role in an exciting company.
To check out some of my previous projects, just scroll down...
Project
1
/ 4
Housing Bubble
BUILD: AngularJS, D3.js, HTML, PostgreSQL, Ruby on Rails, SCSS.
Housing Bubble was created with the primary aim to learn and practice the D3.js library. The application visualises property data retrieved from the Zoopla API. Houses are represented as SVG bubbles of different sizes and colours relative to the their listed value. Users can search for any location in the UK by Street name, Post code, Town, City or Area. The user can log in, add and remove houses to and from their housing portfolio and then view the house listed on Zoopla by clicking on the houses grey info box. Users can also sort houses by the number of Bedrooms or Bathrooms. There is a colour key that pops up when the footer is hovered over.
Snake
BUILD: CSS, JavaScript, jQuery, HTML.
This project was a modern remake of the classic Snake game. It includes an opening sequence that spells out the word 'SNAKE' with the snake itself. This version of Snake has four game options/levels which are: 1. 'Snake 2' with hollow walls, 2. 'Classic Snake' with solid walls, 3. 'Some walls' in the middle of the board and on the edge, 4. 'Bombs' that randomly appear on the game board. You can toggle through the levels using the the X and Z keys (only when the game is paused).
Lazy Recipes
BUILD: AWS, Express, HTML, JavaScript, MongoDB, Node.js, SCSS.
The appropriately titled “Lazy Recipes” is an application that finds recipes for users. The concept is simple - a user can upload images of food (or browse existing images) and then view recipes that can be cooked using the ingredients that are in that image. It uses an impressive image recognition API from Clarafai to achieve this along with a recipe finder API from Food2Fork. The design of the website is clean and rounded - this was to create a soft and inviting impression to the site, whilst allowing the content to be easily viewed and appreciated.
Bet Bucket
BUILD: AngularJS, ChartsJS, Express, HTML, MongoDB, Node.js, SCSS.
Bet Bucket is an application that can track and visualise real-time sports odds using multiple repeated requests to the Betfair API. Users can build several accumulators bets, each containing multiple tracked bets. Bets are selected through a 4-stage selection process, that requires users to delve into Betfair's in-play events and select: 1. Event-Type (eg. Soccer), 2. Event Name (eg. Real Madrid Vs Barcelona), 3. Market Name (eg. Match Odds) 4. Runner Name (eg. Barcelona). Once added to the users chosen accumulator, all events are tracked and visualised by the graph at the top of the page. Users can also enter a stake to see the returned amount of £'s should they place a bet.
Please view this website on a desktop for the intended experience
Roman Stankiewicz
Developer & Designer
Hello! I'm Roman.
I'm a Front-End Web Developer and Graphic Designer, living in London.
I love building unique, engaging and functional websites. You know, the ones that make you stop and think, "Ooh, that's cool". Yeah, those ones.
I am currently available for freelance web design and development work, and I'm also on the hunt for a full-time role in an exciting company. To check out some of my previous projects, please view this website on a desktop.


We couldn't find a webpack config file in its default location, webpack.config.js
, in the folder you chose. You may have opened the wrong folder, or moved your config file.
Click the "Choose Config File" button below if you moved your config file and would like the CDK to use its new location.


The first two statements of your BASH script should be… [crayon-5e975a4c05220598182354/] The first statement is a Mac, GNU/Linux, and BSD portable way of finding the location of the bash interpreter. The second statement combines “set -e” wh…
The most successful malleable system in history Emacs is probably the most successful malleable system in the history of computing. What can we learn from it for designing the malleable systems of the future?
The Devastating Decline of a Brilliant Young Coder Lee Holloway programmed internet security firm Cloudflare into being. But then he became apathetic, distant, and unpredictable—for a long time, no one could make sense of it.
Framework Design Guidelines: Conventions, Idioms, and Patterns for Reusable .NET Libraries, 3rd Edition Master Today's Best Practices for Building Reusable .NET Frameworks, Libraries, and ComponentsFramework Design Guidelines has long been the definitive guide to best practices for developing components and component libraries … - Selection from Framework ...
WebDriver (Chromium) - Microsoft Edge Development Learn how to test your website or app in Microsoft Edge or automate the browser with WebDriver.
WinUI Community Call (April 15, 2020) Monthly WinUI (Windows UI Library) community standup. *** WinUI is the native UI platform for Windows. You can use it to build rich .NET and C++ apps for Windows 10 devices.
databinding GmbH | Ihr Partner für Software, Datenanalyse und Beratung Ob Software Entwicklung, Datenanalyse sowie deren Aufbereitung oder eine persönliche Beratung, wir von databinding helfen Ihnen gerne weiter!
JetBrains .NET Days Online Community speakers will be covering topics they are passionate about! Expect technical content and speakers' experience with specific tools and technologies. This year's agenda features C#, F#, coding practices like refactoring and defensive coding, web, ...
iPhone SE: A powerful new smartphone in a popular design Apple today announced the second generation iPhone SE, a powerful new iPhone featuring a 4.7-inch Retina HD display.
Breakthrough of Digital Culture: Finland accepts the Demoscene on its national UNESCO list of intangible cultural heritage of humanity - Demoscene - The Art of Coding "Demoskene is an international community focused on demos, programming, graphics and sound creatively real-time audiovisual performances. [..] Subculture is an empowering and important part of identity for its members."
Blazor Tutorial : Code Faster Using dotnet watch run - EP27 Hey Coders, Subscribe here - https://www.youtube.com/channel/UCetyodKOWGk5H6FoKoFnkZw Talk to us on - https://www.twitch.tv/curiousdrive Like our page - https://www.facebook.com/curiousdrive/ Follow us on - https://twitter.com/curious_drive Follow us on...
Western Digital admits 2TB-6TB WD Red NAS drives use shingled magnetic recording – Blocks and Files Some users are experiencing problems adding the latest WD Red NAS drives to RAID arrays and suspect it is because they are actually shingled magnetic recording drives submarined into the channel. Alan Brown, a network manager at UCL Mullard Space Science ...
Turning my obsession with the stock market into a side project TL;DR - Decided to build an automated email newsletter to track the stock market and show pre-market data and historical performance of S&P 500, Nasdaq, and Dow Jones to help with my investments.
ArduBee, a Ready-To-Fly Micro drone for Education and Swarming Ciao community! We have a vision and we would like to bring you on board to make it happen! Let’s build the smallest integrated ArduCopter with outstanding flight time! We call it ArduBee. This tiny ArduPilot UAV will enable initiatives of education an...
Identity & Access Control for modern Applications and APIs using ASP.NET Core 3 - NDC Porto 2020 Modern application design has changed quite a bit in recent years.“Mobile-first” and “cloud-ready” are the types of applications you are expected to develop. Also, to keep pace with these demands, Microsoft has revamped their complete web stack with ASP.N...
Personal gmail account claimed by SSO, can't login anymore. My login to trello is with my personal gmail account. With the new SSO login screen, as soon as I enter my gmail address, it redirects me to my previous company sso page (which i left 5 years ago btw). The email address is clearly @gmail.com. It being cla...
Windows Subsystem for Linux 2 Moving into General Availability with Improved Update Process Microsoft announced that Windows Subsystem for Linux 2 (WSL2) will be generally available in Windows 10, version 2004. WSL2 was released into the Insider Program last year. With the move to general availability, WSL2 can now be automatically updated via s...
Open Source Identity and Access Management Keycloak is an open source identity and access management solution
April 2020 Azure SDK Release Welcome to the April release of the Azure SDK. We have updated the following libraries: App Configuration Event Hubs Key Vault Storage These are ready to use in your production applications. You can find details of all released libraries on our releases ...
.NET Core performance revolution in Rider 2020.1 - .NET Tools Blog Many Rider users may know that the IDE has two main processes: frontend (Java-application based on the IntelliJ platform) and backend (.NET-application based on ReSharper). Since the first release of Rider, we’ve used Mono as the backend runtime on Linux ...
Publish VSCode extension using GitHub Actions | Visual Studio Geeks Publish VSCode extension using GitHub Actions
Consuming GraphQL in C# In this episode, Brandon show us how to consume a GraphQL endpoint from a C# client, specifically an iOS + Android written in C# using Xamarin. Learn more: https://codetraveler.io/DotNetGraphQL [
Exercise in Thinking: Do Racing Stripes Make a Car Go Faster? The progress from a junior to a senior software developer shows in various ways:Coding: Years of working with different languages, frameworks, libraries and architectures help developing a gut …
Finally We May Have a Path to the Fundamental Theory of Physics… and It’s Beautiful—Stephen Wolfram Writings How does our universe work? Scientist Stephen Wolfram opens up his ongoing Wolfram Physics Project to a global effort. His team will livestream work in progress, post working materials, release software tools and hold educational programs.
C# 8 Nullable Reference Types in System.CommandLine Twitch is the world's leading video platform and community for gamers.
Pulumi - Modern Infrastructure as Code Pulumi's open source infrastructure as code SDK enables you to create, deploy, and manage infrastructure on any cloud, using your favorite languages.
AMD Claims World’s Fastest Per-Core Performance with New EPYC Rome 7Fx2 CPUs Dial up the clocks, cache, and TDP
SoftBank expects $24 billion in losses from Vision Fund, WeWork and OneWeb investments – TechCrunch The Japanese technology conglomerate SoftBank Group said it would lose a staggering $24 billion on investments made through its Vision Fund and bets on the co-working real estate company WeWork and satellite telecommunications company OneWeb. Ultimately, ...


I am a young, eager to learn computer science student and just beginning my final year of my degree in the Institute of Technology Tallaght. I’m a very work conscientious student and have a flair for technology.
I have main experience in Java and C# with attention to detail in documentation, testing and analysis. Also as part of my studies
I am also enrolled in Cisco Network Academy for basic Networking Management Terminology and Microsoft Virtual Academy for Web and App Development. I want to gain further experience to help myself compete in the Computing Industry against the high standards
Looking for Graduate Opportunities in Software Development and General Web Design
Guinness Brewery St. James Gate, Dublin, Ireland


Waiting for opponent...
When both of you are ready, click the buttons!
{{ user }} -vs- {{ opponent }}
{{promptName}}
Prompt:
{{ exampleFixture}}
Your solution:
Notifications:
{{ userNotes }}
When both of you are ready, click the buttons!
{{ user }} -vs- {{ opponent }}


{% extends 'base.html' %} {% block styles%} {{ super() }} {% endblock %} {% block content %}
Whether you’re trying to gain the interest of a potential customer, trying to get the attention of an interviewer, a crush, a stranger or simply explain what you do, having a strong first impression is your key to success.
Traditionally, an elevator pitch is a quick summary that you use in any situation where you need to explain your business or what you do in a clear and concise manner. It gets the name ‘elevator pitch’ because you should be able to get through your whole speech in the time it takes to travel from the ground floor to the top floor in an elevator (30-60 seconds).


ShipPowerModel is an R package that contains functions for modeling the propulsive power of commercial marine vessels (CMV). It contains four different power models:
This package can be used in conjunction with vessel information and emission factors to estimate CMV air emissions.
These instructions should get ShipPowerModel installed and running within your installation of R. See the vignettes and library documentation for how to use this package.
Building and installing this package and its documentation requires R version 3.5 or greater and the following packages:
You can install this package directly from github using the following command:
devtools::install_github(repo = "USEPA/Marine_Emissions_Tools",
subdir = "ShipPowerModel",
build_vignettes = TRUE
)


const db = DatabaseAbstract.create({
hostname = "",
username = "",
password = "",
databaseName = "",
schema = ""
})
let currentUser = await db.user.where(x=>x.userid == 3).firstOrDefault();
db.users.first(100).toList();
Thanks Man is an ORM made for postgres that tries to emulate as many feautrs of entity framework as possible while being dead simple to get started with and support for advanced functionality.
The most basic way to get objects from the database (using table user as an example) is :
You can add more complex queries by adding differnt modifiers that will affect the resulting data pull
var selectedUser = await db.user
// use lambda functions for filtering
.where(x => x.first_name == "john")
.orderBy("last_login")
.desc()
.limit(20) // only return 20 rows
.offset(100) // skip the first 100 rows
.toList(); // return a list
Once objects are pulled from the database for us to use any modifications made to the rows can be saved very easily by invoking db.saveChanges(), it will automatically find changes to objects pulled and update the relevant columns in the db.
let currentUser = await db.user.firstOrDefault();
currentUser.favouriteColor = "Red";
await db.saveChanges(); // persists changes to db
Inserting Records Into the database is also managed by the db.TableName object and a new row object can be aquried by calling db.tableObject.newRow(). This will return a new row object for you to populate before calling db.saveChanges().
let newUser = db.user.newRow();
newUser.email =<EMAIL_ADDRESS>newUser.password = "secret";
newUser.lastLogin = (new Date()).getTime();
await db.saveChanges();
Deleteing rows can be done by passing the row object that you want removed from the database to db.delete(rowObject) and then commiting the action with db.saveChanges(). This trigger a delete script that will be sent to the db.
Used to filter results, will accept an sql string, filter object or a lambda function and applies it to the query.
.where(x => x.id == 43)
.where(x => array.includes(x.id))
.where("id = 43")
.where("id in (1,2,3,4,5)")
Still to be implimented in orm funcionality.
Determines the column the query results will be ordered by.
This modifier works in conjunction with the orderBy to determing if it is in decenting or ascending sort order.
The limit modifer will restric the number of rows returned to you via a query. It is a direct map to the limit sql keyord
The offset modifer will ignore the first n rows in the result and start returning them from the offset point instead of at the first one
This function will run the query and return a list of rows that corrispond to your request with the number of objects you specify. It impliments async and await.
// returns the first 20 rows to you
let users = await db.user.first(20);
// returns the first 100 rows to you
let users = await db.user.first(100);
Similar To the .first(n)
method this function will run the query and return the first row object that is pulled or if there is null null
.
This function also runs the quries but has not restriction on the number of records returned it will just give everything that matched your query in the database back.


Welcome to Bridge Christian Church. We’re glad you are here! We are a diverse group of people made up of families and individuals of all ages, from many different church backgrounds who are trying to live in Christian community. Whether you’ve attended church all your life or you’ve never been in church, we invite you to experience the difference here.
At Bridge you will find special parking reserved for first time guests. Simply turn on your hazard lights as you turn into the parking lot, so that the parking attendants will recognize you as a first time guest. Follow the signs to designated parking.
We also offer you several avenues to help you connect quickly and feel at home here.
Starting Point is a relaxed two-week study. more>
Connect Groups are based on interests and hobbies. more>
Life Groups help you build relationships in a smaller setting. more>


Flash stuff or something. Yeah.
Adobe Flash Player
|
What is Flash?
|
Flash Animations
Notice:
Adobe Flash is
no longer supported in Google Chrome
and as such, any and all Flash content
may
not display!
This is not an error in my programming, or your computer freaking out. It's simply that Adobe Flash is no longer supported on the internet both by Adobe, and Google.


Caffein Line
Caffein Line is an online café created for people who want to enjoy coffees, tea, and other desserts from their home. Currently, we are focusing our delivery area on Indonesia. We provide the best quality of ingredients and make sure everything is kept well and fresh.
Why Order with Us
Delivery fee is free regardless of any minimum transaction.
We care deeply about the quality and taste of each cup. We are proud to be involved in the whole coffee making process — from picking the best beans to roasting and bringing out the unique flavors and aromas. We can’t wait to welcome you for a comforting cup of coffee.


Connect to the ftp-server to enumerate software and version
ftp <IP_ADDRESS>
nc <IP_ADDRESS> 21
Many ftp-servers allow anonymous users. These might be misconfigured and give too much access, and it might also be necessary for certain exploits to work. So always try to log in with anonymous:anonymous.
Remember the binary and ascii mode!
If you upload a binary file you have to put the ftp-server in binary mode, otherwise the file will become corrupted and you will not be able to use it! The same for text-files. Use ascii mode for them! You just write binary and ascii to switch mode.


Votes Agreeing
to Recall Han Kuo-yu
Last Updated: 18:38:54
Threshold 1
"Agree" votes must exceed that of "Disagree"
Threshold 2
"Agree" votes must exceed 25% of total voters
( > 574,996)
Results
Han Kuo-yu Recalled
Data Source: Kaohsiung City Election Commission
The official results will be announced by the Central Election Commission.


Dear Users,
currently, no users seem to be connected to this access point or ad hoc route to data center.
If you have already open the wlan on this Raspberry Pi, check the secondary Raspberry Pis. They might be sleeping.
If the secondary Pis are already trying the connect to this server. Somethings might went wrong. Contact us
Control Center
{% else %}The Raspberry Pi {{major_id}}'s information is as followed
Access the Pi by clicking here| Type of the Pi | AP Prefix | Connection Status |
|---|---|---|
| {{show_pi.position}} | {{show_pi.prefix}} | {{show_pi.life}} |
| Mac Address | Global IPv6 Address | IVI Address |
|---|---|---|
| {{show_pi.mac_address}} | {{show_pi.global_ipv6_address}} | {{show_pi.ivi_address}} |
| Connected to | Service Started From (UTC) | Last Service Was (UTC) |
|---|---|---|
| {{show_parents}} | {% endautoescape %}{{show_pi.service_start_time}} | {{show_pi.last_active_time}} |
| Current Connecting pi: |
|---|
| {{ pis }} | {% endautoescape %}
{% endif %}


Our Services & what we Deliver
We offer a variety options, Fair delivery costs, Time-strictness & Clean deliveries for goods ordered. Here is a list of things we have available for delivery......
Food & Drinks
Order food & drinks from outlets near you. We work with 50+ restaurants
Liquor
Order for any kind of alcoholic drink. We source them from outlets near you.
Supermarket Items
Service will be available soon.
Medication
Service will be available soon.
Bakeries
Service will be available soon.
Groceries & Fruits
Service will be available soon.
Frequently Asked Questions (FAQs)
Get answers to the most commonly asked questions about services
For food & beverages
STEP 01:
Click this link to go to our webapp & select order for food
STEP 02:
Search or select a restaurant to order food or beverages from.
STEP 03:
A menu will pop up with a list of meals available for order. select your desired dishes and add them to cart
STEP 04:
We dispatch our delivery personnel to deliver your meal within 15 mins - 30mins, while it's still hot!!!
For Liquor and Chasers
STEP 01:
Click this link to go to our webapp & select order for alcoholic drinks
STEP 02:
A page will open up with a list of alcoholic drinks available. Simply search and select your desired drinks.
STEP 03:
You will be prompted to give delivery details and choose a payment method.
STEP 04:
We dispatch our delivery personnel to deliver your drinks within 15 mins - 30mins
Our deliveries take an average of 15 mins - 30 mins. Incase of any unforseen delays, we will be prompt to notify you
Deliveries are charged based on the distance covered. Our minimum charge per delivery is Ksh.60 for every 5km.
We currently only accept two payment options:
- Cash on delivery
- Mpesa
We will soon start accepting Debit & Credit cards and Paypal payment options.
For answers to questions not listed here, please CLICK HERE reach out to us through our contact section. We'll be happy to answer all your questions...
Get in touch today!!!
Have any questions regarding our service? Or do you just wanna say Hi? :-). Call, message, email or fill in the form below, we'd be happy to hear from you and we boast a quick respond time.


{% extends 'panel.html' %} {% load utilities %} {% block head_title %}Confirm deletion{% endblock %} {% block panel_content %}
Are you sure you want to remove all of the data files from {{ project.name }}?


The Ocean Interceptor is a giant "vacuum cleaner" that is set to clean up our seas
Our rivers and waterways are set to get a lot cleaner. The new contraption by environmental group Ocean Cleanup can stop waste in its tracks before it reaches our oceans.
by Mirror ReporterNonprofit environmental organization the Ocean Cleanup is now tackling the problem of plastic pollution in oceans by collecting plastic waste directly from rivers before it gets to the oceans.
Its new system, dubbed "The Interceptor", is the organization's latest effort to try and rid our oceans of plastic.
It is powered by solar energy and uses lithium-ion batteries, which enables it to operate 24 hours a day, seven days a week.
The large contraption anchors itself to the riverbed and uses a floating barrier that guides plastic waste from the river into the system's conveyor belt.
Once plastic waste is onboard, it is automatically put into one of six dumpsters on a barge inside the system. The system alerts local operators once all six dumpsters onboard are full.
Local operators then send over a vessel to pick up the plastic waste so that the Interceptor can continue to remove plastic.
The barge is taken back to shore with the plastic waste and emptied for recycling. The barge is then reattached to the Interceptor to collect more plastic debris.
Ocean Cleanup claims that the system is capable of extracting 50,000 kilograms of trash a day. It even estimates that under optimal conditions, that number could increase to 100,000 kilograms of waste per day.
Ocean Cleanup has built just four Interceptors to date, but two of those systems are already operating.
There is one in Indonesia and one in Malaysia. The organization plans to roll out a third system in Vietnam and a fourth system in the Dominican Republic.
Ocean Cleanup has ambitious plans of tackling 1,000 of the world's most polluting rivers, which the organization says are responsible for 80 percent of plastic waste present in oceans, before the end of 2025.


La Pizzeria is an online booking platform where
you can order a pizza and receive it in an instant through our delivery service.
+250785858900
KG 123 St, Kimihurura, Kigali
lapizzeria@gmail.com


Adding Analytics: AARosemond's Blog
This is the first post on my exploration and experimentation with analytics, using AARosemond’s Science Journal. I don’t have much in the way of data yet (a function of the few who’ve visited the site and how little time I’ve had analytics attached) but I do have a sound foundation for future posts. So this post will be focused on pre-evaluation, initial steps and early observations.
Pre-evaluation
AARosemond’s Science Journal is a site designed to explore and experiment with web development. It will record my reaction to design, accessibility, analytics and related subjects, as well as display my hopefully increasing skill at generating and disseminating compelling content. As such, I expect analytics to help test my assumptions about the site, including:
- Most visitors to the site will come as a result of links I attach to Github, emails, resumes and my LinkedIn profile, to demonstrate my increasing skill in web development. I am not counting on other websites to significantly refer others to the site.
- I imagine my most popular pages will be blog posts where I analyze other sites. For example, Post 1 is an overall design analysis of Seattle University’s Albers School of Business and Economics page. It is likely to gain some traffic for its look at a moderately popular web destination
- Generally, the flow and behavior I expect to see from the sites visitors would be to land first on the index.html page (the most likely page I would refer visitors to) with follow on visits to the top most post in the dropdown (currently Post 1). There is no call to action, other than to visit posts, so I expect visitors to stay for a short while until curiosity is satisfied.
AARosemond’s Science Journal was designed to display more than the just a blog. Since many of those features are little more than aspirational at this point, I am sure there is much more complexity ahead as the site develops.
Adding Analytics
Adding Google Analytics was relatively straightforward. I created an google email address for correspondence and used its protocols to get a global site tag from Google Analytics. I hand coded the site tag script into every blog page. It took more than 24hrs to get any movement recorded, leaving me with the lesson learned: start early, for best results. As I write this post, I realize that I should have included the script to the about page (and probably should update the page, while I am at it).
Preliminary Findings
To get traffic going to the site, I sent a few text and email messages to contacts, explaining the initiative and asking for them to visit. In this, my pre-evaluation statement bears out.
It feels like my contacts did exactly as I asked. The average time on each page was 15 seconds, with the most page views on the index page (as I guessed on my pre-eval page) and descending as post numbers increase. This last observation bears further review: Six posts exist, and I currently have them listed on the blog drop down in ascending order. It is likely that each visitor landed on the index page via the link I sent out and visited the posts in order. One course of action could be to reverse the order of posting, so that the most current is the first one visited, with hopes this will increase the page views overall.
15% of users returned to the site after the initial visit. If that were more than 1 user, I could say there was hope for repeat viewership. Again, I’ll be on the looking out for trends.


I will not visit the dentist," said Pam. She went in the attic and hid in a big sack. She sat and sat. Then she crept from the sack. She left the attic. Her mom was there. Pam had not hidden well. "There you are," said Mom. "We will visit the dentist, and then I will get you a doll." Pam went, and the dentist was not bad. Mom did get her a doll. Pam was happy!
in-context


I have only misused Benadryl once. I took 8-10 .025 mg tablets of Diphenhydramine HCL, and several more about an hour later -- about 15 in total, but possibly more. I was in my dorm room alone, and as I lay there watching TV I began to feel the effects of the drug (approx. 30-45 minutes after injestion). I felt slightly euphoric and listening to music was extremely enjoyable, but, aside from the amazement which I felt at seeing visuals some time later, this euphoria was the only good thing about the experience. I soon began to see hallucinations: tiny dots of light seemed to fly across my field of vision; and it seemed as if, out of the corner of my eye, there was rapid movement of some sort; my brown carpet would, if I stared long enough, seem fluid like rippling water.
My most impressive visual occurred as I lay on the couch looking at the wall.  If I reached for the blob or turned away, it disappeared, but I could make it appear again by staring intently at the wall. When I glanced away from the television, I could see a black, shadowy form resembling it on the wall. This phenomenon was much like that of staring at the sun for a brief moment and then quickly closing one's eyes. I felt slightly afraid of and annoyed with these visuals, but very easily remembered that I was only feeling the effects of a drug.
But this drug, as pleasant and LSD-like as it may sound, was not fun! Much of the time I felt as if I wanted to jump out of my skin; I had tremors for 5 minutes at a time during which I'd twitch and writhe and scratch; I sometimes felt an overwhelming sense of doom and saddness; I was extremely fatigued. These fits came far too often, and made the experience a miserable one. In addition, I overslept, missed work, and felt nauseous for most of the next day. I immediately threw the rest of my Benadryl away.  Cheers.
Experience Reports are the writings and opinions of the individual authors who submit them.
Some of the activities described are dangerous and/or illegal and none are recommended by Erowid.


Reading Time: 2 minutes
May 23, 2018
Categories: aliquam auctor do
Tags: aliquam incididunt notes velit
May 18, 2018
Categories: facilisi odio id
Tags: eu fames notes pharetra
January 6, 2018
Categories: diam aliqua fringilla
Tags: mollis urna notes laoreet


| Name: ms.navya | Reg No: 3-6SMMHC18 |
|---|---|
| Age / Sex:18/f | Contact No:<PHONE_NUMBER> |
| Marital Status:single | Date:9/6/18 |
| Occupation: pu completed | Dr. PJFP |
Address: D/O MANGALAMMA. |
DIAGNOSIS- |
EXCESSIVE SALIVATION < MORNING AFTER WAKING. SINCE CHILDHOOD. NOW INC.
PERIODS ON 1ST DAY NO BLEEDING. AND IRREGULAR SINCE 6 MONTHS.
INC WEIGHT. FEELS SHE HAS WEIGHT GAIN. LMP: 28/3/18.
COLD SINCE 3 DAYS BUT RECC SNEEZING NOSE BLOCK. SINCE 6 MONTHS.
HUNGER AND SLEEP GOOD.
FEELS MEMORY POWER ALSO REDUCED THAN BEFORE.
FEELS LESS ACTIVE.
RX:
STAPHYSAGRIA 200 – 1 DOSE
SEPIA 30 – DISC 4-0-4.


Unsecured Landscapes is an exercise of juxtaposing moving images from nature places that are being surveilled by IP Cameras. The footage is taken by a bot every 12 hours from cameras found at insecam. This project was initiated during the Automating Video Class at ITP, NYU.
Project made by @matamalaortiz
Github


External Data¶
Loading an ONNX Model with External Data¶
[Default] If the external data is under the same directory of the model, simply use
onnx.load()
import onnx
onnx_model = onnx.load('path/to/the/model.onnx')
If the external data is under another directory, use
load_external_data_for_model()
to specify the directory path and load after usingonnx.load()
import onnx
from onnx.external_data_helper import load_external_data_for_model
onnx_model = onnx.load('path/to/the/model.onnx', load_external_data=False)
load_external_data_for_model(onnx_model, 'data/directory/path/')
# Then the onnx_model has loaded the external data from the specific directory
Converting an ONNX Model to External Data¶
import onnx
from onnx.external_data_helper import convert_model_to_external_data
onnx_model = ... # Your model in memory as ModelProto
convert_model_to_external_data(onnx_model, all_tensors_to_one_file=True, location='filename', size_threshold=1024, convert_attribute=False)
# Must be followed by save_model to save the converted model to a specific path
onnx.save_model(onnx_model, 'path/to/save/the/model.onnx')
# Then the onnx_model has converted raw data as external data and saved to specific directory
Converting and Saving an ONNX Model to External Data¶
import onnx
onnx_model = ... # Your model in memory as ModelProto
onnx.save_model(onnx_model, 'path/to/save/the/model.onnx', save_as_external_data=True, all_tensors_to_one_file=True, location='filename', size_threshold=1024, convert_attribute=False)
# Then the onnx_model has converted raw data as external data and saved to specific directory
onnx.checker for Models with External Data¶
Models with External Data (<2GB)¶
Current checker supports checking models with external data. Specify either loaded onnx model or model path to the checker.
Large models >2GB¶
However, for those models larger than 2GB, please use the model path for onnx.checker and the external data needs to be under the same directory.
import onnx
onnx.checker.check_model('path/to/the/model.onnx')
# onnx.checker.check_model(loaded_onnx_model) will fail if given >2GB model
TensorProto: data_location and external_data fields¶
There are two fields related to the external data in TensorProto message type.
data_location field¶
data_location
field stores the location of data for this tensor. Value MUST be one of:
MESSAGE
- data stored in type-specific fields inside the protobuf message.RAW
- data stored in raw_data field.EXTERNAL
- data stored in an external location as described by external_data field.value
not set - legacy value. Assume data is stored in raw_data (if set) otherwise in message.
external_data field¶
external_data
field stores key-value pairs of strings describing data location
Recognized keys are:
"location"
(required) - file path relative to the filesystem directory where the ONNX protobuf model was stored. Up-directory path components such as .. are disallowed and should be stripped when parsing."offset"
(optional) - position of byte at which stored data begins. Integer stored as string. Offset values SHOULD be multiples 4096 (page size) to enable mmap support."length"
(optional) - number of bytes containing data. Integer stored as string."checksum"
(optional) - SHA1 digest of file specified in under ‘location’ key.
After an ONNX file is loaded, all external_data
fields may be updated with an additional key ("basepath")
, which stores the path to the directory from which he ONNX model file was loaded.
External data files¶
Data stored in external data files will be in the same binary bytes string format as is used by the raw_data
field in current ONNX implementations.
Reference https://github.com/onnx/onnx/pull/678


Sandakan man's free funeral van service for poor man’s dead wife, touched by love and devotion
by BY MELANIE CHALILPETALING JAYA, Nov 18 — One elderly man’s loyalty towards his life partner never wavered even until the day she died, despite living in destitute conditions.
Facebook user Yunizam Yusop shared the heart-rending story of the impoverished couple who were living in Kampung Tanah Merah in Sandakan, Sabah.
Yunizam met the senior citizen man after offering his hearse van services at no charge when the man’s wife died on November 12.
“I was shocked and at the same time sad and down. When I asked their neighbours if they had children, they told me it was only the two of them.
“No kids, no relatives and no property to their name. This means they have to manage the funeral all by themselves,” Yunizam told mStar.
The hearse van service provider also had to prepare white cotton cloth to enshroud the body as they could not afford it.
The couple lived in a rented room that cost RM100 monthly and would pay the landlord RM1 if that was all they had.
The 31-year-old Facebook user said he was shocked to see their kitchen that was turned into a place to bathe his wife’s body.
“I was relieved when the husband said his wife’s body will be bathed and that there were neighbours who will handle the body — everything was in place, just waiting for the funeral.
“But when the dead woman’s husband showed me the kitchen, I was speechless,” Yunizam said.
The kitchen was bare, had no gas and was patched up with wooden boards.
Yunizam said the couple only ate plain rice that was bought from a nearby market.
“I asked how they cooked without gas. The husband told me they bought rice for 50 sen from the market and would only buy side dishes if they had extra money.
“I couldn’t control my tears when I heard that. The husband used to work at a supermarket but he had to quit when he fell sick.”
Yunizam said the man was too devastated that he could not bring himself to accompany his late wife to the cemetery.
“When they wanted to bury his wife, he said he couldn’t do it. He said he was too saddened by the fact that there will be no one with him anymore after this.
“At that point, I cried too because it was so sad. Their love is so strong but I’m glad because the funeral went smoothly,” Yunizam said.
The post prompted social media users to express their sympathy and sadness for the couple.
Even though they lived a hard life, they were happy together, said Yunizam.
“The lesson here is that the two of them remained together until death parted them. We hear a lot of divorce cases because of financial reasons.
“But this couple were able to defend their love and home until the end, even though they lived from hand to mouth,” Yunizam.