| Package | Description |
|---|---|
| scriptella.configuration |
Classes and interfaces to parse script files.
|
| scriptella.core |
Core classes for scripts execution.
|
| scriptella.driver.as400 |
AS/400 Driver Adapter for Scriptella.
|
| scriptella.driver.auto |
Autodiscovery Driver for Scriptella.
|
| scriptella.driver.csv |
CSV Driver for Scriptella.
|
| scriptella.driver.hsqldb |
HSLQDB Driver Adapter for Scriptella.
|
| scriptella.driver.janino |
Janino Driver for Scriptella.
|
| scriptella.driver.jexl |
JEXL Driver for Scriptella.
|
| scriptella.driver.jndi |
JNDI Datasource Driver for Scriptella.
|
| scriptella.driver.ldap |
LDAP Driver for Scriptella.
|
| scriptella.driver.ldap.ldif | |
| scriptella.driver.mail |
E-Mail Driver for Scriptella.
|
| scriptella.driver.oracle |
Oracle Driver Adapter for Scriptella.
|
| scriptella.driver.script |
Scriptella bridge for the JSR 223: Scripting for the Java Platform.
|
| scriptella.driver.scriptella |
Driver for running Scriptella ETL files.
|
| scriptella.driver.spring |
Spring Framework Integration Driver for Scriptella.
|
| scriptella.driver.text |
Text Driver for Scriptella.
|
| scriptella.driver.velocity |
Velocity Adapter for Scriptella.
|
| scriptella.driver.xpath |
XPath Driver for Scriptella.
|
| scriptella.execution |
Facade classes for xml scripts execution.
|
| scriptella.expression |
Classes for working with expressions and properties substitution.
|
| scriptella.jdbc |
Scriptella JDBC Bridge.
|
| scriptella.spi |
Service Provider Interface classes.
|
| scriptella.spi.support | |
| scriptella.text |
Classes for formatting and parsing text.
|
| Class and Description |
|---|
| DialectIdentifier
Represents vendor dialect information.
|
| ParametersCallback
Callback interface to obtain parameter values.
|
| Resource
Represents reference to a text resource capable of creating new readers.
|
| Class and Description |
|---|
| Connection
Represents a connection to the system provided by
ScriptellaDriver . |
| ParametersCallback
Callback interface to obtain parameter values.
|
| Resource
Represents reference to a text resource capable of creating new readers.
|
| ScriptellaDriver
Service Provider Interface for integrating third-party systems with Scriptella.
|
| Class and Description |
|---|
| ScriptellaDriver
Service Provider Interface for integrating third-party systems with Scriptella.
|
| Class and Description |
|---|
| AbstractScriptellaDriver
An abstract base for Scriptella drivers.
|
| Connection
Represents a connection to the system provided by
ScriptellaDriver . |
| ConnectionParameters
Represents connection parameters.
|
| Class and Description |
|---|
| AbstractConnection
A base class for connections.
|
| AbstractConnection.StatementCounter
Helper class to use for executed statements counting.
|
| Connection
Represents a connection to the system provided by
ScriptellaDriver . |
| ConnectionParameters
Represents connection parameters.
|
| ParametersCallback
Callback interface to obtain parameter values.
|
| ProviderException
Thrown by connection provider to indicate any kind of failure.
|
| QueryCallback
Callback interface for query result set iteration.
|
| Resource
Represents reference to a text resource capable of creating new readers.
|
| Class and Description |
|---|
| AbstractConnection
A base class for connections.
|
| Connection
Represents a connection to the system provided by
ScriptellaDriver . |
| ConnectionParameters
Represents connection parameters.
|
| NativeConnectionProvider
Optional interface implemented by
Connection classes. |
| Class and Description |
|---|
| AbstractConnection
A base class for connections.
|
| Connection
Represents a connection to the system provided by
ScriptellaDriver . |
| ConnectionParameters
Represents connection parameters.
|
| ParametersCallback
Callback interface to obtain parameter values.
|
| ProviderException
Thrown by connection provider to indicate any kind of failure.
|
| QueryCallback
Callback interface for query result set iteration.
|
| Resource
Represents reference to a text resource capable of creating new readers.
|
| Class and Description |
|---|
| AbstractConnection
A base class for connections.
|
| Connection
Represents a connection to the system provided by
ScriptellaDriver . |
| ConnectionParameters
Represents connection parameters.
|
| ParametersCallback
Callback interface to obtain parameter values.
|
| ProviderException
Thrown by connection provider to indicate any kind of failure.
|
| QueryCallback
Callback interface for query result set iteration.
|
| Resource
Represents reference to a text resource capable of creating new readers.
|
| Class and Description |
|---|
| ProviderException
Thrown by connection provider to indicate any kind of failure.
|
| Class and Description |
|---|
| AbstractConnection
A base class for connections.
|
| Connection
Represents a connection to the system provided by
ScriptellaDriver . |
| ConnectionParameters
Represents connection parameters.
|
| ParametersCallback
Callback interface to obtain parameter values.
|
| ProviderException
Thrown by connection provider to indicate any kind of failure.
|
| QueryCallback
Callback interface for query result set iteration.
|
| Resource
Represents reference to a text resource capable of creating new readers.
|
| Class and Description |
|---|
| ParametersCallback
Callback interface to obtain parameter values.
|
| ProviderException
Thrown by connection provider to indicate any kind of failure.
|
| Class and Description |
|---|
| AbstractConnection
A base class for connections.
|
| Connection
Represents a connection to the system provided by
ScriptellaDriver . |
| ConnectionParameters
Represents connection parameters.
|
| ParametersCallback
Callback interface to obtain parameter values.
|
| ProviderException
Thrown by connection provider to indicate any kind of failure.
|
| QueryCallback
Callback interface for query result set iteration.
|
| Resource
Represents reference to a text resource capable of creating new readers.
|
| Class and Description |
|---|
| AbstractConnection
A base class for connections.
|
| Connection
Represents a connection to the system provided by
ScriptellaDriver . |
| ConnectionParameters
Represents connection parameters.
|
| NativeConnectionProvider
Optional interface implemented by
Connection classes. |
| Class and Description |
|---|
| AbstractConnection
A base class for connections.
|
| Connection
Represents a connection to the system provided by
ScriptellaDriver . |
| ConnectionParameters
Represents connection parameters.
|
| ParametersCallback
Callback interface to obtain parameter values.
|
| ProviderException
Thrown by connection provider to indicate any kind of failure.
|
| QueryCallback
Callback interface for query result set iteration.
|
| Resource
Represents reference to a text resource capable of creating new readers.
|
| Class and Description |
|---|
| AbstractConnection
A base class for connections.
|
| Connection
Represents a connection to the system provided by
ScriptellaDriver . |
| ConnectionParameters
Represents connection parameters.
|
| ParametersCallback
Callback interface to obtain parameter values.
|
| ProviderException
Thrown by connection provider to indicate any kind of failure.
|
| QueryCallback
Callback interface for query result set iteration.
|
| Resource
Represents reference to a text resource capable of creating new readers.
|
| Class and Description |
|---|
| ProviderException
Thrown by connection provider to indicate any kind of failure.
|
| Class and Description |
|---|
| AbstractConnection
A base class for connections.
|
| AbstractConnection.StatementCounter
Helper class to use for executed statements counting.
|
| Connection
Represents a connection to the system provided by
ScriptellaDriver . |
| ConnectionParameters
Represents connection parameters.
|
| DialectIdentifier
Represents vendor dialect information.
|
| ParametersCallback
Callback interface to obtain parameter values.
|
| ProviderException
Thrown by connection provider to indicate any kind of failure.
|
| QueryCallback
Callback interface for query result set iteration.
|
| Resource
Represents reference to a text resource capable of creating new readers.
|
| Class and Description |
|---|
| AbstractConnection
A base class for connections.
|
| Connection
Represents a connection to the system provided by
ScriptellaDriver . |
| ConnectionParameters
Represents connection parameters.
|
| ParametersCallback
Callback interface to obtain parameter values.
|
| ProviderException
Thrown by connection provider to indicate any kind of failure.
|
| QueryCallback
Callback interface for query result set iteration.
|
| Resource
Represents reference to a text resource capable of creating new readers.
|
| Class and Description |
|---|
| AbstractConnection
A base class for connections.
|
| AbstractConnection.StatementCounter
Helper class to use for executed statements counting.
|
| Connection
Represents a connection to the system provided by
ScriptellaDriver . |
| ConnectionParameters
Represents connection parameters.
|
| ParametersCallback
Callback interface to obtain parameter values.
|
| ProviderException
Thrown by connection provider to indicate any kind of failure.
|
| QueryCallback
Callback interface for query result set iteration.
|
| Resource
Represents reference to a text resource capable of creating new readers.
|
| Class and Description |
|---|
| Connection
Represents a connection to the system provided by
ScriptellaDriver . |
| DriverContext
Global ETL Context available to drivers.
|
| ParametersCallback
Callback interface to obtain parameter values.
|
| ProviderException
Thrown by connection provider to indicate any kind of failure.
|
| Class and Description |
|---|
| ParametersCallback
Callback interface to obtain parameter values.
|
| Class and Description |
|---|
| AbstractConnection
A base class for connections.
|
| AbstractScriptellaDriver
An abstract base for Scriptella drivers.
|
| Connection
Represents a connection to the system provided by
ScriptellaDriver . |
| ConnectionParameters
Represents connection parameters.
|
| DriverContext
Global ETL Context available to drivers.
|
| NativeConnectionProvider
Optional interface implemented by
Connection classes. |
| ParametersCallback
Callback interface to obtain parameter values.
|
| ProviderException
Thrown by connection provider to indicate any kind of failure.
|
| QueryCallback
Callback interface for query result set iteration.
|
| Resource
Represents reference to a text resource capable of creating new readers.
|
| ScriptellaDriver
Service Provider Interface for integrating third-party systems with Scriptella.
|
| Class and Description |
|---|
| AbstractConnection.StatementCounter
Helper class to use for executed statements counting.
|
| Connection
Represents a connection to the system provided by
ScriptellaDriver . |
| ConnectionParameters
Represents connection parameters.
|
| DialectIdentifier
Represents vendor dialect information.
|
| DriverContext
Global ETL Context available to drivers.
|
| ParametersCallback
Callback interface to obtain parameter values.
|
| ProviderException
Thrown by connection provider to indicate any kind of failure.
|
| QueryCallback
Callback interface for query result set iteration.
|
| Resource
Represents reference to a text resource capable of creating new readers.
|
| ScriptellaDriver
Service Provider Interface for integrating third-party systems with Scriptella.
|
| Class and Description |
|---|
| ParametersCallback
Callback interface to obtain parameter values.
|
| Class and Description |
|---|
| ConnectionParameters
Represents connection parameters.
|
| ParametersCallback
Callback interface to obtain parameter values.
|
Copyright © Copyright 2006-2019 The Scriptella Project Team.


Find Out Your Akan Name Here!!!
Akan names are derived from Ghanian culture. Frequently in Ghana, children are given their first name as a 'day name' which corresponds to the day in the week they were born.
Most people do know when their birthdays are, but some might not know what day of the week they were born. Luckily for us, there are ways to calculate the day of the week from a specific date.


@* * Copyright 2019 HM Revenue & Customs * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. *@ @import play.api.Configuration @import uk.gov.hmrc.agentoverseasapplicationfrontend.controllers.routes @import uk.gov.hmrc.agentoverseasapplicationfrontend.models.UpdateTrn @import uk.gov.hmrc.play.views.html.helpers.{form, input, errorSummary} @(updateTrnForm: Form[UpdateTrn])(implicit messages: Messages, request: Request[_], configuration: Configuration) @uk.gov.hmrc.agentoverseasapplicationfrontend.views.html.main_template(title = error_prefix(updateTrnForm) + Messages("updateTrn.title")) { @Messages("button.back")


{% extends "base.html" %}{% load i18n %} {% block content %}
{% blocktrans with total=num_tries_remaining.driver %}You may change this {{ total }} more times{% endblocktrans %}
{% endif %}{% blocktrans with total=num_tries_remaining.constructor %}You may change this {{ total }} more times{% endblocktrans %}
{% endif %}You may change this value any number of times before {{ race.start_date }}
You may change this value any number of times until {{ race.start_date }}


This website is an attempt to raise awareness about threats to privacy
and anonymity online and try to help protect people from some of these
threats.
Did you know that your photos have metadata attached to them that have
information like?:
- the photographer's name
- GPS coordinates where the photo was taken
- date and time where the photo was taken
- type of camera that took the photo
-
facial recognition tags placed by Apple Photos and Google Photos
Did you know that even without that metadata, just by looking at a
photo you took, Facebook can identify that you took it?
Facebook filed a patent in 2010 to allow them to associate users
photos using just the flaws and imperfections in the camera lens and
pixels as a "camera signature".
On this website you can:
-
Go to the about page to learn more about photo anonymity and how
both privacy protecting tools work
-
Go to the photo cleaner page to upload a photo and download the
image with some noise inserted, in an attempt to protect you from
being identified just by the patterns in the photo's pixels
-
Go to the metadata removal page to upload a photo and download the
image with the metadata removed, in an attempt to protect the
personally identifiable information in the metadata.


 While it was fun while it lasted, the overhead complexity took up more and more time. For now, it's being taken offline until we can find a better replacement. Stay tuned to see what gets published next.
This is the home site of the Jack Harter online presence. It includes a pitch that serves as an online CV. I will try to update it occasionally, but I cannot make serious promises about that. Please enjoy.
I am an information technology professional living in Chicago with a background in networking, security, open source and containerized solutions. I'm working to learn more within the Kubernetes, Rancher, Docker and Hashicorp fields.
My nontechnical interests include gardening, new cuisine, homebrew and board games, as well as spending quality time with my wife, Kari; cat, Louis, and iguana Gerald.
Technology will not be kept in a dusty closet or restricted to the dungeons of the corporate world. The most successful companies of the recent past and the near future are those who embrace new processes and tools before their competition can. The only way this can be ensured is by promoting and utilizing the best new ideas over stuff that just works.
Staying relevant and strong can be a daunting and sometimes scary pursuit. But with the right combination of application and expertise, we can engage with the future on our terms rather than those of our competitors.
Since 2010, I've worked in environments ranging from two-person startups to Fortune 100 companies. Whether you want to better protect your enterprise data, talk about the fun properties of Arch or play an engrossing game of Magic, I'd love to meet and chat over a beer or coffee.
If you have any questions or concerns, ping me at<EMAIL_ADDRESS>For commercial contact information please refer to
my LinkedIn site.
But if you want to see what I'm doing today,
you can also follow me on Twitter.
...
Thank you for using hartr.net. This whole thing runs in github.io.
You can view the second page here.
You can learn about the author here.
Let me know if you would like me to set this up for your business!


| Book Preview | Book Title | Publisher | Publishing date | Average rating | Max Rating | Min Rating | Location Of Readers | |||
|---|---|---|---|---|---|---|---|---|---|---|
| {{book_detail['title']}} | {{book_detail['publisher']}} | {{book_detail['pub_date']}} | {% if book_detail['avg_rating'] != -1 %}{{book_detail['avg_rating']}} | {{book_detail['max_rating']}} | {{book_detail['min_rating']}} | {% else %}Not Rated Yet | Not Rated Yet | Not Rated Yet | {% endif %}
|


This page requires JavaScript to load content. Please turn on JavaScript to see the content.
Here are the instructions how to enable JavaScript in your web browser.


--- title: "Events" description: "Learn Wardley maps at Map Camp" layout: splash classes: - landing - dark-theme ---
Wardley Maps for Business, May 19, 2023
Map Camp UK 2022 Online Event, October 13
Map Camp Online Event, October 13
Map Camp: Use Case Edition, November 23
Map Camp Online Event, October 13
London, October 3 | Session Summaries
Join the Map Camp Slack and say hello in the #community channel. 👋
We're happy to help walk you through what it takes to run a successful Map Camp event!


ATLANTIC CITY A film review by Walter Frith Copyright 1997 Walter Frith
Some actors find success in their careers sooner rather than later and vice versa but in the case of Burt Lancaster it was pretty much a smooth ride all the way. Lancaster died in 1994 his career began in 1946 with a picture entitled 'The Killing' and his career really took off in the 1950's with 'Jim Thorpe: All American' (1951), 'Come Back Little Sheba' (1952) and the movie that would bring him his first Oscar nomination, 'From Here to Eternity' (1953). 'From Here to Eternity' would win eight Oscars and really launch Lancaster's career and he would win the Best Actor Oscar in 1960 for 'Elmer Gantry'. In that film he played a second rate preacher whose moral followings were called into question. Lancaster's career cooled off somewhat in the late 1960's and for most of the 70's but he would make a comeback with one on his finest performances in 'Atlantic City U.S.A.' (1980). This Canadian and French production first released abroad with the above mentioned title would come to the U.S. in 1981 with the title 'Atlantic City' and play across the country including a run in a Los Angeles theatre to qualify it for Oscar consideration which it got being nominated for five Oscars: Best Picture, Actor (Lancaster), Actress (Susan Sarandon), Director (Louis Malle) and Original Screenplay (John Guare). It would not win any of them.
Lancaster plays Lou, a man who brags about a flamboyant and high profile career in crime but in reality is a small time loser with dreams that never succeeded into making him anything more than a two bit hood. He and Sarandon live in the same apartment building and he watches her constantly through his window and secretly falls in love. Director Louis Malle brilliantly directed this film with a distinctly European flavour and managed to tell a story without pretention and one full of strong characters. Sarandon plays a casino employee training to become a hot shot card dealer and that isn't the only deal that goes down. Her sister and lover come to visit and the lover (Canadian actor Robert Joy) becomes involved in a drug deal which embroils Sarandon and Lancaster heavily in the plot.
Lancaster's character would prove to have some noble qualities as he tries to protect Sarandon's honor and life from the scum of society. His romantic consumation of their relationship is based purely on lust while Sarandon uses him in a somewhat justifiable manner out of a sense of survival and need. It's one of the most unusual love stories you will ever see. 'Atlantic City' manages to convince its audience that while it stands up as a respectable character study, it's also a story of human nature at its most immoral and has the stamina to invoke itself as a classic motion picture without popularity but takes its place as a buried treasure.
Other members of the cast are largely made up of talented actors and notable personalities such as English born but Canadian raised Kate Reid and Canadians Hollis McLaren, Harvey Atkin and Al Waxman.
Comments on this review may also be sent to<EMAIL_ADDRESS>Visit Mr. Frith's 'Movie Reviews' section of 'The Review' at http://www.arrowweb.com/review
The review above was posted to the
rec.arts.movies.reviews newsgroup (de.rec.film.kritiken for German reviews).
The Internet Movie Database accepts no responsibility for the contents of the
review and has no editorial control. Unless stated otherwise, the copyright
belongs to the author.
Please direct comments/criticisms of the review to relevant newsgroups.
Broken URLs inthe reviews are the responsibility of the author.
The formatting of the review is likely to differ from the original due
to ASCII to HTML conversion.
Related links: index of all rec.arts.movies.reviews reviews


Toggle navigation
Dartivity Control - monitoring and control
Settings
Home
Monitoring
Alarms
Historic
Resources
{{tableStatus}}
Device Id
Dartivity Client
Provider
Status
{{resourceList}}
Resource details
{{resourceDetails}}
Resource update
Resource Name
A resource name, if left blank full discovery will be performed.
Update Type
Database
Refresh
Discover
Clear
Notifications Panel
{{alertList}}


Get Started¶
Welcome in SchemaSpy we will do the best to simplify documentation process of your database
Running SchemaSpy¶
You can easy run SchemaSpy from the command line:
java -jar schemaspy.jar -t dbType -dp C:/sqljdbc4-3.0.jar -db dbName -host server -port 1433 [-s schema] -u user [-p password] -o outputDir
Commonly used parameters:¶
- [-t databaseType]
- Type of database (e.g. ora, db2, etc.). Use -dbhelp for a list of built-in types. Defaults to ora.
- [-db dbName]
- Name of database to connect to
- [-u user]
- Valid database user id with read access. A user id is required unless -sso is specified.
- [-s schema]
- Database schema. This is optional if it’s the same as user or isn’t supported by your database. Use -noschema if your database thinks it supports schemas but doesn’t (e.g. older versions of Informix).
- [-p password]
- Password associated with that user. Defaults to no password.
- [-o outputDirectory]
- Directory to write the generated HTML/graphs to
- [-dp pathToDrivers]
- Looks for drivers here before looking in driverPath in [databaseType].properties. The drivers are usually contained in .jar or .zip files and are typically provided by your database vendor.
- [-hq] or [-lq]
- Generate higher or lower-quality diagrams. Various installations of Graphviz (depending on OS and/or version) will default to generat /ing either higher or lower quality images. That is, some might not have the “lower quality” libraries and others might not have the “higher quality” libraries. Higher quality output takes longer to generate and results in significantly larger image files (which take longer to download / display), but the resultant Entity Relationship diagrams generally look better.


The $showModal
method returns a ModalResult
object.
methods: { showModal() { const modalResult = this.$showModal({ component: 'your-component-name' }); } }
The ModalResult
object allows you to show and hide the modal programatically.
Just store the ModalResult
to your Vue component and use a method to call hide()
.
methods: { showModal() { this.modalResult = this.$showModal({ component: 'your-component-name' }); }, hideModal() { this.modalResult.hide(); } }
You can also call show()
to re-show a modal.
methods: { showModal() { if (this.modalResult) { this.modalResult.show(); return; } this.modalResult = this.$showModal({ component: 'your-component-name' }); } }
The ModalResult
object also contains a promise
property, which is a Promise
.
You can use this promise to receive data from your modal component.
methods: {
showModal() {
const modalResult = this.$showModal({
component: 'your-component-name'
});
modalResult.promise
.then(result => {
//result is whatever you're modal component passes to this.$emit("closeModal", {})
});
}
}


---
title: "Our sponsors"
description: "They chose to support us out of love for UX and Web performance."
i18n-key: 2018-sponsors
permalink: /en/2018/thanks/
---
{% assign year = page.year | default: site.current_edition %}
Our Gold sponsors
E-merchants, software editors, they chose to support us out of love for UX and Web performance.
{% include sponsors.html locale=page.locale shorturl=true year=year %}


REVIEW / PAYMENT
BILLING ADDRESS
STANDARD DELIVERY
LORIE LAVENDAR
17742 COWAN ST
IRVINE CA 92626
US
(949)336-6300
<EMAIL_ADDRESS>edit
SHIPPING ADDRESS
LORIE LAVENDAR
17742 COWAN ST
IRVINE CA 92626
US
(949)336-6300
<EMAIL_ADDRESS>edit
SHIPPING METHOD
STANDARD DELIVERY
edit
MERCHANDISE SUMMARY
item description/color
size
qty
price
total
HIPS DONT LIE
White tri top
WHITE
SKU CR1272T1
IN-STOCK
SMALL
1
$130.00
$130.00
HIPS DONT LIE
White tri top
WHITE
SKU CR1272T1
IN-STOCK
SMALL
1
$130.00
$130.00
| ORDER SUMMARY | ORDER TOTAL | |
| PROMO CODE: SAVINGS | Merchandise Subtotal PROMO CODE |
$640.00 $0.00 |
| Taxable Subtotal | $640.00 | |
| Order Total | $640.00 |
| MERCHANDISE SUBTOTAL | PAYMENT TOTAL |
| Your merchandise subtotal may not yet include shipping and handling, tax, or promotional pricing offers, which will be reflected at Checkout. | $640.00 |
GIFT CARD
CHECK BALANCE
ADD ANOTHER CARD
CREDIT CARD INFORMATION
CREDIT CARD TYPE*
CARD NUMBER*
EXPIRATION MONTH*
EXPIRATION YEAR*
CVV*
Example:<PHONE_NUMBER>33


| Class | Bundler::Resolver |
| In: |
lib/bundler/resolver.rb
|
| Parent: | Object |
| ALL | = | [ Gem::Platform::RUBY, Gem::Platform::JAVA, Gem::Platform::MSWIN, Gem::Platform::MING] |
| errors | [R] |
Figures out the best possible configuration of gems that satisfies the list of passed dependencies and any child dependencies without causing any gem activation errors.
| *dependencies<Gem::Dependency>: | The list of dependencies to resolve |
| <GemBundle>,nil: | If the list of dependencies can be resolved, a |
collection of gemspecs is returned. Otherwise, nil is returned.


Allegro library for C (mostly used for game and multimedia apps programming) used its own container file format.
In general, it allows storage of arbitrary binary data blocks bundled together with some simple key-value style metadata ("properties") for every block. Allegro also pre-defines some simple formats for bitmaps, fonts, MIDI music, sound samples and palettes. Allegro library v4.0+ also support LZSS compression.
This spec applies to Allegro data files for library versions 2.2 up to 4.4.
This page hosts a formal specification of Allegro data file using Kaitai Struct. This specification can be automatically translated into a variety of programming languages to get a parsing library.
meta:
id: allegro_dat
title: Allegro data file
application: Allegro library (v2.2-v4.4)
file-extension: dat
xref:
justsolve: Allegro_packfile
license: CC0-1.0
encoding: UTF-8
endian: be
doc: |
Allegro library for C (mostly used for game and multimedia apps
programming) used its own container file format.
In general, it allows storage of arbitrary binary data blocks
bundled together with some simple key-value style metadata
("properties") for every block. Allegro also pre-defines some simple
formats for bitmaps, fonts, MIDI music, sound samples and
palettes. Allegro library v4.0+ also support LZSS compression.
This spec applies to Allegro data files for library versions 2.2 up
to 4.4.
doc-ref: https://liballeg.org/stabledocs/en/datafile.html
seq:
- id: pack_magic
type: u4
enum: pack_enum
- id: dat_magic
contents: ALL.
- id: num_objects
type: u4
- id: objects
type: dat_object
repeat: expr
repeat-expr: num_objects
types:
dat_object:
seq:
- id: properties
type: property
repeat: until
repeat-until: 'not _.is_valid'
- id: len_compressed
type: s4
- id: len_uncompressed
type: s4
- id: body
size: len_compressed
type:
switch-on: type
cases:
'"BMP "': dat_bitmap
'"RLE "': dat_rle_sprite
'"FONT"': dat_font
instances:
type:
value: properties.last.magic
property:
seq:
- id: magic
size: 4
type: str
- id: type
size: 4
type: str
if: is_valid
- id: len_body
type: u4
if: is_valid
- id: body
size: len_body
type: str
if: is_valid
instances:
is_valid:
value: 'magic == "prop"'
dat_bitmap:
seq:
- id: bits_per_pixel
type: s2
- id: width
type: u2
- id: height
type: u2
- id: image
size-eos: true
dat_rle_sprite:
seq:
- id: bits_per_pixel
type: s2
- id: width
type: u2
- id: height
type: u2
- id: len_image
type: u4
- id: image
size-eos: true
dat_font:
seq:
- id: font_size
type: s2
- id: body
type:
switch-on: font_size
cases:
8: dat_font_8
16: dat_font_16
# -1: dat_font_proportional
0: dat_font_3_9
dat_font_8:
doc: |
Simple monochrome monospaced font, 95 characters, 8x8 px
characters.
seq:
- id: chars
size: 8
repeat: expr
repeat-expr: 95
dat_font_16:
doc: |
Simple monochrome monospaced font, 95 characters, 8x16 px
characters.
seq:
- id: chars
size: 16
repeat: expr
repeat-expr: 95
dat_font_3_9:
doc: |
New bitmap font format introduced since Allegro 3.9: allows
flexible designation of character ranges, 8-bit colored
characters, etc.
seq:
- id: num_ranges
type: s2
- id: ranges
type: range
repeat: expr
repeat-expr: num_ranges
types:
range:
seq:
- id: mono
type: u1
- id: start_char
type: u4
doc: First character in range
- id: end_char
type: u4
doc: Last character in range (inclusive)
- id: chars
type: font_char
repeat: expr
repeat-expr: end_char - start_char + 1
font_char:
seq:
- id: width
type: u2
- id: height
type: u2
- id: body
size: width * height
enums:
pack_enum:
0x736c682e: unpacked


firewall-cmd
The firewalld command-line client.
More information: home page
- View the available firewall zones:
firewall-cmd --get-active-zones
- View the rules which are currently applied:
firewall-cmd --list-all
- Permanently move the interface into the block zone, effectively blocking all communication:
firewall-cmd --permanent --zone=block --change-interface=enp1s0
- Permanently open the port for a service in the specified zone (like port 443 when in the `public` zone):
firewall-cmd --permanent --zone=public --add-service=https
- Permanently close the port for a service in the specified zone (like port 80 when in the `public` zone):
firewall-cmd --permanent --zone=public --remove-service=http
- Permanently open two arbitrary ports in the specified zone:
firewall-cmd --permanent --zone=public --add-port=25565/tcp --add-port=19132/udp
- Reload firewalld to force rule changes to take effect:
firewall-cmd --reload


[url "<actual url base>"] insteadOf = <other url base>
git-fetch(1) Manual Page
NAME
git-fetch - Download objects and refs from another repository
SYNOPSIS
git fetch [<options>] [<repository> [<refspec>...]] git fetch [<options>] <group> git fetch --multiple [<options>] [(<repository> | <group>)...] git fetch --all [<options>]
DESCRIPTION
Fetches named heads or tags from one or more other repositories, along with the objects necessary to complete them.
The ref names and their object names of fetched refs are stored in .git/FETCH_HEAD. This information is left for a later merge operation done by git merge.
When <refspec> stores the fetched result in remote-tracking branches, the tags that point at these branches are automatically followed. This is done by first fetching from the remote using the given <refspec>s, and if the repository has objects that are pointed by remote tags that it does not yet have, then fetch those missing tags. If the other end has tags that point at branches you are not interested in, you will not get them.
git fetch can fetch from either a single named repository, or from several repositories at once if <group> is given and there is a remotes.<group> entry in the configuration file. (See git-config(1)).
OPTIONS
- --all
Fetch all remotes.
- -a
- --append
Append ref names and object names of fetched refs to the existing contents of .git/FETCH_HEAD. Without this option old data in .git/FETCH_HEAD will be overwritten.
- --depth=<depth>
Deepen or shorten the history of a shallow repository created by git clone with --depth=<depth> option (see git-clone(1)) to the specified number of commits from the tip of each remote branch history. Tags for the deepened commits are not fetched.
- --unshallow
Convert a shallow repository to a complete one, removing all the limitations imposed by shallow repositories.
- --dry-run
Show what would be done, without making any changes.
- -f
- --force
When git fetch is used with <rbranch>:<lbranch> refspec, it refuses to update the local branch <lbranch> unless the remote branch <rbranch> it fetches is a descendant of <lbranch>. This option overrides that check.
- -k
- --keep
Keep downloaded pack.
- --multiple
Allow several <repository> and <group> arguments to be specified. No <refspec>s may be specified.
- -p
- --prune
After fetching, remove any remote-tracking branches which no longer exist on the remote.
- -n
- --no-tags
By default, tags that point at objects that are downloaded from the remote repository are fetched and stored locally. This option disables this automatic tag following. The default behavior for a remote may be specified with the remote.<name>.tagopt setting. See git-config(1).
- -t
- --tags
This is a short-hand for giving refs/tags/*:refs/tags/* refspec from the command line, to ask all tags to be fetched and stored locally. Because this acts as an explicit refspec, the default refspecs (configured with the remote.$name.fetch variable) are overridden and not used.
- --recurse-submodules[=yes|on-demand|no]
This option controls if and under what conditions new commits of populated submodules should be fetched too. It can be used as a boolean option to completely disable recursion when set to no or to unconditionally recurse into all populated submodules when set to yes, which is the default when this option is used without any value. Use on-demand to only recurse into a populated submodule when the superproject retrieves a commit that updates the submodule's reference to a commit that isn't already in the local submodule clone.
- --no-recurse-submodules
Disable recursive fetching of submodules (this has the same effect as using the --recurse-submodules=no option).
- --submodule-prefix=<path>
Prepend <path> to paths printed in informative messages such as "Fetching submodule foo". This option is used internally when recursing over submodules.
- --recurse-submodules-default=[yes|on-demand]
This option is used internally to temporarily provide a non-negative default value for the --recurse-submodules option. All other methods of configuring fetch's submodule recursion (such as settings in gitmodules(5) and git-config(1)) override this option, as does specifying --[no-]recurse-submodules directly.
- -u
- --update-head-ok
By default git fetch refuses to update the head which corresponds to the current branch. This flag disables the check. This is purely for the internal use for git pull to communicate with git fetch, and unless you are implementing your own Porcelain you are not supposed to use it.
- --upload-pack <upload-pack>
When given, and the repository to fetch from is handled by git fetch-pack, --exec=<upload-pack> is passed to the command to specify non-default path for the command run on the other end.
- -q
- --quiet
Pass --quiet to git-fetch-pack and silence any other internally used git commands. Progress is not reported to the standard error stream.
- -v
- --verbose
Be verbose.
- --progress
Progress status is reported on the standard error stream by default when it is attached to a terminal, unless -q is specified. This flag forces progress status even if the standard error stream is not directed to a terminal.
- <repository>
The "remote" repository that is the source of a fetch or pull operation. This parameter can be either a URL (see the section GIT URLS below) or the name of a remote (see the section REMOTES below).
- <group>
A name referring to a list of repositories as the value of remotes.<group> in the configuration file. (See git-config(1)).
- <refspec>
The format of a <refspec> parameter is an optional plus +, followed by the source ref <src>, followed by a colon :, followed by the destination ref <dst>.
The remote ref that matches <src> is fetched, and if <dst> is not empty string, the local ref that matches it is fast-forwarded using <src>. If the optional plus + is used, the local ref is updated even if it does not result in a fast-forward update.
NoteIf the remote branch from which you want to pull is modified in non-linear ways such as being rewound and rebased frequently, then a pull will attempt a merge with an older version of itself, likely conflict, and fail. It is under these conditions that you would want to use the + sign to indicate non-fast-forward updates will be needed. There is currently no easy way to determine or declare that a branch will be made available in a repository with this behavior; the pulling user simply must know this is the expected usage pattern for a branch. NoteYou never do your own development on branches that appear on the right hand side of a <refspec> colon on Pull: lines; they are to be updated by git fetch. If you intend to do development derived from a remote branch B, have a Pull: line to track it (i.e. Pull: B:remote-B), and have a separate branch my-B to do your development on top of it. The latter is created by git branch my-B remote-B (or its equivalent git checkout -b my-B remote-B). Run git fetch to keep track of the progress of the remote side, and when you see something new on the remote branch, merge it into your development branch with git pull . remote-B, while you are on my-B branch. NoteThere is a difference between listing multiple <refspec> directly on git pull command line and having multiple Pull: <refspec> lines for a <repository> and running git pull command without any explicit <refspec> parameters. <refspec> listed explicitly on the command line are always merged into the current branch after fetching. In other words, if you list more than one remote refs, you would be making an Octopus. While git pull run without any explicit <refspec> parameter takes default <refspec>s from Pull: lines, it merges only the first <refspec> found into the current branch, after fetching all the remote refs. This is because making an Octopus from remote refs is rarely done, while keeping track of multiple remote heads in one-go by fetching more than one is often useful. Some short-cut notations are also supported.
tag <tag> means the same as refs/tags/<tag>:refs/tags/<tag>; it requests fetching everything up to the given tag.
A parameter <ref> without a colon fetches that ref into FETCH_HEAD, and updates the remote-tracking branches (if any).
GIT URLS
In general, URLs contain information about the transport protocol, the address of the remote server, and the path to the repository. Depending on the transport protocol, some of this information may be absent.
Git supports ssh, git, http, and https protocols (in addition, ftp, and ftps can be used for fetching and rsync can be used for fetching and pushing, but these are inefficient and deprecated; do not use them).
The native transport (i.e. git:// URL) does no authentication and should be used with caution on unsecured networks.
The following syntaxes may be used with them:
ssh://[user@]host.xz[:port]/path/to/repo.git/
git://host.xz[:port]/path/to/repo.git/
http[s]://host.xz[:port]/path/to/repo.git/
ftp[s]://host.xz[:port]/path/to/repo.git/
rsync://host.xz/path/to/repo.git/
An alternative scp-like syntax may also be used with the ssh protocol:
[user@]host.xz:path/to/repo.git/
This syntax is only recognized if there are no slashes before the first colon. This helps differentiate a local path that contains a colon. For example the local path foo:bar could be specified as an absolute path or ./foo:bar to avoid being misinterpreted as an ssh url.
The ssh and git protocols additionally support ~username expansion:
ssh://[user@]host.xz[:port]/~[user]/path/to/repo.git/
git://host.xz[:port]/~[user]/path/to/repo.git/
[user@]host.xz:/~[user]/path/to/repo.git/
For local repositories, also supported by Git natively, the following syntaxes may be used:
/path/to/repo.git/
\file:///path/to/repo.git/
These two syntaxes are mostly equivalent, except when cloning, when the former implies --local option. See git-clone(1) for details.
When Git doesn't know how to handle a certain transport protocol, it attempts to use the remote-<transport> remote helper, if one exists. To explicitly request a remote helper, the following syntax may be used:
<transport>::<address>
where <address> may be a path, a server and path, or an arbitrary URL-like string recognized by the specific remote helper being invoked. See gitremote-helpers(1) for details.
If there are a large number of similarly-named remote repositories and you want to use a different format for them (such that the URLs you use will be rewritten into URLs that work), you can create a configuration section of the form:
For example, with this:
[url "git://git.host.xz/"] insteadOf = host.xz:/path/to/ insteadOf = work:
a URL like "work:repo.git" or like "host.xz:/path/to/repo.git" will be rewritten in any context that takes a URL to be "git://git.host.xz/repo.git".
If you want to rewrite URLs for push only, you can create a configuration section of the form:
[url "<actual url base>"] pushInsteadOf = <other url base>
For example, with this:
[url "ssh://example.org/"] pushInsteadOf = git://example.org/
a URL like "git://example.org/path/to/repo.git" will be rewritten to "ssh://example.org/path/to/repo.git" for pushes, but pulls will still use the original URL.
REMOTES
The name of one of the following can be used instead of a URL as <repository> argument:
a remote in the Git configuration file: $GIT_DIR/config,
a file in the $GIT_DIR/remotes directory, or
a file in the $GIT_DIR/branches directory.
All of these also allow you to omit the refspec from the command line because they each contain a refspec which git will use by default.
Named remote in configuration file
You can choose to provide the name of a remote which you had previously configured using git-remote(1), git-config(1) or even by a manual edit to the $GIT_DIR/config file. The URL of this remote will be used to access the repository. The refspec of this remote will be used by default when you do not provide a refspec on the command line. The entry in the config file would appear like this:
[remote "<name>"] url = <url> pushurl = <pushurl> push = <refspec> fetch = <refspec>
The <pushurl> is used for pushes only. It is optional and defaults to <url>.
Named file in $GIT_DIR/remotes
You can choose to provide the name of a file in $GIT_DIR/remotes. The URL in this file will be used to access the repository. The refspec in this file will be used as default when you do not provide a refspec on the command line. This file should have the following format:
URL: one of the above URL format Push: <refspec> Pull: <refspec>
Push: lines are used by git push and Pull: lines are used by git pull and git fetch. Multiple Push: and Pull: lines may be specified for additional branch mappings.
Named file in $GIT_DIR/branches
You can choose to provide the name of a file in $GIT_DIR/branches. The URL in this file will be used to access the repository. This file should have the following format:
<url>#<head>
<url> is required; #<head> is optional.
Depending on the operation, git will use one of the following refspecs, if you don't provide one on the command line. <branch> is the name of this file in $GIT_DIR/branches and <head> defaults to master.
git fetch uses:
refs/heads/<head>:refs/heads/<branch>
git push uses:
HEAD:refs/heads/<head>
EXAMPLES
Update the remote-tracking branches:
$ git fetch origin
The above command copies all branches from the remote refs/heads/ namespace and stores them to the local refs/remotes/origin/ namespace, unless the branch.<name>.fetch option is used to specify a non-default refspec.
Using refspecs explicitly:
$ git fetch origin +pu:pu maint:tmp
This updates (or creates, as necessary) branches pu and tmp in the local repository by fetching from the branches (respectively) pu and maint from the remote repository.
The pu branch will be updated even if it is does not fast-forward, because it is prefixed with a plus sign; tmp will not be.
BUGS
Using --recurse-submodules can only fetch new commits in already checked out submodules right now. When e.g. upstream added a new submodule in the just fetched commits of the superproject the submodule itself can not be fetched, making it impossible to check out that submodule later without having to do a fetch again. This is expected to be fixed in a future Git version.
SEE ALSO
GIT
Part of the git(1) suite


 During this process the brain deletes the neural connections that are not necessary or useful and strengths the necessary one’s. Our brain goes through the changes all the time and these changes can happen slow or fast and can also be positive or negative.
When we learn new pathways are formed in the brain. Learning a language or musical instrument are some of the examples that does neuroplasticity of the brain.
Neuroplasticity and growth mindset looks similar but they are not. Growth mindset means that the skills, talents, and abilities can be developed and improved with determination whereas neuroplasticity means that the brain can adopt and develop beyond the usual development period.


Bitcoin Price Could Dump to $5000 in the Near Future, Here’s How
by Martin YoungBitcoin price is getting battered as if there’s no tomorrow. Following a huge red weekly candle closure, the benchmark crypto was crushed through another support zone in a plunge down to $6,600. BTC is now in a very dangerous territory which could result in a drop all the way back to $5k – here’s how.
Bitcoin Price Back in $6k Zone
When things turn south in crypto markets it happens in the blink of an eye. As positions get liquidated en masse, the short-selling avalanche gathers pace and that is exactly what has been going on over the past week.
The weekend saw bitcoin price take a breather and hold around the $7,200 level for a while but the bears came out again in force on Monday morning as BTC dumped to a six month low just above $6,600 according to Tradingview.com.
The RSI on the hourly chart is massively oversold so there may be a slight recovery here, but further losses are looking likely.
The digital asset is getting hammered hard with a 7% loss on the day, 22% pounding since the same time last Monday, and a 52% demolition since its 2019 high five months ago.
The failure of the weekly candle to close above $7k has analysts rattled and predictions of a fall below $6k are now starting to look like a harsh reality. Trader and analyst Josh Rager has eyed a support level for a bounce in the low $6k region;
“Funding still positive, so not overly bearish at this point as $6300s would be an eventual target here, the only question is does it bounce back up to high $7ks before or after the next drop,”
This takes into consideration the long spell of consolidation bitcoin had at the $6,400 level last year. This year however there has been no such support or resistance in this range which could result in a plunge back below $6k pretty rapidly.
BTC Back At $5k?
A more worrisome scenario would be a return to $5k and this figure is significant because it is where the 200-week moving average lies. This technical indicator served as solid support throughout the 2018 crypto winter when bitcoin dropped to its low below $3,200.
If this pattern is to repeat bitcoin price may well fall back to that support at $5k and hold there before any moves into positive territory occur. This at the moment is the worst-case scenario for bitcoin prices, but we have been there before and came through it.
Will bitcoin price dump to $5k this year? Add your comments below.
Images via Shutterstock, BTC/USD charts via TradingView, Twitter: @JoshRager
The Rundown


The select method
Ruby and Javascript seem to be cousins. While Ruby is the more abbreviated and some might argue elegant language, javascript is the more verbose cousin, with maybe more horsepower. But that has yet to be seen from these early stages of getting to know both of them.
One thing to look at in comparing these languages is how they handle basic data structures and how they are created. These are both object oriented languages and data structures are a key part of all of this.
What we want to look at his how to create objects from a blueprint. This is where Ruby starts to shine with it’s classes. In a hash literal or object literal, things are pretty straightforward. But when it comes to manufacturing objects, the Ruby class is a wonderful thing. A class in Ruby allows you to define and make many objects that not only share characteristics and behaviors, but can also share variables internally between them.
Let’s look at a javascript constructor function:
function student(name, grade, age) {
this.name = name,
this.grade = grade,
this.age = age,
this.sayName = function() { console.log(“Hello “ + this.name) }
}
Now this is pretty cool. All we have to do is call student.new(), pass in the parameters and we have a new student object that we can assign to a variable. We can even have each one of those say it’s own name, because a function can be a value in the object.
But lets take a look at Ruby class.
class student
def initialize(name, grade, age)
@name = name
@grade = grade
@age = age
@@totalstudents = 1
end
def say_name
p “Hello #{@name}, you are one of #{@@totalstudents}.”
end
end
Now what are this little @ symbols? Those signify instance variables and class variables. Why are those cool? Well the class variables can be used and accessed by any object in the class. Something a JS constructor function cannot do. So you can create a whole system of objects that talk internally to each other. A JS constructor function basically creates an island of an object, floating solo. A ruby class constructor can create a whole series of networked functions. And that is powerful.


Here we see cloudiness does not appear to be strongly correlated with the latitude of the city. There is an even distribution for both northern and southern hemisphers. Some grouping is visible at the cloudiness bounds of 0 and 100, but this is visible for all latitudes as we might expect.


Time:
Veiw Highscores
A Simple Code Quiz
You only have 60 seconds to complete the quiz
Incorrect answers will result in a time reduction penalty
Start Quiz


Hello,
The subject says it all. My Raspberry PI uses oem_gateway to send data to emoncms. This had been working fine, but for the last 2 consecutive nights, it stopped sending data. All my inputs show as inactive, but a reboot starts the sending process again.
It's been a while since I've looked around these forums, as everything had been working flawlessly for well over a year. I now see that there is something called emonhub (http://openenergymonitor.org/emon/node/5986). Should I be upgrading to this way of sending data?
Thanks,
Allen
Re: oem_gateway stops sending
Hi Allen
The OEM gateway is emonHub's predecessor and there are several benefits to upgrading, but OEMG was a solid performer and therefore I couldn't say it was essential, however the IPE-R1 image that most OEMG installs were on does cause issues and is not supported, that was one of the primary reasons emonHub came about.
So if using IPE-R1 read-only I would strongly recommend the jump.
Sorry there is no emonhub installer with a built in OEMG uninstaller as there were some variations and most users had IPE, so the additional work to accommodate the possible variants for a very few non-IPE users wasn't valid.
I can help you uninstall if you wish or there are some pre-configured OEM SDcard images with emonHub on, tell us about your set up etc for a recommendation.
Paul
Re: oem_gateway stops sending
Hi Paul,
Thank for getting back so quickly. I'm pretty sure my setup on the Raspberry PI is standard. I downloaded the image and updated the config file with my API key. But other than that it's a normal read-only OEMG installation.
I'm not sure what IPE is, or how I can tell if I have it or not. Would it be easier just to load the SD card with a new image?
I have attached a hard disk to my PI with at some point I want to start using for a local emoncms, but I've not got round to that yet, but if I can set that up at the same time as the move to emonHub, that would be useful.
Thanks for you help.
Allen
Re: oem_gateway stops sending
Hi Allen
Sorry I didn't reply yesterday I was pondering over what to recommend and didn't really reach an answer so here are my thoughts.
"normal read-only OEMG installation" sounds very much like it will be IPE-R1 based.
The direct replacement for what you have now would be original emonhub as a forwarder only on a read-only Raspbian OS image. current SDcard images are read-only Raspbian and do have emonhub set up by default.
However where as earlier versions of the "previous" pre-emonPi SDcard image had low-write emoncms disabled by default, I believe this image and onwards has low-write emoncms enabled by default. so emoncms would need to be disabled to "match" what you have now
Neither the "current" post emonPi or "previous" pre-emonPi SDcard images provide a direct route to a full OS and emoncms HDD solution, so do not help with setting up the HDD at the same time.
The emoncms install guide for linux would mostly work for the Pi but it's noy an easy route and the Raspbian OS needs to be installed and booting to the HDD first.
There is an old guide I wrote many moons ago in a thread that could be followed to use an HDD on a Pi first,
I do also have a emoncms install script but it may not work first time if it's not up to date, I never know until I try it as it isn't linked to any emoncms changes.
None of this is particularly difficult it's just not as easy as "download this" or "follow that" and I'm starting to think it maybe easier to guide you through an install rather than try and guide you through the guides, at least that way other users may find it of use too.
Paul
Re: oem_gateway stops sending
Hi Paul,
I'm happy to go through an install. My only worry is that I don't have a spare Pi, so really I need to get this done in one go, so as not to lose monitoring data. But it hung again last night, so the sooner the better.
Thanks for your help.
Allen
Re: oem_gateway stops sending
Setting up the hdd and installing emonHub is the easiest parts so if we do that first then you are back up and running while we install and set up emoncms.
Firstly Download the latest version of Raspbian OS and install to the HDD and a (spare?) SDcard and
follow Creating a local EmonCMS installation on a Raspberry Pi up to the reboot only, then install emonHub
git clone https://github.com/emonhub/dev-emonhub.git ~/dev-emonhub && ~/dev-emonhub/install
and then add emonHub command line options,
Run emonhub -c to open emonhub.conf to add your apikey and add the hash to " #url = http://localhost/emoncms " (commenting out the localhost reference will use the emoncms.org default). If neeeded edit the rfm2pi details while you are in there (this should look quite familiar to you as a OEMG user).
You can also set "loglevel = DEBUG" if you want verbose logs to check everything is ok using emonhub -dl.
That should be all you need to get you running emonhub from the HDD.
Read-only isn't a mandatory requirement and is used predominantly on sdcards, possibly because users with HDDs are doing other stuff on there perhaps? RO can still be installed as a safety measure if you prefer,
Paul
Re: oem_gateway stops sending
Hi Paul,
Everything was going fine. Ihave the Pi booting from HDD and I have installed emonhub. I editted the emonhub.conf to include my apikey. But when I start with emonhub -dl I get this output:
2015-07-07 20:21:07,500 INFO EmonHub Pre-Release Development Version (rc1.2)
2015-07-07 20:21:07,503 INFO Opening hub...
2015-07-07 20:21:07,511 WARNING Setting emonCMS apikey: obscured
2015-07-07 20:21:11,526 WARNING Device communication error - check settings
2015-07-07 20:32:40,525 INFO Logging level set to DEBUG
2015-07-07 20:32:40,529 INFO Setting emonCMS url: http://emoncms.org
2015-07-07 20:32:40,532 INFO Setting emonCMS apikey: null
2015-07-07 20:32:40,535 INFO Setting RFM2Pi frequency: 868 (8b)
2015-07-07 20:32:41,539 INFO Setting RFM2Pi baseid: 10 (10i)
2015-07-07 20:39:30,405 INFO Setting emonCMS apikey: set
My config is like this:
[reporters]
# This reporter sends data to emonCMS
[[emonCMS]]
Type = EmonHubEmoncmsReporter
[[[init_settings]]]
[[[runtimesettings]]]
#url = http://localhost/emoncms
apikey = <apikey obscured>
Re: oem_gateway stops sending
Hi Paul,
Panic over! I hadn't realised that emonhub -dl just output the log. Just running it normally and tailing the log shows that it is receiving and outputting data. My emoncms is being updated.
One question. Will emonhub start automatically if I reboot the Pi, or does it need to be started manually ?
Thanks,
Allen
Re: oem_gateway stops sending
Hi Allen
What baud does your rfm2pi operate at ? I assume 9600 if from the OEMG era.
Is that defined in the RFM2Pi settings in emonhub.conf?
[[RFM2Pi]]
[[[init_settings]]]
com_baud = 9600
[[[runtimesettings]]]
etc etc
Paul
Re: oem_gateway stops sending
It will auto start at boot if you used the install script, however it is always best to test these things just to confirm rather than finding out at a later date.
emonhub -dl does tail the log, it looks like something upset the serial port baud detection on your first attempt, defining the baud explicitly will disable the auto detection and ensure a good connection everey time.
Paul
Re: oem_gateway stops sending
Hi Paul,
Everything seems to be working fine with the emonhub, so the next step is to start looking at setting up emoncms. However, before I do that I'd like to take full advantage of my complete USB external drive. At the moment I have this setup:
(parted) print list free
Model: Mass Storage Device (scsi)
Disk /dev/sda: 80.0GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Number Start End Size Type File system Flags
32.3kB 4194kB 4162kB Free Space
1 4194kB 62.9MB 58.7MB primary fat16 lba
2 62.9MB 3277MB 3214MB primary ext4
3277MB 80.0GB 76.7GB Free Space
So you can see there is a large amount of free space. Would it be best to create another partition to use this space and install emoncms on that, or would it be best to extend the existing ext4 partition to use this space (in which case what is the best way to do that) ?
Thanks,
Allen
Re: oem_gateway stops sending
The best way to configure the hdd space is to separate the filesystem and data files. I usually install emoncms to the same partition as the OS but move the mySQL and data folders to a "data" partition like the waty it's done on the pre-configured images. This can (should?) be done regardless of whether you go for read-only OS or not.
It's entirely up to you if you use ALL the space in one go or not, It can make things a little easier to manage to keep the partitions smaller and increase the size as needed but it's a minor preference. If it were me, I would just create another small(ish) partition leaving plenty of room to expand the existing one eg a 5GB partition starting 20GB into the hdd ending at 25GB.
fdisk is probably the easier tool to use, gparted will also do it but I'm less familiar with it.
In fact most of this is covered in the SDcard "built it yourself" guides, using fdisk will be the same (different size and position) but you won't need to format ext2 since it's not on a SDcard.
I've been meaning to retest my installer on a spare Pi for you, it makes installing emoncms a one line command, I will try and do it over the weekend.
Paul
Re: oem_gateway stops sending
Hi Paul,
I have now followed the remainder of the instructions on this page http://openenergymonitor.org/emon/node/5092. I now have emoncms running on my Pi and a new data partition. How can I move the mySQL database to my data partition ?
Thanks,
Allen
Re: oem_gateway stops sending
Hi Allen
I have answered your other Newbie issues with emoncms thread about the emoncms versions etc.
If it were me I would start again, setting up the hdd and reinstalling emonhub (you could keep your existing emonhub.conf file) will be less painful than chopping things around and provide a known state to build the correct emoncms version on.
As mentioned above "The emoncms install guide for linux would mostly work for the Pi " if you wish to install step by step but there is a change in the server root folder and it doesn't automatically install to 2 partitions.
I have had a look at my installer script and although I would like to make a couple of adjustments I believe it will work as is ( I've not tested recently) to test it I need to free up an sd card to test it as they all currently have partial projects on them.
The script will automatically move the SQL and other data files to "~/emonData" your data partition should be mounted to that point before running the installer. (this is the default and can be altered)
Paul
Re: oem_gateway stops sending
Hi Paul,
Your script seemed to be working okay, until it tried to create the database:
Cloning into '/var/www/emoncms'...
remote: Counting objects: 8958, done.
remote: Total 8958 (delta 0), reused 0 (delta 0), pack-reused 8957
Receiving objects: 100% (8958/8958), 4.59 MiB | 916 KiB/s, done.
Resolving deltas: 100% (5283/5283), done.
ERROR 1006 (HY000) at line 1: Can't create database 'emoncms' (errno: 2)
The password used by emoncms to access database is 6335f188ead949c7b380dfc715ab297f
PHP Warning: Module 'dio' already loaded in Unknown on line 0
Channel "pear.apache.org/log4php" is already initialized
PHP Warning: Module 'dio' already loaded in Unknown on line 0
log4php/Apache_log4php is already installed and is the same as the released version 2.3.0
install failed
Do you know what might be causing this?
Thanks,
Allen
Re: oem_gateway stops sending
I found a page that suggested a restart of mySQL. When I tried, this is what I got:
When I just try this:
I get a similar message to the one when starting the mySQL. The symbolic link is like this:
When /data is my new data partition on the hdd.
The symbolic link on /data is:
Something looks wrong!
Re: oem_gateway stops sending
Hi Allen,
Something certaily isn't right there. somehow you have a symlink pointing to itself "/data/mysql -> /data/mysql", and since you also have a symlink "/var/lib/mysql -> /data/mysql" that raises the question where is the mysql folder?
Going by the number of messages containing "already" in that latter part of your post before last, I would hazzard a guess and say either you have run this script more than once or there were reminants of the last install still hanging around.
Did you start a fresh or uninstall the apt-get installed emoncms?
Was the data partition mounted when you first run the script?
If you add the data partition to the fstab it will be mounted automatically on boot, is /dev/sda5 correct? you have 5+ hdd paritions or does a new id being allocated to the same partition?
Paul
Re: oem_gateway stops sending
Hi Paul,
I've solved it. I was because I ran your script a second time and didn't move the mysql directory back from my /data partition.
Allen
Re: oem_gateway stops sending
excellent!
Re: oem_gateway stops sending
Hi Paul,
I have downloaded the data from emoncms.org using the backup.php script. However, when I try to visualize one of the feeds I get this error:
I think this is because in your script it has:
But this location for the emoncms.log file does not match the error message I got. I also had to chmod 666 to allow access to the log file.
The error I am getting is this:
When I looked back at the output from backup.php I can see these lines:
The metadata files are on my /data partition (although I'm not sure it's using them). The look like this:
Although I have noticed I have the same directories in /var/lib. My emoncms settings.php is definitely pointing to the /data directories and in the backup.php script I set:
Edit - wrapped long lines - BT
Re: oem_gateway stops sending
I had to do what was suggested in this post http://openenergymonitor.org/emon/node/5495 and chmod to 777. It's a shame that old post doesn't mention if they fixed the problem.
Re: oem_gateway stops sending
Hi Allen
The logging was changed recently in v8.5 so that's why the address is different(to the script), although /var/log's default permissions will probably hamper any direct logging, the normal practice is to use a app specific folder with appropriately set permissions. This has probably been done to suit the read-only configuration for the low-write version. This will need a better solution long term, both in the source and then any installer.
The meta file permission issue is more likely to be that the user "pi" isn't able to access the meta-files when the php script is run, Have you tried using "sudo" ? setting 777 just opens all the permissions to everyone.
Paul
Re: oem_gateway stops sending
Hi Paul,
Using sudo fixed the permissions problem (with the directories set back to their previous permissions).
Thanks,
Allen


| Methods |
public
|
__construct(array $general, array $group, array $single)
Construct middleware subscriber.
Construct middleware subscriber.
|
#
|
public
|
getGeneralMiddlewares(): ?array
Return general middlewares.
Return general middlewares.
|
#
|
public
|
getGroupMiddlewares(string $name): ?array
Return a group from group middlewares.
Return a group from group middlewares.
|
#
|
public
|
getSingleMiddleware(string $name): ?string
Return a middleware from route middlewares.
Return a middleware from route middlewares.
|
#
|
public
|
hasGroupMiddleware(string $name): bool
Check if middleware group exists.
Check if middleware group exists.
|
#
|
public
|
hasSingleMiddleware(string $name): bool
Check if single middleware exists.
Check if single middleware exists.
|
#
|


Contact details: first name 1316 at gmail dot com, sgeorgiou at name at borocard dot com
About me: I am passionated with research, coding, integrating new technologies, and automating cumbersome tasks. My research interests lie to Green and Energy-Efficient Computing, Mining Software Repositories, and Machine Learning. I enjoy working on the command-line and especially with Linux systems. I love to create small indepentant componets and tools to facilitate different daily functionalities. On my free time, I enjoy sporting, reading books, and travelling.
Education
2021-2022
PostDoctoral, Electrical and Computer Engineering; Queen’s University
MSc, Pervasive Computing and Communications for Sustainable Development (PERCCOM); Erasmus Mundus Joint Master Degree
ITMO University of Saint-Petersburg (Russia) Thesis title: Implementating Green IT Approach for Transferring Big Data over Parallel Data Links; Thesis
Lulea University of Technology (Sweden) Semester 3: Resource Efficient Pervasive Computing Systems and CommunicationsDegree
Lappeenranta University of Technology (Finland) Semester 2: Smart Software and ServicesDegree
Unversity of Lorraine (France) Semester 1: Sustainable Computer Network EngineeringDegree
2008-2013
BSc, Networks and Systems Programming; University of Cyprus
Thesis title: Implementation and Evaluation of the Biologically – Inspired AntHocNet Routing Protocol in Sensor Network; Degree
Research Publications
Conference Papers
Stefanos Georgiou*, Maria Kechagia, Tushar Sharma, Federica Sarro, and Jenny Zou. Green AI: Do Deep Learning Frameworks Have Different Costs? In 44th International Conference on Software Engineering: Technical Track, ICSE ’22. New York, NY, USA, May 2022. Association for Computing Machinery. [Paper] [BibTex]
Stefanos Georgiou, Maria Kechagia Panos Louridas, and Diomidis Spinellis. What Are Your Programming Language’s Energy-Delay Implications? In 15th International Conference on Mining Software Repositories: Technical Track, MSR ’18. New York, NY, USA, May 2018. Association for Computing Machinery. [Paper] [BibTex] [Presentation] [Data-set]
Stefanos Georgiou, Maria Kechagia, and Diomidis Spinellis. Analyzing Programming Languages’ Energy Consumption: An Empirical Study. In PCI 2017: Proceedings of the 21st Pan-Hellenic Conference on Informatics, ACM International Conference Proceeding Series. ACM Press, September 2017. [Paper] [BibTex] [Presentation] [Data-Set]
Journal Articles
Stefanos Georgiou, Dimitris Mitropoulos, and Diomidis Spinellis. Energy-Efficient Computing in a Secure Environment. Submitted in July 2020 for review in ACM Transaction of Computer Systems.
Stefanos Georgiou and Diomidis Spinellis. Energy-Delay Investigation of Remote Inter-Process Communication Technologies. Accepted for publication in Elsevier Journal of Systems and Software 2019. [Preprint] [BibTex]
Stefanos Georgiou, Stamatia Rizou, and Diomidis Spinellis. Software Development Life Cycle for Energy-Efficiency: Techniques and Tools. Accepted for publication in ACM Computing Surveys 2019. [Preprint] [BibTex]
Organization Services
Program Committee
EASE 2022 for the Research Track
ISEC 2022 for the Doctoral Symposium
ESEC/FSE 2021 for the Student Research Competition
ASE 2020 for the International Workshop on Sustainable Software Engineering
Reviewer
Journals submitted to Software: Practices and Experience
Journals submitted to ACM Computing Surveys (CSUR)
Research papers submitted to ESEC/FSE
Co-reviewer
Conference papers submitted to ICSE-SEIP, MSR, OSS, ICPC, ICCS, SANER, FSE, ASE, ICMSE and SATToSE
Invited Talks
Tutorials
How to improve your CI/CD process presented on 5th of July 2019 at BALab of Athens University of Economics and Business in Athens, Greece. Presentation
Travis CI with CV template tutorial presented on 7th of June 2018 at ITMO Univesity of Saint Petersburg for PERCCOM Master students in Saint-Petersburg, Russia. Presentation
Research
Saving Energy in Software Development by Making the Right Choices presented on the 4th of March 2022 at Sustainable Software Engineering lecture of TU Delft. PresentationSlides
What are your programming language’s energy-delay implications? presented on the 12th of June 2018 at PERCCOM’s Summer School in Lappeenranta, Finland. Proof
Teaching Experience
Having weekly meetings with five PhD students and two Master students to assist and advise them on their research studies (at Queen’s University from 2021 to 2023)
Assisting my PhD advisor at Programming II course (Winter Semester of 2016, 2017, and 2018) by giving tutorial and Lab sessions in Java [Repository]
Gave Java lectures and tutorials for the 1st and 2nd Coding Boot Camp in Athens, Greece (Oct. 2017 - May 2018) [Repository] [Proof]
Supported the product development that facilitates fast web-sites development (by using Blockly) on Desktop that can be exported in smart-phones as well.
Responsibilities
Development of API end-points in JavaScript (Node.JS) and MongoDB for the server platform (product) and customer products
Creation of the CI system for the product (in GitLab) to perform back-end and front-end testing (through Mocha and Cypress frameworks, respectively) and CD to auto-deploy product (for specific push branches) on Google’s App Engine (Aurora, Beta, and Production) using the Flex environment
Integration of Bitrise system in the product to allow platform users in exporting their Desktop applications to Android and iOS smart-phones through the Cordova wrapper


JavaScript Variables
JavaScript Data Types
One Statement, Many Variables
Value = undefined
Re-Declaring JavaScript Variables
JavaScript Arithmetic


@(header1: String, header2: String, link: String, xml : String) @defining(play.core.PlayVersion.current) { version =>


Shuffle’m Up
问题描述 :
A common pastime for poker players at a poker table is to shuffle stacks of chips. Shuffling chips is performed by starting with two stacks of poker chips, S1 and S2, each stack containing C chips. Each stack may contain chips of several different colors.
The actual shuffle operation is performed by interleaving a chip from S1 with a chip from S2 as shown below for C = 5:
The single resultant stack, S12, contains 2 * C chips. The bottommost chip of S12 is the bottommost chip from S2. On top of that chip, is the bottommost chip from S1. The interleaving process continues taking the 2nd chip from the bottom of S2 and placing that on S12, followed by the 2nd chip from the bottom of S1 and so on until the topmost chip from S1 is placed on top of S12.
After the shuffle operation, S12 is split into 2 new stacks by taking the bottommost C chips from S12 to form a new S1 and the topmost C chips from S12 to form a new S2. The shuffle operation may then be repeated to form a new S12.
For this problem, you will write a program to determine if a particular resultant stack S12 can be formed by shuffling two stacks some number of times.
输入:
The first line of input contains a single integer N, (1 ≤ N ≤ 1000) which is the number of datasets that follow.
Each dataset consists of four lines of input. The first line of a dataset specifies an integer C, (1 ≤ C ≤ 100) which is the number of chips in each initial stack (S1 and S2). The second line of each dataset specifies the colors of each of the C chips in stack S1, starting with the bottommost chip. The third line of each dataset specifies the colors of each of the C chips in stack S2 starting with the bottommost chip. Colors are expressed as a single uppercase letter (A through H). There are no blanks or separators between the chip colors. The fourth line of each dataset contains 2 * C uppercase letters (A through H), representing the colors of the desired result of the shuffling of S1 and S2 zero or more times. The bottommost chip’s color is specified first.
输出:
Output for each dataset consists of a single line that displays the dataset number (1 though N), a space, and an integer value which is the minimum number of shuffle operations required to get the desired resultant stack. If the desired result can not be reached using the input for the dataset, display the value negative 1 (−1) for the number of shuffle operations.
样例输入:
2 4 AHAH HAHA HHAAAAHH 3 CDE CDE EEDDCC
样例输出:
1 2 2 -1
解题代码:
/* @author: */ import java.util.*; import java.io.*; import java.lang.reflect.Array; public class Main { static int a[] = new int[200]; static char start[], result[]; static public void main( String [] str ) throws Exception{ int n; int m; Scanner cin = new Scanner( System.in ); n = cin.nextInt(); for( int k=1; k<=n; k++ ) { m = cin.nextInt(); String input1 = cin.next(), input2 = cin.next(), input3 = cin.next(); input1 += input2; start = input1.toCharArray(); boolean [] sign = new boolean[m*2]; for( int i=0; i< m; i++ ) a[i] = i*2+1; for( int i=m; i< m*2; i++ ) a[i] = (i-m)*2; int i; for( i=0; ; i++ ) { //System.out.println( start ); if( input3.equals( String.valueOf(start) ) ) break; for( int j=0; j< 2*m; j++) sign[j] = false; for( int j=0; j< 2*m; j++ ) { if( !sign[j] ) { char t = start[j], tt; sign[j] = true; for( int l=a[j]; l!=j; l=a[l] ) { sign[l] = true; tt = start[l]; start[l] = t; t = tt; } start[j] = t; } } if( input1.equals( String.valueOf(start) ) ) { i = -1; break; } } System.out.println( k+" "+i ); } return; } }
真心不错，力顶作者
很好的思路，可以借鉴
注释很详细，多谢分享！
不考虑最后将结果排序的话，快排的时间复杂度是O(N) ，而堆排的是O(N*logK)
#include <cstdio>
int main() {
//answer must be odd
int n, u, d;
while(scanf("%d%d%d",&n,&u,&d)==3 && n>0) {
if(n<=u) { puts("1"); continue; }
n-=u; u-=d; n+=u-1; n/=u;
n<<=1, ++n;
printf("%dn",n);
}
return 0;
}
大哥，你复制也看看是不是这题的答案才复制吧。
顺利测试通过了，多谢
哇，算法有这么多呢！
第二个方法挺不错。NewHead代表新的头节点，通过递归找到最后一个节点之后，就把这个节点赋给NewHead，然后一直返回返回，中途这个值是没有变化的，一边返回一边把相应的指针方向颠倒，最后结束时返回新的头节点到主函数。
a是根先忽略掉，递归子树。剩下前缀bejkcfghid和后缀jkebfghicd，分拆的原则的是每个子树前缀和后缀的节点个数是一样的，根节点出现在前缀的第一个，后缀的最后一个。根节点b出现后缀的第四个位置，则第一部分为四个节点，前缀bejk，后缀jkeb，剩下的c出现在后缀的倒数第2个，就划分为cfghi和 fghic，第3部分就为c、c
打字员路过。。。。。。算法是啥。。。能干嘛。。。。。。。。能吃么。。哎
懂了，谢谢啦
题目和代码都不一样好吗！！！搞错了


{% extends "polls/includes/base.html" %}
{% block list_operation %}
{% include "polls/includes/list_operation.html" %}
{% endblock list_operation %}
{% block show_content %}
{% include "equipment/includes/list_data.html" %}
{% endblock show_content %}
{% block list_history %}
{% include "polls/includes/list_history.html" %}
{% endblock list_history %}


{% extends "base.html" %} {% load static cms_tags %} {% block extra_js %} {% endblock %} {% block content %}
Chair: {{ page.chair }}
{% if latest_rating.congress.is_current %}Projected {% endif %}Grade for the {{latest_rating.congress}}{% if latest_rating.congress.footnote %}*{% endif %}
* {{latest_rating.congress.footnote}}
{% endif %}{{latest_rating.investigative_oversight_hearings}} Investigative Oversight Hearings
{{latest_rating.policy_legislative_hearings}} Policy/Legislative Hearings
{{latest_rating.total_hearings}} Total Hearings
Last updated: {{page.committee.last_updated}}We are {{latest_rating.congress.percent_passed}}% of the way through the {{latest_rating.congress}}
{{ page.committee }}
{{latest_rating.investigative_oversight_hearings}} Investigative Oversight Hearings; {{latest_rating.investigative_oversight_percent_max}}% historical maximum


- get(String, Map<String, String>) - Method in class com.vmware.avi.sdk.AviApi
-
This method calls the GET REST API.
- getController() - Method in class com.vmware.avi.sdk.AviCredentials
-
Gets the controller's IP.
- getCsrftoken() - Method in class com.vmware.avi.sdk.AviCredentials
-
Gets the csrftoken.
- getLazyAuthentication() - Method in class com.vmware.avi.sdk.AviCredentials
-
Gets lazy authentication.
- getNumApiRetries() - Method in class com.vmware.avi.sdk.AviCredentials
-
Gets the number of API retries.
- getPassword() - Method in class com.vmware.avi.sdk.AviCredentials
-
Gets the password of controller.
- getPort() - Method in class com.vmware.avi.sdk.AviCredentials
-
Gets the port.
- getRetryConxnErrors() - Method in class com.vmware.avi.sdk.AviCredentials
-
Gets the retry connection errors.
- getRetryWaitTime() - Method in class com.vmware.avi.sdk.AviCredentials
-
Gets the retry wait time.
- getSession(AviCredentials) - Static method in class com.vmware.avi.sdk.AviApi
-
This static factory method to create session if not present in the pool if presents in the
session pool returns existing session.
- getSessionID() - Method in class com.vmware.avi.sdk.AviCredentials
-
Gets the session ID.
- getTenant() - Method in class com.vmware.avi.sdk.AviCredentials
-
Gets the Tenant.
- getTenantUuid() - Method in class com.vmware.avi.sdk.AviCredentials
-
Gets the tenant ID.
- getTimeout() - Method in class com.vmware.avi.sdk.AviCredentials
-
Gets the timeout
- getToken() - Method in class com.vmware.avi.sdk.AviCredentials
-
Gets the token.
- getUsername() - Method in class com.vmware.avi.sdk.AviCredentials
-
Gets the username of controller.
- getVerify() - Method in class com.vmware.avi.sdk.AviCredentials
-
Gets the verify for SSL.
- getVersion() - Method in class com.vmware.avi.sdk.AviCredentials
-
Gets the version of controller.


Some quick example text to build on the card title and make up the bulk of the card's content.
Read more...fully integrated with the Twelveth Five-year Plan objectives for Technical Education as a key component for improving the quality of Engineering Education in existing institutions with special consideration for the Low Income States and Special Category States (SCS) and support to strengthen few affiliated technical universities to improve their policy, academic and management practices.
Read more...Some quick example text to build on the card title and make up the bulk of the card's content.
Read more...encourage a rapid prototyping mindset with 24/7 access to the makerspace and all the equipment therein as well as active mentorship and training.
Read more...Help you maximize the productivity of your design and manufacturing resources, while empowering you to deliver innovative products faster.
Read more...Some quick example text to build on the card title and make up the bulk of the card's content.
Read more...Computer-aided engineering software product based on cloud computing. SimScale was developed by SimScale GmbH and allows Computational Fluid Dynamics, Finite Element Analysis and Thermal simulations.
Read more...Combines a desktop environment tuned for iterative analysis and design processes with a programming language that expresses matrix and array mathematics directly.
Read more...Some quick example text to build on the card title and make up the bulk of the card's content.
Read more...Some quick example text to build on the card title and make up the bulk of the card's content.
Read more...Some quick example text to build on the card title and make up the bulk of the card's content.
Read more...Some quick example text to build on the card title and make up the bulk of the card's content.
Read more...Some quick example text to build on the card title and make up the bulk of the card's content.
Read more...Some quick example text to build on the card title and make up the bulk of the card's content.
Read more...Some quick example text to build on the card title and make up the bulk of the card's content.
Read more...Some quick example text to build on the card title and make up the bulk of the card's content.
Read more...Some quick example text to build on the card title and make up the bulk of the card's content.
Read more...


Shark
Note: This is post discusses Shark, which uses Swift 2.0 and it’s toolchain. Make sure you’re using the correct toolchain by doing
sudo xcode-select -switch /Applications/Xcode-beta.app/Contents/Developer/
before you begin.
I’ve been working on a small Swift script called Shark for a while. It aims to leverage Swift’s strong type system in order to make image loading type-safe.
Let’s build an example project that shows how to use Shark. Then at the end, we’ll shorty discuss how it works.
Before we begin let’s see how image loading looks with and without Shark:
//Without Shark
let myImage = UIImage(named:twitter_share_checked)
//With Shark
let myImage = Shark.SocialIcons.twitter_share_checked.image
Installing Shark
Clone the repo if you haven’t already. https://github.com/kaandedeoglu/Shark. The repo contains the source to the script, and also a compiled executable. There are two ways to setup Shark:
-
Copy the
Shark.swift
file to your project directory. Make sure you don’t add it to your project. Keeping the file in some other location works as well, but will cause big headaches if you’re working in a team -
Move the executable named
shark
to /usr/local/bin. Since the library is rapidly evolving at the time of writing, doing this every time there’s an update can be mildly annoying.
If you don’t like the sound of adding an unknown executable to your bin folder. You can take a look at the source, and use
xcrun -sdk macosx swiftc Shark.swift -o shark
to build your own executable.
I’m looking for ways to make the installation easier - any ideas are very welcome
Tutorial
Start up Xcode 7. Start by creating an new “Single Screen Application”. For the purposes of this tutorial, I called mine ManyImages
Our empty, boring project
Next, we are going to add some images to the project. After all, we called it ManyImages. For the sake of easiness, I just copied the contents of the image assets folder of another project of mine. I suggest you do the same instead of looking for images to include.
much image, very pixel, wow
I found out that using Shark, it’s almost always better to use folders to group images. This way, code completion makes it much easier to find the image you’re looking for.
Use the small + icon at the bottom left of the asset catalogue screen to add new folders
Organize much?
Looks much better. Now to the fun part:
Go to project settings, select your target, and switch to the Build Phases
tab. Use the + icon at the top of the page and select New Run Script Phase. This will create a new run script. Drag the newly created Run Script
tab to place it below Target Dependencies
and above Compile Sources
. You can also click on the word Run Script
and rename it to Shark
. Your screen should look like this when you’re done.
Now, expand the run script (now called Shark) tab. Shark takes two parameters. The path to the image assets folder, with an extension .xcassets
, and an output directory where the generated file will be written.
If you’ve followed step 1 in the installation directions. Then the script will look like:
xcrun -sdk macosx swift "${PROJECT_DIR}/Shark.swift" "${PROJECT_DIR}/ManyImages/Assets.xcassets" "${PROJECT_DIR}/ManyImages/"
And if you’ve followed step 2 and moved the shark executable in /usr/local/bin, the script will look like:
shark "${PROJECT_DIR}/ManyImages/Assets.xcassets" "${PROJECT_DIR}/ManyImages/"
Both cases are displayed below:
Running Shark with the Swift toolchain
Running Shark with the executable
With this setup, we’ve told Xcode to run Shark before each build. Open your project folder, and you should see a file called SharkImages.swift
!
Drag and add this file to your project, we are almost there!
Let’s take a look at the generated file:
So simple, but so useful
We can see that Shark has created a nested enum for each folder, and a case for each image.
The file has also some Swift 2.0
Protocol Extension magic to add a computed property named image
to each generated enum, as well as an extension on UIImage
itself.
With all this hard work behind us, it’s time to reap the rewards. Switch to ViewController.swift
, and let’s try loading an image using Shark.
let imageView = UIImageView(image: Shark.SocialIcons.twitter_share_checked.image)
view.addSubview(imageView)
imageView.center = view.center
Notice how we get code completion suggestions from Xcode as we type.
Who doesn’t love code completion?
With our type safe enums, we’ll never make typing mistakes when loading images. Better yet, with good enough grouping and naming, we won’t have to constantly switch to look up image names.
How it works
Under the cover, what Shark does is pretty simple. It walks down the .xcassets folder, creates a model of the folder structure, and uses that to generate a text output which get’s written to a file.
I just want to point out the data type I used to represent the folder structure. I think it’s very neat, and without Swift
things might have gotten a lot uglier.
enum Resource {
case File(String)
case Directory((String, [Resource]))
}
This concise, 4 line enum
is all it took to successfully describe the folder structure.
The fact that we can pattern match on this is plain amazing, and it allows for easy construction of recursive functions.
Consider this function signature, also from the script:
func createEnumDeclarationForResources(resources: [Resource]) -> String
When we think in terms of pattern matching, we automatically split the problem into smaller chunks. The implementation of the above function looks something like this:
var resultString = ""
for resource in resources {
switch resource {
case let .File(imageName):
//A single image file, append a new case,
//resultString += case imageName = "imageName"
case let .Directory(folderName, subResources):
//A new directory, append a new enum,
//resultString += enum folderName { createEnumDeclarationForResources(subResources) }
}
}
The recursive call to createEnumDeclarationForResources
is easy to understand thanks to the easy decomposition of .Directory values through pattern matching.


GitiT
A search resource for Github
Basic Search
Username:
Search
Back to search results
Prev Page
Next Page
Click on picture to view more info. Click username to goto their GitHub page.


Emergency warnings, dust, wind: Victoria endures day of ‘code red’ danger
by The New DailyOut-of-control bushfires are threatening homes in a cluster of Victorian communities on a day of catastrophic fire danger for the state.
On Thursday afternoon, 31,000 homes were without power in central and northern parts of the state, including 17,000 in Bendigo.
Powercor, a service provider, had extra crews working on Thursday to tackle about 5400 power outages.
The majority were due to winds across the state’s west, where 18 power lines have fallen.
“These strong winds can bring down power lines, if people do see them they are encouraged to stay far away from them and report them to us or to their network,” a spokeswoman said.
An emergency warning was issued for Clunes and nearby areas north of Ballarat about midday (AEST) because of a grassfire heading south towards Dunach.
Related Coverage
But residents have been told it is too late to leave.
“You are in danger, act now to protect yourself. It is too late to leave. The safest option is to take shelter indoors immediately. Do not get in the car and drive. It is safer to stay where you are,” the warning said on Thursday.
Another emergency warning was issued for a fire at Strathallen, south of Echuca, where it is has since been declared too late to leave.
The emergency warnings came as winds strengthened across Victoria and the state’s highest bushfire warning – code red (Victoria’s term for catastrophic danger) was issued for central and north-western regions.
The cool change moved through Mildura, in the Victoria’s far north-west at midday – reducing temperatures by eight degrees within minutes. But it also brought a huge dust storm that turned day into night.
Temperatures were expected to soar above 40 degrees across northern parts of the state and hit 42 degrees in Swan Hill before the cooler north-westerly change swept in.
“We’ve got the very hot, dry and quite gusty northerly winds and that’s what’s driven up the fire danger,” the Bureau of Meteorology’s Tom Delamotte said.
The fire danger rating is set at severe or very high for the rest of Victoria, with a severe weather warning for damaging winds also in place.
It’s also the first time this season a statewide total fire ban has been issued.
Melbourne was expected to have one of its hottest November days on record with 39 degrees. Overnight on Wednesday, the city fell just 0.2 degrees short of the hottest November night since 1901 at 26 degrees.
But not everyone has got the message about the fire danger.
A 43-year-old man will be charged on summons after allegedly lighting a fire to clear timber and rubbish at 10pm on Wednesday.
Emergency Management Commissioner Andrew Crisp has warned Victorians to get their fire plans in order and listen for updates.
“Given fires could start and move quickly, you won’t always receive a warning or be told what to do if a fire starts,” he said.
All public parks in the code red areas are closed, and more than 200 schools and early learning childhood centres are also closed across the state.
The pollen count was also “extreme” on Thursday, coinciding with the third anniversary of the thunderstorm asthma event that killed 10 people in 2016.
Victoria is expected to cool down by Thursday night. Another cold front will move through the state by Tuesday, bringing a dusting of snow for the alpine region.
The severe fire danger is also being felt in Tasmania, where much of the state is under a total fire ban.

A severe weather warning has been issued for damaging north-westerly winds with peak gusts up to 100km/h.
But a late southerly change could drop temperatures in the south, before moving up the coast and to the north-east at night, the weather bureau said.
-with AAP


Left aligned:
Right aligned:
Setting `sticky` to "true" will prevent the dropdown from closing when the contents are clicked.
When the `disabled` attribute is set to "true", the dropdown will not open.
When the `disabled` attribute is set to "true" on a `gtx-dropdown-item`, that item will not be clickable or selectable.
A DropdownList may contain arbitrary content, not just lists.
Here is some arbitrary content which is not a list
When the dropdown contents are very long, a scroll bar will be displayed to make all content reachable.


@(record: deployment.Record) @import magenta.DeployReportTree @import magenta.EmptyDeployReport @logSummary(record) @if(!record.isSummarised) { @record.report match { case report : DeployReportTree => {
Deployment log has not yet been written to.
} } } @if(record.isDone){ }


A generic pizza
More...
|
| virtual double | Price => Ingredients.Sum(i=>i.Price) |
| | Gets the price of the pizza. More...
|
| |
| IEnumerable< Ingredient > | Ingredients => _ingredients.ToList() |
| | The ingredients the pizza has. Creates a duplicate list. More...
|
| |
A generic pizza
Definition at line 14 of file Pizza.cs.
◆ Bake()
| void PizzazzLibrary.Implementation.Pizza.Bake |
( |
| ) |
|
◆ Cut()
| void PizzazzLibrary.Implementation.Pizza.Cut |
( |
| ) |
|
◆ Package()
| void PizzazzLibrary.Implementation.Pizza.Package |
( |
| ) |
|
◆ Prepare()
| virtual void PizzazzLibrary.Implementation.Pizza.Prepare |
( |
| ) |
|
|
virtual |
◆ ToString()
| override string PizzazzLibrary.Implementation.Pizza.ToString |
( |
| ) |
|
Provide a culinary description of the pizza.
- Returns
Definition at line 71 of file Pizza.cs.
73 List<string> descriptions =
new List<string>();
75 if (
IsPrepared) descriptions.Add(
"fully prepared");
76 if (
IsBaked) descriptions.Add(
"freshly Baked");
77 if (
IsCut) descriptions.Add(
"neatly cut");
78 if (
IsPackaged) descriptions.Add(
"delicately packaged");
80 string description = String.Join(
", ", descriptions);
81 string ingredients = String.Join(
", ",
Ingredients);
83 return $
"A {description} pizza with {ingredients} for just ${Price}.";
◆ _ingredients
The list of ingredients which can be modified by inheritors.
Definition at line 20 of file Pizza.cs.
◆ Ingredients
| IEnumerable<Ingredient> PizzazzLibrary.Implementation.Pizza.Ingredients => _ingredients.ToList() |
The ingredients the pizza has. Creates a duplicate list.
Definition at line 35 of file Pizza.cs.
◆ Price
| virtual double PizzazzLibrary.Implementation.Pizza.Price => Ingredients.Sum(i=>i.Price) |
Gets the price of the pizza.
Definition at line 30 of file Pizza.cs.
◆ IsBaked
| bool PizzazzLibrary.Implementation.Pizza.IsBaked |
|
getprivate set |
◆ IsCut
| bool PizzazzLibrary.Implementation.Pizza.IsCut |
|
getprivate set |
◆ IsPackaged
| bool PizzazzLibrary.Implementation.Pizza.IsPackaged |
|
getprivate set |
◆ IsPrepared
| bool PizzazzLibrary.Implementation.Pizza.IsPrepared |
|
getprivate set |
The documentation for this class was generated from the following file:
- PizzazzLibrary/Pizza/Implementation/Pizza.cs


Text.WhatColorBack
Syntax
Text.WhatColorBack : int
Description
The Text.WhatColorBack function is used to determine the current text background color. The alternate spelling is whatcolourback.
Example
This program outputs the currently-active background color number. The background color of the message is determined by this number.
View.Set ("screen")
put "The background of this writing"
put "is in color number ", Text.WhatColorBack
Details
The screen should be in a "screen" or "graphics" mode. Beware that the meaning of background color is different in these two modes. See Text.ColorBack for details.
Status
Exported qualified.
This means that you can only call the function by calling Text.WhatColorBack, not by calling WhatColorBack.
See also
Text.Color and Text.WhatColor.