2018 Kia Stinger GT long-term wrap-up | Putting the grand in grand tourer
It stings to see it go
by Joel Stocksdale| Trim | GT1 |
| Engine | Twin-turbo 3.3L V6 |
| Power | 365 HP / 376 LB-FT |
| Transmission | 8-Speed Automatic |
| 0-60 Time | 4.7 SEC |
| Top Speed | 167 MPH |
| Drivetrain | AWD |
| Engine Placement | Front |
| MPG | 19 CITY / 25 HWY |
| Warranty | 5 Year / 60,000 Miles |
| Base Price | $32,800 (Base 2.0T) |
| As Tested Price | $46,620 |
| View All Specs |
One of our latest long-term tester departures is our 2018 Kia Stinger GT, and it's one we're sad to see leave. Our really red example was optioned ideally for this group of enthusiasts in southeast Michigan with the twin-turbo 365-horsepower V6, a few extra comfort features with the GT1 package such as a sunroof and heated steering wheel, and of course, all-wheel drive.
And after over 18,000 miles of driving the Stinger, we were thoroughly impressed. The engine felt impressively powerful, delivering a big ol' shove to the back with every stab of the throttle. The handling was confident and quick. While it wasn't our exact long-term car, one of our editors took a Stinger to the track and had a good time with it. The styling never grew old, looking just as low, lean and aggressive as when it first arrived. And it was even comfortable and practical, just look at all the stuff we could stuff in it! Looking at everyone's final thoughts, the Stinger made a near-perfect daily driver.
There were a few snags during our custody, though. A few creaks and rattles appeared, including an issue with a door hinge that had to be fixed by the dealer. We also ended up with a warped brake rotor that needed changing. Something that couldn't be fixed was the Stinger's thirst. We averaged between 19 and 23 mpg in mixed driving plus the occasional long highway slog. That's actually slightly better than the EPA's combined estimate of 20 mpg, but it's still not stellar. The four-cylinder is the way to go if you'll be racking up a lot of miles.
Gripes aside, the Stinger GT was a welcome part of the Autoblog fleet. See what we all had to say about it in more detail below.
Editor-in-Chief, Greg Migliore: I really enjoyed our long-term Stinger. It had guts. It had plenty of power. It was fun to drive. It had emotion in a way only a few non-luxury sedans have. Frankly, it's this and the Dodge Charger as far as large sedans go for enthusiasts. I loved how the Stinger sounded; guttural and deep. It looked the part, too, though some of the accents weren't to my taste. The steering was excellent, the right balance of precision and pliability. It offered confidence to push the car in corners and the necessary feedback to do so with skill. I really liked the Stinger. It offered a great value, though the interior did start to show some aging after a year in our fleet. Otherwise, it was basically a riot, not to mention a milestone for Kia and its entry into this image-building segment.
Senior Editor, Green, John Snyder: I really enjoyed driving the Stinger. It was a comfortable car for throwing a few bags in and taking off for a weekend. It was happy to calmly but aggressively unleash the full potential of its twin-turbo V6 when a passing lane opened up, then lock back into a comfortably swift pace as the country highway unfurled before it. I guess that “GT” in our tester’s name really is apt.
I loved the way this thing felt when hauling down speed — that is, except for that week or two when a rotor had some sort of imperfection in it that made it thumpity-thump to a stop. That was fixed after a trip to the dealer. Otherwise, my favorite thing to do, was the old brake-and-corner exercise. So simple, yet so satisfying. The feeling of the brake pedal was smooth and forgiving, and easy to modulate. Then, I’d let up as I dialed in a little steering angle. The body would roll a bit to give a tactile sense of balance without getting unstable. It felt fantastic getting back on the power as the steering started to straighten back out. It’s not quite as slick and sharp as the shark-like and mechanically related Genesis G70, but not so doughy as, say, a Dodge Charger.
Lastly, I was surprised by the amount of attention this car garnered in parking lots. People would comment on its looks all the time, saying it looked badass, asking how fast it was, and almost always tacking on a “That’s a Kia?!” when the reveal came. There are still people out there who think of Kia as a discount brand lacking substance and excitement. The Stinger should help change that.
Associate Editor, Joel Stocksdale: I was unprepared for how much I was going to miss this car. I miss its huge power. I miss its aggressive design. I miss its easy-to-use infotainment system. I miss its quick, eager handling. This was a car I could always look forward to bringing home, and always made for a fun escape during weeks we were stuck with drab crossovers. The fuel economy is a bummer, but I did discover that with careful driving on the highway, high-20-mpg numbers are possible. It is hard to be easy on the throttle pedal, though. All-in-all, the Stinger is a fabulous daily, and I don't know when we'll have a long-termer that gets under my skin like this one did.
Assistant Editor, Zac Palmer: My opinion on the Stinger GT hardly budged throughout our time with the slick four-door sportback. It’s easy to pick nits on a car that you’ve practically lived in for a number of months, but I came away from the experience knowing that it’s a car I’m going to be recommending to folks for a long while.
Even though it’s the high-performance Stinger, Kia didn’t tune the suspension for a Nurburgring lap time. Instead, the chassis is friendly enough to soak up Michigan-sized potholes. Not every performance car needs to be a track car, and Kia appears to have understood that perfectly with the Stinger's suspension tuning.
Ultimately, the Stinger GT is a car I’d be happy to drive to work every day, so long as gas prices stay cheap. It has the right combination of elements for a daily driver, and it’s even versatile enough to be someone’s only car. Getting on the highway is always an event, and any curve I met was followed by a smile on my face. It’s no Civic Type R in the handling department, but you’ll keep up just fine with your friends on a back road.
If there was one thing I’d change about our particular tester, I would’ve opted for rear-wheel drive instead of all-wheel drive. The tail will misbehave ever so slightly given the right conditions, but a true rear-wheel-drive Stinger sounds like it would ramp up the fun by a considerable amount. Only get all-wheel drive if you absolutely need it. The Nokian winter tires we mounted to ours transformed it into an unstoppable force in winter, but I imagine the same tires on a rear-wheel drive Stinger will be entirely serviceable, so long as you don’t live in a place like Buffalo or the Yukon.
Video Production Manager, Eddie Sabatini: As time with our longterm Stinger passed so did my enthusiasm for it. I was excited to drive it at first but the quality didn't seem to hold up for me. The major touchpoints (infotainment buttons and shifter specifically) started to feel cheaper and the ride quality seemed to degrade. Perhaps that's more to do with how we drove the thing rather than Kia's dependability but my impressions changed and that can't be ignored.


VSCP Bootloader wizard will now walk you through the steps needed to update the firmware of your remote device
The node to update can be located on a VSCP bus connected to a server on a remote node or be connected to an interface on your local computer.
Please don't turn off or power off the remote node until the firmware update process is completed.
Select device to load firmware to. Enter the nickname or the full GUID for the device you want to work with.
A node that is newly loaded with a boot loader is usually at nickname 0xfe, in most other cases a node stay at the same id (use scan if unsure of which id your node is at).
Select the boot loader algorithm to use.
If you load boot loader info from the MDF the algorithm will be automatically set for you.
Select the firmware file to load the remote node with.
You can fetch firmware files which are specified by the MDF or you can load a firmware file from local storage. When loading a local file you must make certain that the file is intended for the remote node. If it isn't and you load it to the remote node it may stop working and if so need manual at location service.
Now It's time to do the actual loading of firmware into the remote node. This operation may take some time...


:: com :: sun :: star :: accessibility ::
|
| interface XAccessibleTextAttributes |
|
- Description
- Implement this interface to give access to the attributes of a text.
- Since
- OOo 2.0.4
|
| Methods' Details |
getDefaultAttributes
| sequence< ::com::sun::star::beans::PropertyValue > |
| getDefaultAttributes( |
[in] sequence< string > |
RequestedAttributes ); |
- Description
- Get the default attribute set for the text.
Returns a set of all default paragraph and default character
attributes that are associated for the text. To prevent the method
from returning possibly large sets of attributes that the caller
is not interested in the caller can provide a list of attributes
that he wants to be returned.
- Parameter RequestedAttributes
- This string sequence defines the set of attributes that the
caller is interested in. When there are requested attributes
that are not defined for the text then they are ignored.
When the sequence is empty all attributes are returned.
- Returns
- Returns the requested attributes of the text. Each attribute
is represented by a ::com::sun::star::beans::PropertyValue
object.
|
|
getRunAttributes
- Description
- Get the run attribute set for the specified position.
Returns a set of character attributes that are associated for
the character at the given index and are directly set or are set
via a character style. To prevent the method from returning all of
these attributes the caller can provide a list of attributes
that he wants to be returned.
- Parameter Index
- The index of the character for which to return its attributes.
The valid range is 0..length of text-1.
- Parameter RequestedAttributes
- This string sequence defines the set of attributes that the
caller is interested in. When there are requested attributes
that are not defined for the text then they are ignored.
When the sequence is empty all attributes are returned.
- Returns
- Returns the requested attributes of the specified character.
Each attribute is represented by a
::com::sun::star::beans::PropertyValue object.
- Throws
- ::com::sun::star::lang::IndexOutOfBoundsException
if the index is invalid
|
|
Top of Page
Copyright © 2013, The Apache Software Foundation, Licensed under the Apache License, Version 2.0. Apache, the Apache feather logo, Apache OpenOffice and OpenOffice.org are trademarks of The Apache Software Foundation. Other names may be trademarks of their respective owners.


teaching
web
linux
How to move your lecture online – in little time
I describe my solution for online lecturing amid the COVID-19 crisis using youtube livestreams and PINGO.
Although I kind of saw it coming after reading this excellent data analysis (on March 12, before things got really crazy), things did get hectic: The official decision of University of Liverpool to move all face-to-face classes online with immediate effect came on Saturday evening (March 14), with my class due on Monday, March 16. So what follows is not the well-thought out, technically sophisticated and educationally up-to-date mode of online teaching I (and you) might dream of, but it is what allowed me to deliver an (according to isolated feedback) effective online lecture with less than one day of prep time.
Where I started: Good old screencasts …
I have been recording screencasts of my lectures for COMP526 and posting them on youtube all term. The methodology for that (on Ubuntu) is basically still as described here, only with an update of my laptop (now an HP Elitebook x360) and Xournal++.
So a reasonable mic, screencasting software (SimpleScreenRecorder) and a website to post videos and lecture notes were already set up.
… and in-class formative assessments (aka clicker questions)
What I also came to like as an effective tool, is an in-class response system to quickly ask for opinions, prior knowledge, to recap definitions, and to test understanding. (I have been using PINGO for that.)
So my initial contingency plan was to record the lectures at home and upload them. But what was missing, was a way to keep the clicker questions; and – I know how these things go first hand – I was afraid that had there been no incentive for students to keep on track with watching the videos, it all too easily happens that some fall behind.
I was determined to not let that happen (quite so easily).
Going live!
My solution was to use youtube livestreams for the lectures; how to do that is explained below. That way, we (the students and myself that is) would be seeing the same screen (almost – more on that later) in real time, and I could simply continue with the clicker questions.
Youtube also has a “live chat” that offers a (limited) backchannel for students to ask questions (which quite a few did!), signal technical problems (none yet, luckily!), or give a quick “hands” on who is still following.
Quick how-to for youtube livestreams
(Here is youtube’s detailed manual on that; you want the “encoder streaming”.)
After signing into your youtube account, click on CREATE → Go Live (top right). There you pick “Stream” (the middle tab at the top). I did change the defaults, except for setting the stream latency to “ultra low”. In the top right, you can get a link that you can share with students even ahead of time.
Now, to stream your screen content (or part of it), you need an encoder.
I had good experiences with SimpleScreenRecorder, and indeed you can use it for this, too.
The screenshot below shows the settings I used; what goes into the “Save as” box
is shown in the youtube stream settings as “Stream URL” and “Stream key”;
the entry simply is <Stream URL>/<Stream key>
.
Selecting AAC as audio codec is vital! The mp3 encoder (selected by default) does not work with youtube, but the error messages don’t tell you that.
Then you click Continue and simple start your recording. The youtube stream settings site should now show your screen content (with a few seconds delay).
Clicking on “GO LIVE” (top right) starts the actual livestream.
On my (fairly new) laptop, downscaling the 4K display to 1080p and encoding as x264 did put considerable load on the machine, but I did not experience severe problems, so I did not try to play with the encoder settings at all. Your mileage may vary.
As for all youtube videos, you can configure the visibility of the stream as “unlisted”, then only students with the link can view the video, but no-one can find it through search; “public” videos appear in searches. If you choose “private”, people have to be signed in, and I did not want to force students to do that.
Phone for backchannel
During the lecture, I kept the youtube app on my Android open to see messages coming on the live chat. (This is also a great way to test if your stream works.)
Aftermath
For consistency, I split the recorded livestream into individual videos for each subsection, using the youtube studio editor, but also keep the livestream itself (as an unlisted video). (Pretend to trim the live stream, but then instead of “SAVE” click the three dots and “SAVE AS NEW”). The nicely cut videos are then linked to from my course website, e.g., here.
Cutting videos takes a few extra minutes that I did not need when locally recording in class, where I could easily start a new recording with one click. But it makes the recordings much easier to navigate and use later on.
First impressions
After using this setup for 3 hours of lectures, I am overall fairly happy. It does not cost much more preparation for me (although a bit extra time for cutting videos) and is clearly superior to only uploading videos. The livestream always had well below 10s of delay, which is totally fine for the interactive questions, and sound and video quality are excellent.
Compared to (my experiences with) video conferencing solutions Cisco WebEx, Skype, and Microsoft Teams, the stream is clearly superior in quality and stability, and the resulting recordings are essentially indistinguishable from the ones I recorded in face-to-face lectures.
A clear downside of my approach is the missing instant feedback from looking around the audience’s faces. (I usually have 30-50 students in class, so this was very doable.) I used to look around for this instant feedback very frequently – I’m lecturing facing the audience in the lecture rooms – so there is no way to replace this with the same number of PINGO questions.
Ideally, I’d like to have an additional (informal, anonymous) “quick-emotions” backchannel with buzzers for “I’m lost”, “I got it”, and “I need a break” (or so) that students could continuously push (as opposed to questions I have to trigger). So far, I have not found a service for that.


PERLEBCDIC
Section: Perl Programmers Reference Guide (1)Updated: 2009-04-11
Index Return to Main Contents
NAME
perlebcdic - Considerations for running Perl on EBCDIC platformsDESCRIPTION
An exploration of some of the issues facing Perl programmers on EBCDIC based computers. We do not cover localization, internationalization, or multi byte character set issues other than some discussion of UTF-8 and UTF-EBCDIC.Portions that are still incomplete are marked with XXX.
COMMON CHARACTER CODE SETS
ASCII
The American Standard Code for Information Interchange (ASCII or US-ASCII) is a set of integers running from 0 to 127 (decimal) that imply character interpretation by the display and other systems of computers. The range 0..127 can be covered by setting the bits in a 7-bit binary digit, hence the set is sometimes referred to as a ``7-bit ASCII''. ASCII was described by the American National Standards Institute document ANSI X3.4-1986. It was also described by ISO 646:1991 (with localization for currency symbols). The full ASCII set is given in the table below as the first 128 elements. Languages that can be written adequately with the characters in ASCII include English, Hawaiian, Indonesian, Swahili and some Native American languages.There are many character sets that extend the range of integers from 0..2**7-1 up to 2**8-1, or 8 bit bytes (octets if you prefer). One common one is the ISO 8859-1 character set.
ISO 8859
The ISO 8859-$n are a collection of character code sets from the International Organization for Standardization (ISO) each of which adds characters to the ASCII set that are typically found in European languages many of which are based on the Roman, or Latin, alphabet.Latin 1 (ISO 8859-1)
A particular 8-bit extension to ASCII that includes grave and acute accented Latin characters. Languages that can employ ISO 8859-1 include all the languages covered by ASCII as well as Afrikaans, Albanian, Basque, Catalan, Danish, Faroese, Finnish, Norwegian, Portuguese, Spanish, and Swedish. Dutch is covered albeit without the ij ligature. French is covered too but without the oe ligature. German can use ISO 8859-1 but must do so without German-style quotation marks. This set is based on Western European extensions to ASCII and is commonly encountered in world wide web work. In IBM character code set identification terminology ISO 8859-1 is also known as CCSID 819 (or sometimes 0819 or even 00819).EBCDIC
The Extended Binary Coded Decimal Interchange Code refers to a large collection of slightly different single and multi byte coded character sets that are different from ASCII or ISO 8859-1 and typically run on host computers. The EBCDIC encodings derive from 8 bit byte extensions of Hollerith punched card encodings. The layout on the cards was such that high bits were set for the upper and lower case alphabet characters [a-z] and [A-Z], but there were gaps within each Latin alphabet range.Some IBM EBCDIC character sets may be known by character code set identification numbers (CCSID numbers) or code page numbers. Leading zero digits in CCSID numbers within this document are insignificant. E.g. CCSID 0037 may be referred to as 37 in places.
Perl can be compiled on platforms that run any of three commonly used EBCDIC character sets, listed below.
The 13 variant characters
Among IBM EBCDIC character code sets there are 13 characters that are often mapped to different integer values. Those characters are known as the 13 ``variant'' characters and are:
\ [ ] { } ^ ~ ! # | $ @ `
When Perl is compiled for a platform, it looks at some of these characters to guess which EBCDIC character set the platform uses, and adapts itself accordingly to that platform. If the platform uses a character set that is not one of the three Perl knows about, Perl will either fail to compile, or mistakenly and silently choose one of the three. They are:
0037
Character code set ID 0037 is a mapping of the ASCII plus Latin-1 characters (i.e. ISO 8859-1) to an EBCDIC set. 0037 is used in North American English locales on the OS/400 operating system that runs on AS/400 computers. CCSID 37 differs from ISO 8859-1 in 237 places, in other words they agree on only 19 code point values.1047
Character code set ID 1047 is also a mapping of the ASCII plus Latin-1 characters (i.e. ISO 8859-1) to an EBCDIC set. 1047 is used under Unix System Services for OS/390 or z/OS, and OpenEdition for VM/ESA. CCSID 1047 differs from CCSID 0037 in eight places.POSIX-BC
The EBCDIC code page in use on Siemens' BS2000 system is distinct from 1047 and 0037. It is identified below as the POSIX-BC set.Unicode code points versus EBCDIC code points
In Unicode terminology a code point is the number assigned to a character: for example, in EBCDIC the character ``A'' is usually assigned the number 193. In Unicode the character ``A'' is assigned the number 65. This causes a problem with the semantics of the pack/unpack ``U'', which are supposed to pack Unicode code points to characters and back to numbers. The problem is: which code points to use for code points less than 256? (for 256 and over there's no problem: Unicode code points are used) In EBCDIC, for the low 256 the EBCDIC code points are used. This means that the equivalences
pack("U", ord($character)) eq $character unpack("U", $character) == ord $character
will hold. (If Unicode code points were applied consistently over all the possible code points, pack(``U'',ord(``A'')) would in EBCDIC equal A with acute or chr(101), and unpack(``U'', ``A'') would equal 65, or non-breaking space, not 193, or ord ``A''.)
Remaining Perl Unicode problems in EBCDIC
- *
- Many of the remaining problems seem to be related to case-insensitive matching
- *
- The extensions Unicode::Collate and Unicode::Normalized are not supported under EBCDIC, likewise for the encoding pragma.
Unicode and UTF
UTF stands for "Unicode Transformation Format". UTF-8 is an encoding of Unicode into a sequence of 8-bit byte chunks, based on ASCII and Latin-1. The length of a sequence required to represent a Unicode code point depends on the ordinal number of that code point, with larger numbers requiring more bytes. UTF-EBCDIC is like UTF-8, but based on EBCDIC.You may see the term "invariant" character or code point. This simply means that the character has the same numeric value when encoded as when not. (Note that this is a very different concept from ``The 13 variant characters'' mentioned above.) For example, the ordinal value of 'A' is 193 in most EBCDIC code pages, and also is 193 when encoded in UTF-EBCDIC. All other code points occupy at least two bytes when encoded. In UTF-8, the code points corresponding to the lowest 128 ordinal numbers (0 - 127: the ASCII characters) are invariant. In UTF-EBCDIC, there are 160 invariant characters. (If you care, the EBCDIC invariants are those characters which have ASCII equivalents, plus those that correspond to the C1 controls (80..9f on ASCII platforms).)
A string encoded in UTF-EBCDIC may be longer (but never shorter) than one encoded in UTF-8.
Using Encode
Starting from Perl 5.8 you can use the standard new module Encode to translate from EBCDIC to Latin-1 code points. Encode knows about more EBCDIC character sets than Perl can currently be compiled to run on.
use Encode 'from_to'; my %ebcdic = ( 176 => 'cp37', 95 => 'cp1047', 106 => 'posix-bc' ); # $a is in EBCDIC code points from_to($a, $ebcdic{ord '^'}, 'latin1'); # $a is ISO 8859-1 code points
and from Latin-1 code points to EBCDIC code points
use Encode 'from_to'; my %ebcdic = ( 176 => 'cp37', 95 => 'cp1047', 106 => 'posix-bc' ); # $a is ISO 8859-1 code points from_to($a, 'latin1', $ebcdic{ord '^'}); # $a is in EBCDIC code points
For doing I/O it is suggested that you use the autotranslating features of PerlIO, see perluniintro.
Since version 5.8 Perl uses the new PerlIO I/O library. This enables you to use different encodings per IO channel. For example you may use
use Encode; open($f, ">:encoding(ascii)", "test.ascii"); print $f "Hello World!\n"; open($f, ">:encoding(cp37)", "test.ebcdic"); print $f "Hello World!\n"; open($f, ">:encoding(latin1)", "test.latin1"); print $f "Hello World!\n"; open($f, ">:encoding(utf8)", "test.utf8"); print $f "Hello World!\n";
to get four files containing ``Hello World!\n'' in ASCII, CP 37 EBCDIC, ISO 8859-1 (Latin-1) (in this example identical to ASCII since only ASCII characters were printed), and UTF-EBCDIC (in this example identical to normal EBCDIC since only characters that don't differ between EBCDIC and UTF-EBCDIC were printed). See the documentation of Encode::PerlIO for details.
As the PerlIO layer uses raw IO (bytes) internally, all this totally ignores things like the type of your filesystem (ASCII or EBCDIC).
SINGLE OCTET TABLES
The following tables list the ASCII and Latin 1 ordered sets including the subsets: C0 controls (0..31), ASCII graphics (32..7e), delete (7f), C1 controls (80..9f), and Latin-1 (a.k.a. ISO 8859-1) (a0..ff). In the table non-printing control character names as well as the Latin 1 extensions to ASCII have been labelled with character names roughly corresponding to The Unicode Standard, Version 3.0 albeit with substitutions such as s/LATIN// and s/VULGAR// in all cases, s/CAPITAL LETTER// in some cases, and s/SMALL LETTER ([A-Z])/\l$1/ in some other cases (the "charnames" pragma names unfortunately do not list explicit names for the C0 or C1 control characters). The ``names'' of the C1 control set (128..159 in ISO 8859-1) listed here are somewhat arbitrary. The differences between the 0037 and 1047 sets are flagged with ***. The differences between the 1047 and POSIX-BC sets are flagged with ###. All ord() numbers listed are decimal. If you would rather see this table listing octal values then run the table (that is, the pod version of this document since this recipe may not work with a pod2_other_format translation) through:
perl -ne 'if(/(.{33})(\d+)\s+(\d+)\s+(\d+)\s+(\d+)/)' \ -e '{printf("%s%-9o%-9o%-9o%o\n",$1,$2,$3,$4,$5)}' perlebcdic.pod
If you want to retain the UTF-x code points then in script form you might want to write:
open(FH,"<perlebcdic.pod") or die "Could not open perlebcdic.pod: $!"; while (<FH>) { if (/(.{33})(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\.?(\d*)\s+(\d+)\.?(\d*)/) { if ($7 ne '' && $9 ne '') { printf("%s%-9o%-9o%-9o%-9o%-3o.%-5o%-3o.%o\n",$1,$2,$3,$4,$5,$6,$7,$8,$9); } elsif ($7 ne '') { printf("%s%-9o%-9o%-9o%-9o%-3o.%-5o%o\n",$1,$2,$3,$4,$5,$6,$7,$8); } else { printf("%s%-9o%-9o%-9o%-9o%-9o%o\n",$1,$2,$3,$4,$5,$6,$8); } } }
If you would rather see this table listing hexadecimal values then run the table through:
perl -ne 'if(/(.{33})(\d+)\s+(\d+)\s+(\d+)\s+(\d+)/)' \ -e '{printf("%s%-9X%-9X%-9X%X\n",$1,$2,$3,$4,$5)}' perlebcdic.pod
Or, in order to retain the UTF-x code points in hexadecimal:
open(FH,"<perlebcdic.pod") or die "Could not open perlebcdic.pod: $!"; while (<FH>) { if (/(.{33})(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\.?(\d*)\s+(\d+)\.?(\d*)/) { if ($7 ne '' && $9 ne '') { printf("%s%-9X%-9X%-9X%-9X%-2X.%-6X%-2X.%X\n",$1,$2,$3,$4,$5,$6,$7,$8,$9); } elsif ($7 ne '') { printf("%s%-9X%-9X%-9X%-9X%-2X.%-6X%X\n",$1,$2,$3,$4,$5,$6,$7,$8); } else { printf("%s%-9X%-9X%-9X%-9X%-9X%X\n",$1,$2,$3,$4,$5,$6,$8); } } } incomp- incomp- 8859-1 lete lete chr 0819 0037 1047 POSIX-BC UTF-8 UTF-EBCDIC ------------------------------------------------------------------------------------ <NULL> 0 0 0 0 0 0 <START OF HEADING> 1 1 1 1 1 1 <START OF TEXT> 2 2 2 2 2 2 <END OF TEXT> 3 3 3 3 3 3 <END OF TRANSMISSION> 4 55 55 55 4 55 <ENQUIRY> 5 45 45 45 5 45 <ACKNOWLEDGE> 6 46 46 46 6 46 <BELL> 7 47 47 47 7 47 <BACKSPACE> 8 22 22 22 8 22 <HORIZONTAL TABULATION> 9 5 5 5 9 5 <LINE FEED> 10 37 21 21 10 21 *** <VERTICAL TABULATION> 11 11 11 11 11 11 <FORM FEED> 12 12 12 12 12 12 <CARRIAGE RETURN> 13 13 13 13 13 13 <SHIFT OUT> 14 14 14 14 14 14 <SHIFT IN> 15 15 15 15 15 15 <DATA LINK ESCAPE> 16 16 16 16 16 16 <DEVICE CONTROL ONE> 17 17 17 17 17 17 <DEVICE CONTROL TWO> 18 18 18 18 18 18 <DEVICE CONTROL THREE> 19 19 19 19 19 19 <DEVICE CONTROL FOUR> 20 60 60 60 20 60 <NEGATIVE ACKNOWLEDGE> 21 61 61 61 21 61 <SYNCHRONOUS IDLE> 22 50 50 50 22 50 <END OF TRANSMISSION BLOCK> 23 38 38 38 23 38 <CANCEL> 24 24 24 24 24 24 <END OF MEDIUM> 25 25 25 25 25 25 <SUBSTITUTE> 26 63 63 63 26 63 <ESCAPE> 27 39 39 39 27 39 <FILE SEPARATOR> 28 28 28 28 28 28 <GROUP SEPARATOR> 29 29 29 29 29 29 <RECORD SEPARATOR> 30 30 30 30 30 30 <UNIT SEPARATOR> 31 31 31 31 31 31 <SPACE> 32 64 64 64 32 64 ! 33 90 90 90 33 90 " 34 127 127 127 34 127 # 35 123 123 123 35 123 $ 36 91 91 91 36 91 % 37 108 108 108 37 108 & 38 80 80 80 38 80 ' 39 125 125 125 39 125 ( 40 77 77 77 40 77 ) 41 93 93 93 41 93 * 42 92 92 92 42 92 + 43 78 78 78 43 78 , 44 107 107 107 44 107 - 45 96 96 96 45 96 . 46 75 75 75 46 75 / 47 97 97 97 47 97 0 48 240 240 240 48 240 1 49 241 241 241 49 241 2 50 242 242 242 50 242 3 51 243 243 243 51 243 4 52 244 244 244 52 244 5 53 245 245 245 53 245 6 54 246 246 246 54 246 7 55 247 247 247 55 247 8 56 248 248 248 56 248 9 57 249 249 249 57 249 : 58 122 122 122 58 122 ; 59 94 94 94 59 94 < 60 76 76 76 60 76 = 61 126 126 126 61 126 > 62 110 110 110 62 110 ? 63 111 111 111 63 111 @ 64 124 124 124 64 124 A 65 193 193 193 65 193 B 66 194 194 194 66 194 C 67 195 195 195 67 195 D 68 196 196 196 68 196 E 69 197 197 197 69 197 F 70 198 198 198 70 198 G 71 199 199 199 71 199 H 72 200 200 200 72 200 I 73 201 201 201 73 201 J 74 209 209 209 74 209 K 75 210 210 210 75 210 L 76 211 211 211 76 211 M 77 212 212 212 77 212 N 78 213 213 213 78 213 O 79 214 214 214 79 214 P 80 215 215 215 80 215 Q 81 216 216 216 81 216 R 82 217 217 217 82 217 S 83 226 226 226 83 226 T 84 227 227 227 84 227 U 85 228 228 228 85 228 V 86 229 229 229 86 229 W 87 230 230 230 87 230 X 88 231 231 231 88 231 Y 89 232 232 232 89 232 Z 90 233 233 233 90 233 [ 91 186 173 187 91 173 *** ### \ 92 224 224 188 92 224 ### ] 93 187 189 189 93 189 *** ^ 94 176 95 106 94 95 *** ### _ 95 109 109 109 95 109 ` 96 121 121 74 96 121 ### a 97 129 129 129 97 129 b 98 130 130 130 98 130 c 99 131 131 131 99 131 d 100 132 132 132 100 132 e 101 133 133 133 101 133 f 102 134 134 134 102 134 g 103 135 135 135 103 135 h 104 136 136 136 104 136 i 105 137 137 137 105 137 j 106 145 145 145 106 145 k 107 146 146 146 107 146 l 108 147 147 147 108 147 m 109 148 148 148 109 148 n 110 149 149 149 110 149 o 111 150 150 150 111 150 p 112 151 151 151 112 151 q 113 152 152 152 113 152 r 114 153 153 153 114 153 s 115 162 162 162 115 162 t 116 163 163 163 116 163 u 117 164 164 164 117 164 v 118 165 165 165 118 165 w 119 166 166 166 119 166 x 120 167 167 167 120 167 y 121 168 168 168 121 168 z 122 169 169 169 122 169 { 123 192 192 251 123 192 ### | 124 79 79 79 124 79 } 125 208 208 253 125 208 ### ~ 126 161 161 255 126 161 ### <DELETE> 127 7 7 7 127 7 <C1 0> 128 32 32 32 194.128 32 <C1 1> 129 33 33 33 194.129 33 <C1 2> 130 34 34 34 194.130 34 <C1 3> 131 35 35 35 194.131 35 <C1 4> 132 36 36 36 194.132 36 <C1 5> 133 21 37 37 194.133 37 *** <C1 6> 134 6 6 6 194.134 6 <C1 7> 135 23 23 23 194.135 23 <C1 8> 136 40 40 40 194.136 40 <C1 9> 137 41 41 41 194.137 41 <C1 10> 138 42 42 42 194.138 42 <C1 11> 139 43 43 43 194.139 43 <C1 12> 140 44 44 44 194.140 44 <C1 13> 141 9 9 9 194.141 9 <C1 14> 142 10 10 10 194.142 10 <C1 15> 143 27 27 27 194.143 27 <C1 16> 144 48 48 48 194.144 48 <C1 17> 145 49 49 49 194.145 49 <C1 18> 146 26 26 26 194.146 26 <C1 19> 147 51 51 51 194.147 51 <C1 20> 148 52 52 52 194.148 52 <C1 21> 149 53 53 53 194.149 53 <C1 22> 150 54 54 54 194.150 54 <C1 23> 151 8 8 8 194.151 8 <C1 24> 152 56 56 56 194.152 56 <C1 25> 153 57 57 57 194.153 57 <C1 26> 154 58 58 58 194.154 58 <C1 27> 155 59 59 59 194.155 59 <C1 28> 156 4 4 4 194.156 4 <C1 29> 157 20 20 20 194.157 20 <C1 30> 158 62 62 62 194.158 62 <C1 31> 159 255 255 95 194.159 255 ### <NON-BREAKING SPACE> 160 65 65 65 194.160 128.65 <INVERTED EXCLAMATION MARK> 161 170 170 170 194.161 128.66 <CENT SIGN> 162 74 74 176 194.162 128.67 ### <POUND SIGN> 163 177 177 177 194.163 128.68 <CURRENCY SIGN> 164 159 159 159 194.164 128.69 <YEN SIGN> 165 178 178 178 194.165 128.70 <BROKEN BAR> 166 106 106 208 194.166 128.71 ### <SECTION SIGN> 167 181 181 181 194.167 128.72 <DIAERESIS> 168 189 187 121 194.168 128.73 *** ### <COPYRIGHT SIGN> 169 180 180 180 194.169 128.74 <FEMININE ORDINAL INDICATOR> 170 154 154 154 194.170 128.81 <LEFT POINTING GUILLEMET> 171 138 138 138 194.171 128.82 <NOT SIGN> 172 95 176 186 194.172 128.83 *** ### <SOFT HYPHEN> 173 202 202 202 194.173 128.84 <REGISTERED TRADE MARK SIGN> 174 175 175 175 194.174 128.85 <MACRON> 175 188 188 161 194.175 128.86 ### <DEGREE SIGN> 176 144 144 144 194.176 128.87 <PLUS-OR-MINUS SIGN> 177 143 143 143 194.177 128.88 <SUPERSCRIPT TWO> 178 234 234 234 194.178 128.89 <SUPERSCRIPT THREE> 179 250 250 250 194.179 128.98 <ACUTE ACCENT> 180 190 190 190 194.180 128.99 <MICRO SIGN> 181 160 160 160 194.181 128.100 <PARAGRAPH SIGN> 182 182 182 182 194.182 128.101 <MIDDLE DOT> 183 179 179 179 194.183 128.102 <CEDILLA> 184 157 157 157 194.184 128.103 <SUPERSCRIPT ONE> 185 218 218 218 194.185 128.104 <MASC.  For example:
$is_ascii = "A" eq chr(65); $is_ebcdic = "A" eq chr(193);
Also, ``\t'' is a "HORIZONTAL TABULATION" character so that:
$is_ascii = ord("\t") == 9; $is_ebcdic = ord("\t") == 5;
To distinguish EBCDIC code pages try looking at one or more of the characters that differ between them. For example:
$is_ebcdic_37 = "\n" eq chr(37); $is_ebcdic_1047 = "\n" eq chr(21);
Or better still choose a character that is uniquely encoded in any of the code sets, e.g.:
$is_ascii = ord('[') == 91; $is_ebcdic_37 = ord('[') == 186; $is_ebcdic_1047 = ord('[') == 173; $is_ebcdic_POSIX_BC = ord('[') == 187;
However, it would be unwise to write tests such as:
$is_ascii = "\r" ne chr(13); # WRONG $is_ascii = "\n" ne chr(10); # ILL ADVISED
Obviously the first of these will fail to distinguish most ASCII platforms from either a CCSID 0037, a 1047, or a POSIX-BC EBCDIC platform since ``\r'' eq chr(13) under all of those coded character sets. But note too that because ``\n'' is chr(13) and ``\r'' is chr(10) on the MacIntosh (which is an ASCII platform) the second $is_ascii test will lead to trouble there.
To determine whether or not perl was built under an EBCDIC code page you can use the Config module like so:
use Config; $is_ebcdic = $Config{'ebcdic'} eq 'define';
CONVERSIONS
tr///
In order to convert a string of characters from one character set to another a simple list of numbers, such as in the right columns in the above table, along with perl's tr/// operator is all that is needed. The data in the table are in ASCII order hence the EBCDIC columns provide easy to use ASCII to EBCDIC operations that are also easily reversed.For example, to convert ASCII to code page 037 take the output of the second column from the output of recipe 0 (modified to add \\ characters) and use it in tr/// like so:
$cp_037 = '\000\001\002\003\234\011\206\177\227\215\216\013\014\015\016\017' . '\020\021\022\023\235\205\010\207\030\031\222\217\034\035\036\037' . '\200\201\202\203\204\012\027\033\210\211\212\213\214\005\006\007' . '\220\221\026\223\224\225\226\004\230\231\232\233\024\025\236\032' . '\040\240\342\344\340\341\343\345\347\361\242\056\074\050\053\174' . '\046\351\352\353\350\355\356\357\354\337\041\044\052\051\073\254' . '\055\057\302\304\300\301\303\305\307\321\246\054\045\137\076\077' . '\370\311\312\313\310\315\316\317\314\140\072\043\100\047\075\042' . '\330\141\142\143\144\145\146\147\150\151\253\273\360\375\376\261' . '\260\152\153\154\155\156\157\160\161\162\252\272\346\270\306\244' . '\265\176\163\164\165\166\167\170\171\172\241\277\320\335\336\256' . '\136\243\245\267\251\247\266\274\275\276\133\135\257\250\264\327' . '\173\101\102\103\104\105\106\107\110\111\255\364\366\362\363\365' . '\175\112\113\114\115\116\117\120\121\122\271\373\374\371\372\377' . '\134\367\123\124\125\126\127\130\131\132\262\324\326\322\323\325' . '\060\061\062\063\064\065\066\067\070\071\263\333\334\331\332\237' ; my $ebcdic_string = $ascii_string; eval '$ebcdic_string =~ tr/' . $cp_037 . '/\000-\377/';
To convert from EBCDIC 037 to ASCII just reverse the order of the tr/// arguments like so:
my $ascii_string = $ebcdic_string; eval '$ascii_string =~ tr/\000-\377/' . $cp_037 . '/';
Similarly one could take the output of the third column from recipe 0 to obtain a $cp_1047 table. The fourth column of the output from recipe 0 could provide a $cp_posix_bc table suitable for transcoding as well.
iconv
XPG operability often implies the presence of an iconv utility available from the shell or from the C library. Consult your system's documentation for information on iconv.On OS/390 or z/OS see the iconv(1) manpage. One way to invoke the iconv shell utility from within perl would be to:
# OS/390 or z/OS example $ascii_data = `echo '$ebcdic_data'| iconv -f IBM-1047 -t ISO8859-1`
or the inverse map:
# OS/390 or z/OS example $ebcdic_data = `echo '$ascii_data'| iconv -f ISO8859-1 -t IBM-1047`
For other perl based conversion options see the Convert::* modules on CPAN.
C RTL
The OS/390 and z/OS C run time libraries provide _atoe() and _etoa() functions.OPERATOR DIFFERENCES
The ".." range operator treats certain character ranges with care on EBCDIC platforms. For example the following array will have twenty six elements on either an EBCDIC platform or an ASCII platform:
@alphabet = ('A'..'Z'); # $#alphabet == 25
The bitwise operators such as & ^ | may return different results when operating on string or character data in a perl program running on an EBCDIC platform than when run on an ASCII platform. Here is an example adapted from the one in perlop:
# EBCDIC-based examples print "j p \n" ^ " a h"; # prints "JAPH\n" print "JA" | " ph\n"; # prints "japh\n" print "JAPH\nJunk" & "\277\277\277\277\277"; # prints "japh\n"; print 'p N$' ^ " E<H\n"; # prints "Perl\n";
An interesting property of the 32 C0 control characters in the ASCII table is that they can ``literally'' be constructed as control characters in perl, e.g. "(chr(0) eq "\c@")" "(chr(1) eq "\cA")", and so on. Perl on EBCDIC platforms has been ported to take ``\c@'' to chr(0) and ``\cA'' to chr(1) as well, but the thirty three characters that result depend on which code page you are using. The table below uses the character names from the previous table but with substitutions such as s/START OF/S.O./; s/END OF /E.O./; s/TRANSMISSION/TRANS./; s/TABULATION/TAB./; s/VERTICAL/VERT./; s/HORIZONTAL/HORIZ./; s/DEVICE CONTROL/D.C./; s/SEPARATOR/SEP./; s/NEGATIVE ACKNOWLEDGE/NEG. ACK./;. The POSIX-BC and 1047 sets are identical throughout this range and differ from the 0037 set at only one spot (21 decimal). Note that the "LINE FEED" character may be generated by ``\cJ'' on ASCII platforms but by ``\cU'' on 1047 or POSIX-BC platforms and cannot be generated as a "\c.letter." control character on 0037 platforms. Note also that ``\c\\'' maps to two characters not one.
chr ord 8859-1 0037 1047 && POSIX-BC ------------------------------------------------------------------------ "\c?" 127 <DELETE> " " ***>< "\c@" 0 <NULL> <NULL> <NULL> ***>< "\cA" 1 <S.O. HEADING> <S.O. HEADING> <S.O. HEADING> "\cB" 2 <S.O. TEXT> <S.O. TEXT> <S.O. TEXT> "\cC" 3 <E.O. TEXT> <E.O. TEXT> <E.O. TEXT> "\cD" 4 <E.O. TRANS.> <C1 28> <C1 28> "\cE" 5 <ENQUIRY> <HORIZ. TAB.> <HORIZ. TAB.> "\cF" 6 <ACKNOWLEDGE> <C1 6> <C1 6> "\cG" 7 <BELL> <DELETE> <DELETE> "\cH" 8 <BACKSPACE> <C1 23> <C1 23> "\cI" 9 <HORIZ. TAB.> <C1 13> <C1 13> "\cJ" 10 <LINE FEED> <C1 14> <C1 14> "\cK" 11 <VERT. TAB.> <VERT. TAB.> <VERT. TAB.> "\cL" 12 <FORM FEED> <FORM FEED> <FORM FEED> "\cM" 13 <CARRIAGE RETURN> <CARRIAGE RETURN> <CARRIAGE RETURN> "\cN" 14 <SHIFT OUT> <SHIFT OUT> <SHIFT OUT> "\cO" 15 <SHIFT IN> <SHIFT IN> <SHIFT IN> "\cP" 16 <DATA LINK ESCAPE> <DATA LINK ESCAPE> <DATA LINK ESCAPE> "\cQ" 17 <D.C. ONE> <D.C. ONE> <D.C. ONE> "\cR" 18 <D.C. TWO> <D.C. TWO> <D.C. TWO> "\cS" 19 <D.C. THREE> <D.C. THREE> <D.C. THREE> "\cT" 20 <D.C. FOUR> <C1 29> <C1 29> "\cU" 21 <NEG. ACK.> <C1 5> <LINE FEED> *** "\cV" 22 <SYNCHRONOUS IDLE> <BACKSPACE> <BACKSPACE> "\cW" 23 <E.O. TRANS. BLOCK> <C1 7> <C1 7> "\cX" 24 <CANCEL> <CANCEL> <CANCEL> "\cY" 25 <E.O. MEDIUM> <E.O. MEDIUM> <E.O. MEDIUM> "\cZ" 26 <SUBSTITUTE> <C1 18> <C1 18> "\c[" 27 <ESCAPE> <C1 15> <C1 15> "\c\\" 28 <FILE SEP.>\ <FILE SEP.>\ <FILE SEP.>\ "\c]" 29 <GROUP SEP.> <GROUP SEP.> <GROUP SEP.> "\c^" 30 <RECORD SEP.> <RECORD SEP.> <RECORD SEP.> ***>< "\c_" 31 <UNIT SEP.> <UNIT SEP.> <UNIT SEP.> ***><
FUNCTION DIFFERENCES
- chr()
-
chr() must be given an EBCDIC code number argument to yield a desired
character return value on an EBCDIC platform. For example:
$CAPITAL_LETTER_A = chr(193);
- ord()
-
ord() will return EBCDIC code number values on an EBCDIC platform.
For example:
$the_number_193 = ord("A");
- pack()
-
The c and C templates for pack() are dependent upon character set
encoding. Examples of usage on EBCDIC include:
$foo = pack("CCCC",193,194,195,196); # $foo eq "ABCD" $foo = pack("C4",193,194,195,196); # same thing $foo = pack("ccxxcc",193,194,195,196); # $foo eq "AB\0\0CD"
- print()
-
One must be careful with scalars and strings that are passed to
print that contain ASCII encodings. One common place
for this to occur is in the output of the MIME type header for
CGI script writing. For example, many perl programming guides
recommend something similar to:
print "Content-type:\ttext/html\015\012\015\012"; # this may be wrong on EBCDIC
Under the IBM OS/390 USS Web Server or WebSphere on z/OS for example you should instead write that as:
print "Content-type:\ttext/html\r\n\r\n"; # OK for DGW et alia
That is because the translation from EBCDIC to ASCII is done by the web server in this case (such code will not be appropriate for the Macintosh however). Consult your web server's documentation for further details.
- printf()
-
The formats that can convert characters to numbers and vice versa
will be different from their ASCII counterparts when executed
on an EBCDIC platform. Examples include:
printf("%c%c%c",193,194,195); # prints ABC
- sort()
- EBCDIC sort results may differ from ASCII sort results especially for mixed case strings. This is discussed in more detail below.
- sprintf()
-
See the discussion of printf() above. An example of the use
of sprintf would be:
$CAPITAL_LETTER_A = sprintf("%c",193);
- unpack()
- See the discussion of pack() above.
REGULAR EXPRESSION DIFFERENCES
As of perl 5.005_03 the letter range regular expression such as [A-Z] and [a-z] have been especially coded to not pick up gap characters. For example, characters such as o "o WITH CIRCUMFLEX" that lie between I and J would not be matched by the regular expression range "/[H-K]/". This works in the other direction, too, if either of the range end points is explicitly numeric: "[\x89-\x91]" will match "\x8e", even though "\x89" is "i" and "\x91 " is "j", and "\x8e" is a gap character from the alphabetic viewpoint.If you do want to match the alphabet gap characters in a single octet regular expression try matching the hex or octal code such as "/\313/" on EBCDIC or "/\364/" on ASCII platforms to have your regular expression match "o WITH CIRCUMFLEX".
Another construct to be wary of is the inappropriate use of hex or octal constants in regular expressions. Consider the following set of subs:
sub is_c0 { my $char = substr(shift,0,1); $char =~ /[\000-\037]/; } sub is_print_ascii { my $char = substr(shift,0,1); $char =~ /[\040-\176]/; } sub is_delete { my $char = substr(shift,0,1); $char eq "\177"; } sub is_c1 { my $char = substr(shift,0,1); $char =~ /[\200-\237]/; } sub is_latin_1 { my $char = substr(shift,0,1); $char =~ /[\240-\377]/; }
The above would be adequate if the concern was only with numeric code points. However, the concern may be with characters rather than code points and on an EBCDIC platform it may be desirable for constructs such as "if (is_print_ascii("A")) {print "A is a printable character\n";}" to print out the expected message. One way to represent the above collection of character classification subs that is capable of working across the four coded character sets discussed in this document is as follows:
sub Is_c0 { my $char = substr(shift,0,1); if (ord('^')==94) { # ascii return $char =~ /[\000-\037]/; } if (ord('^')==176) { # 37 return $char =~ /[\000-\003\067\055-\057\026\005\045\013-\023\074\075\062\046\030\031\077\047\034-\037]/; } if (ord('^')==95 || ord('^')==106) { # 1047 || posix-bc return $char =~ /[\000-\003\067\055-\057\026\005\025\013-\023\074\075\062\046\030\031\077\047\034-\037]/; } } sub Is_print_ascii { my $char = substr(shift,0,1); $char =~ /[ !"\#\$%&'()*+,\-.\/0-9:;<=>?\@A-Z[\\\]^_`a-z{|}~]/; } sub Is_delete { my $char = substr(shift,0,1); if (ord('^')==94) { # ascii return $char eq "\177"; } else { # ebcdic return $char eq "\007"; } } sub Is_c1 { my $char = substr(shift,0,1); if (ord('^')==94) { # ascii return $char =~ /[\200-\237]/; } if (ord('^')==176) { # 37 return $char =~ /[\040-\044\025\006\027\050-\054\011\012\033\060\061\032\063-\066\010\070-\073\040\024\076\377]/; } if (ord('^')==95) { # 1047 return $char =~ /[\040-\045\006\027\050-\054\011\012\033\060\061\032\063-\066\010\070-\073\040\024\076\377]/; } if (ord('^')==106) { # posix-bc return $char =~ /[\040-\045\006\027\050-\054\011\012\033\060\061\032\063-\066\010\070-\073\040\024\076\137]/; } } sub Is_latin_1 { my $char = substr(shift,0,1); if (ord('^')==94) { # ascii return $char =~ /[\240-\377]/; } if (ord('^')==176) { # 37 return $char =~ /[\101\252\112\261\237\262\152\265\275\264\232\212\137\312\257\274\220\217\352\372\276\240\266\263\235\332\233\213\267\270\271\253\144\145\142\146\143\147\236\150\164\161-\163\170\165-\167\254\151\355\356\353\357\354\277\200\375\376\373\374\255\256\131\104\105\102\106\103\107\234\110\124\121-\123\130\125-\127\214\111\315\316\313\317\314\341\160\335\336\333\334\215\216\337]/; } if (ord('^')==95) { # 1047 return $char =~ /[\101\252\112\261\237\262\152\265\273\264\232\212\260\312\257\274\220\217\352\372\276\240\266\263\235\332\233\213\267\270\271\253\144\145\142\146\143\147\236\150\164\161-\163\170\165-\167\254\151\355\356\353\357\354\277\200\375\376\373\374\272\256\131\104\105\102\106\103\107\234\110\124\121-\123\130\125-\127\214\111\315\316\313\317\314\341\160\335\336\333\334\215\216\337]/; } if (ord('^')==106) { # posix-bc return $char =~ /[\101\252\260\261\237\262\320\265\171\264\232\212\272\312\257\241\220\217\352\372\276\240\266\263\235\332\233\213\267\270\271\253\144\145\142\146\143\147\236\150\164\161-\163\170\165-\167\254\151\355\356\353\357\354\277\200\340\376\335\374\255\256\131\104\105\102\106\103\107\234\110\124\121-\123\130\125-\127\214\111\315\316\313\317\314\341\160\300\336\333\334\215\216\337]/; } }
Note however that only the "Is_ascii_print()" sub is really independent of coded character set. Another way to write "Is_latin_1()" would be to use the characters in the range explicitly:
sub Is_latin_1 { my $char = substr(shift,0,1); $char =~ /[A AXAXAXAXAXAXAXAXAXAXAXAXAAXAXAXAXAXAXAXAXAXAXAXAXAXAXAXAXAXAXA~XA~XA~XA~XA~XA~XA~XA~XA~XA~XA~XA~XA~XA~XA~XA~XA~XA~XA~XA~XA~XA~XA~XA~XA~XA~XA~XA~XA~XA~XA~XA~XA~ A~XA~XA~XA~XA~XA~XA~XA~XA~XA~XA~XA~XA~A~XA~XA~XA~XA~XA~XA~XA~XA~XA~XA~XA~XA~XA~XA~XA~XA~XA~X]/; }
Although that form may run into trouble in network transit (due to the presence of 8 bit characters) or on non ISO-Latin character sets.
SOCKETS
Most socket programming assumes ASCII character encodings in network byte order. Exceptions can include CGI script writing under a host web server where the server may take care of translation for you. Most host web servers convert EBCDIC data to ISO-8859-1 or Unicode on output.SORTING
One big difference between ASCII based character sets and EBCDIC ones are the relative positions of upper and lower case letters and the letters compared to the digits. If sorted on an ASCII based platform the two letter abbreviation for a physician comes before the two letter for drive, that is:
@sorted = sort(qw(Dr. dr.)); # @sorted holds ('Dr.','dr.') on ASCII, # but ('dr.','Dr.') on EBCDIC
The property of lower case before uppercase letters in EBCDIC is even carried to the Latin 1 EBCDIC pages such as 0037 and 1047. An example would be that E. "E WITH DIAERESIS" (203) comes before e. "e WITH DIAERESIS" (235) on an ASCII platform, but the latter (83) comes before the former (115) on an EBCDIC platform. (Astute readers will note that the upper case version of beta "SMALL LETTER SHARP S" is simply ``SS'' and that the upper case version of y. "y WITH DIAERESIS" is not in the 0..255 range but it is at U+x0178 in Unicode, or "\x{178}" in a Unicode enabled Perl).
The sort order will cause differences between results obtained on ASCII platforms versus EBCDIC platforms. What follows are some suggestions on how to deal with these differences.
Ignore ASCII vs. EBCDIC sort differences.
This is the least computationally expensive strategy. It may require some user education.MONO CASE then sort data.
In order to minimize the expense of mono casing mixed test try to "tr///" towards the character set case most employed within the data. If the data are primarily UPPERCASE non Latin 1 then apply tr/[a-z]/[A-Z]/ then sort(). If the data are primarily lowercase non Latin 1 then apply tr/[A-Z]/[a-z]/ before sorting. If the data are primarily UPPERCASE and include Latin-1 characters then apply:
tr/[a-z]/[A-Z]/; tr/[A~ A~XA~XA~XA~XA~XA~XA~XA~XA~XA~XA~XA~XA~A~XA~XA~XA~XA~XA~XA~XA~XA~XA~XA~XA~XA~XA~XA~XA~X]/[A~XA~XA~XA~XA~XA~XA~XA~XA~XA~XA~XA~XA~XA~XA~XA~XA~XA~XA~XA~XA~XA~XA~XA~XA~XA~XA~XA~XA~XA~X]/; s/A~X/SS/g;
then sort(). Do note however that such Latin-1 manipulation does not address the y. "y WITH DIAERESIS" character that will remain at code point 255 on ASCII platforms, but 223 on most EBCDIC platforms where it will sort to a place less than the EBCDIC numerals. With a Unicode enabled Perl you might try:
tr/^?/\x{178}/;
The strategy of mono casing data before sorting does not preserve the case of the data and may not be acceptable for that reason.
Convert, sort data, then re convert.
This is the most expensive proposition that does not employ a network connection.Perform sorting on one type of platform only.
This strategy can employ a network connection. As such it would be computationally expensive.TRANSFORMATION FORMATS
There are a variety of ways of transforming data with an intra character set mapping that serve a variety of purposes. Sorting was discussed in the previous section and a few of the other more popular mapping techniques are discussed next.URL decoding and encoding
Note that some URLs have hexadecimal ASCII code points in them in an attempt to overcome character or protocol limitation issues. For example the tilde character is not on every keyboard hence a URL of the form:
http://www.pvhp.com/~pvhp/
may also be expressed as either of:
http://www.pvhp.com/%7Epvhp/ http://www.pvhp.com/%7epvhp/
where 7E is the hexadecimal ASCII code point for '~'. Here is an example of decoding such a URL under CCSID 1047:
$url = 'http://www.pvhp.com/%7Epvhp/'; # this array assumes code page 1047 my @a2e_1047 = ( 0, 1, 2, 3, 55, 45, 46, 47, 22, 5, 21, 11, 12, 13, 14, 15, 16, 17, 18, 19, 60, 61, 50, 38, 24, 25, 63, 39, 28, 29, 30, 31, 64, 90,127,123, 91,108, 80,125, 77, 93, 92, 78,107, 96, 75, 97, 240,241,242,243,244,245,246,247,248,249,122, 94, 76,126,110,111, 124,193,194,195,196,197,198,199,200,201,209,210,211,212,213,214, 215,216,217,226,227,228,229,230,231,232,233,173,224,189, 95,109, 121,129,130,131,132,133,134,135,136,137,145,146,147,148,149,150, 151,152,153,162,163,164,165,166,167,168,169,192, 79,208,161, 7, 32, 33, 34, 35, 36, 37, 6, 23, 40, 41, 42, 43, 44, 9, 10, 27, 48, 49, 26, 51, 52, 53, 54, 8, 56, 57, 58, 59, 4, 20, 62,255, 65,170, 74,177,159,178,106,181,187,180,154,138,176,202,175,188, 144,143,234,250,190,160,182,179,157,218,155,139,183,184,185,171, 100,101, 98,102, 99,103,158,104,116,113,114,115,120,117,118,119, 172,105,237,238,235,239,236,191,128,253,254,251,252,186,174, 89, 68, 69, 66, 70, 67, 71,156, 72, 84, 81, 82, 83, 88, 85, 86, 87, 140, 73,205,206,203,207,204,225,112,221,222,219,220,141,142,223 ); $url =~ s/%([0-9a-fA-F]{2})/pack("c",$a2e_1047[hex($1)])/ge;
Conversely, here is a partial solution for the task of encoding such a URL under the 1047 code page:
$url = 'http://www.pvhp.com/~pvhp/'; # this array assumes code page 1047 my @e2a_1047 = ( 0, 1, 2, 3,156, 9,134,127,151,141,142, 11, 12, 13, 14, 15, 16, 17, 18, 19,157, 10, 8,135, 24, 25,146,143, 28, 29, 30, 31, 128,129,130,131,132,133, 23, 27,136,137,138,139,140, 5, 6, 7, 144,145, 22,147,148,149,150, 4,152,153,154,155, 20, 21,158, 26, 32,160,226,228,224,225,227,229,231,241,162, 46, 60, 40, 43,124, 38,233,234,235,232,237,238,239,236,223, 33, 36, 42, 41, 59, 94, 45, 47,194,196,192,193,195,197,199,209,166, 44, 37, 95, 62, 63, 248,201,202,203,200,205,206,207,204, 96, 58, 35, 64, 39, 61, 34, 216, 97, 98, 99,100,101,102,103,104,105,171,187,240,253,254,177, 176,106,107,108,109,110,111,112,113,114,170,186,230,184,198,164, 181,126,115,116,117,118,119,120,121,122,161,191,208, 91,222,174, 172,163,165,183,169,167,182,188,189,190,221,168,175, 93,180,215, 123, 65, 66, 67, 68, 69, 70, 71, 72, 73,173,244,246,242,243,245, 125, 74, 75, 76, 77, 78, 79, 80, 81, 82,185,251,252,249,250,255, 92,247, 83, 84, 85, 86, 87, 88, 89, 90,178,212,214,210,211,213, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,179,219,220,217,218,159 ); # The following regular expression does not address the # mappings for: ('.' => '%2E', '/' => '%2F', ':' => '%3A') $url =~ s/([\t "#%&\(\),;<=>\?\@\[\\\]^`{|}~])/sprintf("%%%02X",$e2a_1047[ord($1)])/ge;
where a more complete solution would split the URL into components and apply a full s/// substitution only to the appropriate parts.
In the remaining examples a @e2a or @a2e array may be employed but the assignment will not be shown explicitly. For code page 1047 you could use the @a2e_1047 or @e2a_1047 arrays just shown.
uu encoding and decoding
The "u" template to pack() or unpack() will render EBCDIC data in EBCDIC characters equivalent to their ASCII counterparts. For example, the following will print ``Yes indeed\n'' on either an ASCII or EBCDIC computer:
$all_byte_chrs = ''; for (0..255) { $all_byte_chrs .= chr($_); } $uuencode_byte_chrs = pack('u', $all_byte_chrs); ($uu = <<'ENDOFHEREDOC') =~ s/^\s*//gm; M``$"`P0%!@<("0H+#`T.#Q`1$A,4%187&!D:&QP='A\@(2(C)"4F)R@I*BLL M+2XO,#$R,S0U-C<X.3H[/#T^/T!!0D-$149'2$E*2TQ-3D]045)35%565UA9 M6EM<75Y?8&%B8V1E9F=H:6IK;&UN;W!Q<G-T=79W>'EZ>WQ]?G^`@8*#A(6& MAXB)BHN,C8Z/D)&2DY25EI>8F9J;G)V>GZ"AHJ.DI::GJ*FJJZRMKJ^PL;*S MM+6VM[BYNKN\O;Z_P,'"P\3%QL?(R<K+S,W.S]#1TM/4U=;7V-G:V]S=WM_@ ?X>+CY.7FY^CIZNOL[>[O\/'R\_3U]O?X^?K[_/W^_P`` ENDOFHEREDOC if ($uuencode_byte_chrs eq $uu) { print "Yes "; } $uudecode_byte_chrs = unpack('u', $uuencode_byte_chrs); if ($uudecode_byte_chrs eq $all_byte_chrs) { print "indeed\n"; }
Here is a very spartan uudecoder that will work on EBCDIC provided that the @e2a array is filled in appropriately:
#!/usr/local/bin/perl @e2a = ( # this must be filled in ); $_ = <> until ($mode,$file) = /^begin\s*(\d*)\s*(\S*)/; open(OUT, "> $file") if $file ne ""; while(<>) { last if /^end/; next if /[a-z]/; next unless int(((($e2a[ord()] - 32 ) & 077) + 2) / 3) == int(length() / 4); print OUT unpack("u", $_); } close(OUT); chmod oct($mode), $file;
Quoted-Printable encoding and decoding
On ASCII encoded platforms it is possible to strip characters outside of the printable set using:
# This QP encoder works on ASCII only $qp_string =~ s/([=\x00-\x1F\x80-\xFF])/sprintf("=%02X",ord($1))/ge;
Whereas a QP encoder that works on both ASCII and EBCDIC platforms would look somewhat like the following (where the EBCDIC branch @e2a array is omitted for brevity):
if (ord('A') == 65) { # ASCII $delete = "\x7F"; # ASCII @e2a = (0 .. 255) # ASCII to ASCII identity map } else { # EBCDIC $delete = "\x07"; # EBCDIC @e2a = # EBCDIC to ASCII map (as shown above) } $qp_string =~ s/([^ !"\#\$%&'()*+,\-.\/0-9:;<>?\@A-Z[\\\]^_`a-z{|}~$delete])/sprintf("=%02X",$e2a[ord($1)])/ge;
(although in production code the substitutions might be done in the EBCDIC branch with the @e2a array and separately in the ASCII branch without the expense of the identity map).
Such QP strings can be decoded with:
# This QP decoder is limited to ASCII only $string =~ s/=([0-9A-Fa-f][0-9A-Fa-f])/chr hex $1/ge; $string =~ s/=[\n\r]+$//;
Whereas a QP decoder that works on both ASCII and EBCDIC platforms would look somewhat like the following (where the @a2e array is omitted for brevity):
$string =~ s/=([0-9A-Fa-f][0-9A-Fa-f])/chr $a2e[hex $1]/ge; $string =~ s/=[\n\r]+$//;
Caesarian ciphers
The practice of shifting an alphabet one or more characters for encipherment dates back thousands of years and was explicitly detailed by Gaius Julius Caesar in his Gallic Wars text. A single alphabet shift is sometimes referred to as a rotation and the shift amount is given as a number $n after the string 'rot' or ``rot$n''. Rot0 and rot26 would designate identity maps on the 26 letter English version of the Latin alphabet. Rot13 has the interesting property that alternate subsequent invocations are identity maps (thus rot13 is its own non-trivial inverse in the group of 26 alphabet rotations). Hence the following is a rot13 encoder and decoder that will work on ASCII and EBCDIC platforms:
#!/usr/local/bin/perl while(<>){ tr/n-za-mN-ZA-M/a-zA-Z/; print; }
In one-liner form:
perl -ne 'tr/n-za-mN-ZA-M/a-zA-Z/;print'
Hashing order and checksums
To the extent that it is possible to write code that depends on hashing order there may be differences between hashes as stored on an ASCII based platform and hashes stored on an EBCDIC based platform. XXXI18N AND L10N
Internationalization(I18N) and localization(L10N) are supported at least in principle even on EBCDIC platforms. The details are system dependent and discussed under the ``OS ISSUES'' in perlebcdic section below.MULTI OCTET CHARACTER SETS
Perl may work with an internal UTF-EBCDIC encoding form for wide characters on EBCDIC platforms in a manner analogous to the way that it works with the UTF-8 internal encoding form on ASCII based platforms.Legacy multi byte EBCDIC code pages XXX.
OS ISSUES
There may be a few system dependent issues of concern to EBCDIC Perl programmers.OS/400
- PASE
- The PASE environment is runtime environment for OS/400 that can run executables built for PowerPC AIX in OS/400, see perlos400. PASE is ASCII-based, not EBCDIC-based as the ILE.
- IFS access
- XXX.
OS/390, z/OS
Perl runs under Unix Systems Services or USS.- chcp
- chcp is supported as a shell utility for displaying and changing one's code page. See also chcp.
- dataset access
-
For sequential data set access try:
my @ds_records = `cat //DSNAME`;
or:
my @ds_records = `cat //'HLQ.DSNAME'`;
See also the OS390::Stdio module on CPAN.
- OS/390, z/OS iconv
- iconv is supported as both a shell utility and a C RTL routine. See also the iconv(1) and iconv(3) manual pages.
- locales
- On OS/390 or z/OS see locale for information on locales. The L10N files are in /usr/nls/locale. $Config{d_setlocale} is 'define' on OS/390 or z/OS.
VM/ESA?
XXX.POSIX-BC?
XXX.BUGS
This pod document contains literal Latin 1 characters and may encounter translation difficulties. In particular one popular nroff implementation was known to strip accented characters to their unaccented counterparts while attempting to view this document through the pod2man program (for example, you may see a plain "y" rather than one with a diaeresis as in y.). Another nroff truncated the resultant manpage at the first occurrence of 8 bit characters.Not all shells will allow multiple "-e" string arguments to perl to be concatenated together properly as recipes 0, 2, 4, 5, and 6 might seem to imply.
SEE ALSO
perllocale, perlfunc, perlunicode, utf8.REFERENCES
<http://anubis.dkuug.dk/i18n/charmaps><http://www.unicode.org/unicode/reports/tr16/>
<http://www.wps.com/texts/codes/> ASCII: American Standard Code for Information Infiltration Tom Jennings, September 1999.
The Unicode Standard, Version 3.0 The Unicode Consortium, Lisa Moore ed., ISBN 0-201-61633-5, Addison Wesley Developers Press, February 2000.
CDRA: IBM - Character Data Representation Architecture - Reference and Registry, IBM SC09-2190-00, December 1996.
``Demystifying Character Sets'', Andrea Vine, Multilingual Computing & Technology, #26 Vol. 10 Issue 4, August/September 1999; ISSN 1523-0309; Multilingual Computing Inc. Sandpoint ID, USA.
Codes, Ciphers, and Other Cryptic and Clandestine Communication Fred B. Wrixon, ISBN 1-57912-040-7, Black Dog & Leventhal Publishers, 1998.
<http://www.bobbemer.com/P-BIT.HTM> IBM - EBCDIC and the P-bit; The biggest Computer Goof Ever Robert Bemer.
HISTORY
15 April 2001: added UTF-8 and UTF-EBCDIC to main table, pvhp.AUTHOR
Peter Prymmer<EMAIL_ADDRESS>wrote this in 1999 and 2000 with CCSID 0819 and 0037 help from Chris Leach and Andre Pirard<EMAIL_ADDRESS>as well as POSIX-BC help from Thomas Dorner<EMAIL_ADDRESS>Thanks also to Vickie Cooper, Philip Newton, William Raffloer, and Joe Smith. Trademarks, registered trademarks, service marks and registered service marks used in this document are the property of their respective owners.
Index
- NAME
- DESCRIPTION
- COMMON CHARACTER CODE SETS
- SINGLE OCTET TABLES
- IDENTIFYING CHARACTER CODE SETS
- CONVERSIONS
- OPERATOR DIFFERENCES
- FUNCTION DIFFERENCES
- REGULAR EXPRESSION DIFFERENCES
- SOCKETS
- SORTING
- TRANSFORMATION FORMATS
- Hashing order and checksums
- I18N AND L10N
- MULTI OCTET CHARACTER SETS
- OS ISSUES
- BUGS
- SEE ALSO
- REFERENCES
- HISTORY
- AUTHOR
This document was created by man2html, using the manual pages.
Time: 05:29:08 GMT, December 24, 2015


What is BikeShare?
As the Binghamton University Bike Share, we know that each student has his or her biking needs. Some may not be willing to pay the hundreds needed for a new bike. Others may not have convenient storage space. Still, others may simply not ride often enough to warrant buying a bike. We want to provide a quality biking experience that is fun, safe, and easy for all by suiting individual needs.
Bicycles have several benefits. They are environmentally-friendly alternatives to cars, yet give users the flexibility to ride where they need to go, when they need to go there. Rather than depending only on restrictive bus schedules, combining bicycling with public transit (with bus-bike racks) leads to an affordable and green way of transportation. Riding bikes also helps improve health and wellness, especially around the hilly Binghamton terrain. Insufficient parking and traffic congestion may be alleviated, and a bike share provides a great opportunity and platform to reduce campus carbon footprints and increase student engagement. Lastly, riding bikes is fun, and group rides can be a great way to meet new people!
By launching our pilot program in November of 2013, BUBS has ignited the interest of students and faculty. Eventually, we would like to expand the program into the city for residents to use in conjunction with the proposed Greenway project, an integral connection between the campus and the City of Binghamton.


Toggle navigation
Faye Books
Time Tracking
Folders
Client Accounts
Time Tracking
...
Date
Folder
Barby Doll
John Doe
Activity
Email
Phone call
Notes
Hours
Rate
Date
Folder
Category
Notes
Hours
Rate
Total
2016-01-31
Folder A
Email
34567


{{billItem.priceWithCharges | currency: vm.bill.currency }} payable
{{billItem.amount | currency: vm.bill.currency }} unit price
+{{vm.totalExtraCharges | percent:'1.2-5' }} extra charges
-{{billItem.discount | percent:'1.2-5'}} discount
You have not added bill items yet.


Synopsis
This is an amazing book and I would love to read it again.
It was ok, nothing to get too excited about.
Utter Rubbish, do not recommend.


Karnataka State Natural Disaster Monitor Center is Drought Monitoring Cell (DMC) established in 1988 as an institutional mechanism to monitor the Drought. Activities broadened to also include monitoring other natural disasters and renamed as Karnataka State Natural Disaster Monitoring Centre (KSNDMC) in 2007. It also includes monitoring of other natural disasters viz., Floods, Hailstorms, Gale-Winds, Storm-surges, Earthquakes, Landslides, Tsunamis etc. KSNDMC prepares and disseminates Reports on Daily/Weekly/ Monthly/Seasonal and Annual at Hobli level and also provides Rainfall and Weather information at Gramapanchayath level. DataSet and daily data is extracted from official KSNDMC website. It verifies and validates it weather report on daily basis and considered a reliable source of data


DigitalOcean is a provider of VPS services. For small applications the server can run on a single Droplet. The references at the end provide some pointers for setting up production installations.
Since the website will be public it will use a free Lets Encrypt certificate to secure the traffic. DigitalOcean does not provide public domain names for Droplets so you will need to own or register a domain for the certificate.
How To Use the MEAN One-Click Install Image
NOTE: To avoid install problems it's best to choose a 1GB or larger droplet.
Try the sample application if desired but skim over the later sections on developing and deploying your own application.
a) Initial Server Setup with Ubuntu 14.04
b) Additional Recommended Steps for New Ubuntu 14.04 Servers
When setting up a firewall as described in b), be sure to allow access on ports 80, 443, and 25.
Connect to the droplet as the non-root user created in step 3, then:
>$ cd ~ >$ git clone ... >$ cd scriptremote >$ npm install --production
First set up an email forwarding account. This will be used to
send security-related messages and user notifications.
Rather than using an existing account, you may want to create one
just for this purpose with one of the free email services (gmail,
hotmail, mailgun, ...).
Then copy the sample credentials file and substitue your values
for the MAILER
dummy values:
>$ cp credentials.env .env >$ chmod 600 .env >$ vim .env
Some services are stricter than others about relaying mail. To help ensure that mail can be sent choose the same provider as expected for registered user emails, and set MAILER_FROM to the same address as MAILER_EMAIL_ID. If users will have a variety of email providers then consider using a service like mailgun. Any mailing errors will be logged to the console. If there is a problem it will probably first show up when registering the admin user below.
Secondly, generate a random string for the session middleware. For example:
>$ openssl rand -base64 32Substitute the result for the SESSION_SECRET value in .env
sudo setcap 'cap_net_bind_service=+ep' /usr/bin/nodejs
>$ cd ~/scriptremote >$ npm run productionThis should start the server listening on port 80. Check that you can access the site with a browser by entering http://<droplet-ip>
Use ctrl-c to terminate the server when done.
Use the controls panels at your domain registrar and at Digital Ocean to set up DNS records for your domain, as described in:
How To Set Up a Hostname with Digital Ocean
Allow time for the changes to propagate. The ping and dig commands can be used to check DNS and reverse DNS lookup are working.
Start the server and check that you can access the site by entering http://<your-domain>
Use ctrl-c to terminate the server when done.
First install the letsencrypt client:
>$ cd ~ >$ git clone https://github.com/letsencrypt/letsencrypt >$ cd letsencrypt >$ ./letsencrypt-auto --helpCreate the certificate and copy the key files to server directory:
>$ mkdir ~/scriptremote/config/sslcerts >$ sudo -s >$ ./letsencrypt-auto certonly --standalone -d <your-domain> -dThe certificate will be valid for 90 days. It can be renewed within 30 days of expiration by using the renew subcommand of letsencrypt-auto>$ cp /etc/letsencrypt/live/<your-domain>/fullchain.pem ~/scriptremote/config/sslcerts >$ cp /etc/letsencrypt/live/<your-domain>/privkey.pem ~/scriptremote/config/sslcerts >$ chown <your-user:your-user> ~/scriptremote/config/sslcerts/* >$ ctrl-d >$ chmod 600 ~/scriptremote/config/sslcerts/*
>$ cd ~/scriptremote >$ npm start secureThis should start the server listening on port 443. Check that you can access the site with a browser by entering https://<your-domain> The 'https' in the url is required the first time a browser loads the site since there is no listener on http port 80. (Older browsers that do not support strict transport security will require the protocol to be specified every time.)
Use ctrl-c to terminate the server when done.
There are various ways to do this. Here we use the 'screen' terminal multiplexor, which is already installed in the droplet.
>$ screenThis will start a new terminal window to use for the following steps.
>$ cd ~/scriptremote >$ npm run secure
>$ mongo scriptremote >$ show collectionsIf there are collections listed other than system.indexes, sessions, or startup_log then remove them and also sessions, using:
>$ db.<collection>.drop()
In the browser select Login/Register on the home screen and then Register Here on the login screen. The registration screen should display a message that the admin account is being registered.
Continue the registration by entering at least an email and password, and by selecting one of the options for registration of other users. The default is to allow other users to register themselves. You can also select a timeout for idle sessions.
A confirmation email should be sent to the registered address. Complete the registration by clicking the link in the email or by submitting the token value from the email into the form displayed when attempting to login.
Return to the home page and login using the admin account.
Get script credentials by selecting Settings in menu bar and then selecting Generate in the API Credentials section. The User Id and Token values will be needed to authenticate messages to the server from scripts running in the private network.
Copy the API credentials obtained above to a machine in the private network, then download the bash utility script:
>$ wget https://<your-domain>/dist/srjob.shSet
SRSERVER
to the URL of your server, by editing the script
or as an environment variables:
>$ export SRSERVER=https://<your-domain>Create a simple test:
>$ cat > test.sh #!/bin/bash . ./srjob.sh SR_start ${SRUSER} ${SRTOKEN} 'myproject' 'myjob' SR_set 'msg1' 'Hello World' 'false' SR_send 'mylocation' SR_endExport the API credentials and run the test:
>$ export SRUSER=<your-userid> >$ export SRTOKEN=<your-token> >$ bash test.shCheck that the test message can be viewed in the browser by selecting Projects in the menu bar.
If the script fails with a certificate verification error it may mean that there is no CA cert store available in the test machine OS. In that case you would need to install a root certificate.
>$ ctrl-a d >$ exit
Connect to the droplet as the non-root user and use the screen command:
>$ screen -ls >$ screen -r <screen-id>If you need to scroll up in the window, the command to view the window's history buffer is:
>$ crtl-a escTo exit the buffer type 'return' twice
Since the admin has elevated priviledges to do things like viewing user details and registering new users, it is best for security purposes to minimize use of that account. Instead register as a normal user for actual projects. This will require a different email address from the one used to for the admin account.
Logging of server responses is enabled by default. The log directory is scriptremote/log. The log file format is 'Apache common'. It is recommended to monitor the logs for signs of instrusion, such as an unknown source ip successfully accessing an endpoint other than the root or documentation.
For additional security you may want to enable authentication for MongoDB. Without authentication anyone who manages to obtain user access to the system can also access the database. MongoDB supports elaborate authentication/authorization schemes but for simplicity the following just sets up a "root" user with all access.
Create the user in the mongo shell:
>$mongo > use admin > db.createUser( > { > user: "<mongo-user>", > pwd: "<mongo-password>", > roles: [ "root" ] > } >) >exitThen enable authentication in the mongo config file, which is often located at /etc/mongod.conf. Depending on the file format add either:
security: authorization: enabledor
auth = trueThen restart mongod:
>$ sudo restart mongodCheck that the credentials work in the mongo shell:
>$ mongo -u "mongo-user" -p "mongo-password" --authenticationDatabase "admin"Edit the ~/scriptremote/.env file to uncomment the mongo credentials and substitute your values, then restart the ScriptRemote server.
You may want to enable limits on the amount of message data that can be sent to the server, for example to help protect against scripting errors that could produce very large or very many messages. The available limits are defined in
config/env/all.jsAny of them may be set as environment variables prior to starting the server.
How To Set Up a Node.js Application for Production on Ubuntu 14.04
Building for Production: Web Applications
How To Set Up a Firewall Using Iptables on Ubuntu 14.04


Follow discussions to receive email notifications when members post new content. You can follow all forum discussions or individual discussions.
Follow these steps to subscribe or unsubscribe from all forum discussions:
Follow these steps to toggle your subscription to individual discussions:


Using Compass, I streamline my workflow when developing the aesthetics of my web apps. I can also use Sass standalone, and Vanilla CSS3.
Using JavaScript, I bring my UI to life with libraries like jQuery, and frameworks like Angular.
I also work on the backend, primarily with PHP, to make my web apps functional and useful.


R client for Climate Change, Agriculture, and Food Security (CCAFS) General Circulation Models (GCM) data.
CCAFS website: http://ccafs-climate.org/
CCAFS GCM data for this package comes from Amazon S3 root path. Amazon S3 stands for “Simple Storage Service” - it’s like a file system, and they give you links to the files and metadata around those links. More about Amazon S3 below.
CCAFS data can be used for studying climate change, and how climate impacts various aspects of the earth. Search google scholar with "CCAFS" "GCM"
to see example uses.
As far as I can tell, CCAFS GCM data comes from IPCC data.
Amazon S3 stands for “Simple Storage Service” - it’s like a file system, and they give you links to the files and metadata around those links.
S3 is split up into buckets, essentially folder. All CCAFS data is in one bucket.  To get to various files we need to navigate down the tree of folders. Keys are file paths with all their parent folders, e.g., “/foo/bar/1/2”. Unfortunately, there’s no meaningful search of the CCCAFS data as they have on their website http://ccafs-climate.org/. However, you can set a prefix for a search of these keys, e.g., “/foo/bar” for the key above.
Check out https://aws.amazon.com/s3/ for more info.
ccafs
is a client to work with the data CCAFS provides via Amazon Web Services S3 data.
The ccafs
data has access to is the “Spatial Downscaling” data that you see on the http://ccafs-climate.org/data/ page. The other data sets are not open.
Currently, we don’t provide a way to search for what data is available. You have to know what you want, or you can list what is available, and then pick files from the list. Though there’s not a lot of information in the metadata returned from S3.
We’ll work on incorporating a way to search - currently there is no solution.
Cite CCAFS data following their guidelines at http://ccafs-climate.org/about/
Get a citation for this package like citation(package = 'ccafs')
after installing the package.
The main useful output are raster
package objects of class RasterLayer
or RasterBrick
- so in general have raster
loaded in your session to maximize happiness.
CRAN version
install.packages("ccafs")
Development version
devtools::install_github("ropensci/ccafs")
library("ccafs")
Note, files are not loaded as they can be very large
key <- "ccafs/ccafs-climate/data/ipcc_5ar_ciat_downscaled/rcp2_6/2030s/bcc_csm1_1_m/10min/bcc_csm1_1_m_rcp2_6_2030s_prec_10min_r1i1p1_no_tile_asc.zip"
(res <- cc_data_fetch(key = key))
#>
#> <CCAFS GCM files>
#> 12 files
#> Base dir: /bcc_csm1_1_m_rcp2_6_2030s_prec_10min_r1i1p1_no_tile_asc
#> File types (count):
#> - .asc: 12
Can load in a single file (gives RasterLayer
), or many (gives RasterBrick
)
cc_data_read(res[1])
#> class : RasterLayer
#> dimensions : 900, 2160, 1944000 (nrow, ncol, ncell)
#> resolution : 0.1666667, 0.1666667 (x, y)
#> extent : -180, 180, -60, 90 (xmin, xmax, ymin, ymax)
#> coord. ref. : NA
#> data source : /Users/sacmac/Library/Caches/ccafs/bcc_csm1_1_m_rcp2_6_2030s_prec_10min_r1i1p1_no_tile_asc/prec_1.asc
#> names : prec_1
#> values : -2147483648,<PHONE_NUMBER> (min, max)
cc_data_read(res[1:2])
#> class : RasterStack
#> dimensions : 900, 2160, 1944000, 2 (nrow, ncol, ncell, nlayers)
#> resolution : 0.1666667, 0.1666667 (x, y)
#> extent : -180, 180, -60, 90 (xmin, xmax, ymin, ymax)
#> coord. ref. : NA
#> names : prec_1, prec_10
#> min values : -2147483648, -2147483648
#> max values :<PHONE_NUMBER>,<PHONE_NUMBER>
library("raster")
plot(cc_data_read(res[1:3]))
ccafs
in R doing citation(package = 'ccafs')


A song produced by Le Castle Vania for the first John Wick movie. Castle Vania has multile features in the movie, and are quite noticable.
Jerry Cantell from Alice in Chains produced an EP for John Wick: Chapter 2, and played in the credits.


The Thomas Crown Affair (1999) Reviewed by Eugene Novikov http://www.ultimate-movie.com Member: Online Film Critics Society
**1/2 out of four
"Can a woman trust you?" "As long as her interests don't run too contrary to my own."
Starring Pierce Brosnan, Rene Russo, Denis Leary. Rated R.
The Thomas Crown Affair is a film so well-made technically that it lures you into thinking that it's actually good cinematically. It's not. But the movie moves so smoothly that we almost don't notice the fact that it expects us to believe things that are impossible -- not just implausible -- impossible. Ridiculous performances and the masqueraded shallowness of the center relationship might also fly by the less discriminating viewer. It's like a lemon automobile with a shiny coat of paint.
Besides making the classic actioner Die Hard, director John McTiernan is also responsible for Last Action Hero, one of the biggest flops in history. This is his second movie since that humiliating occasion and even if it isn't very good, he certainly redeems himself as a director (working on an assumption that he ever needed redemption, which quite arguable).
In a James Bond-ish performance (surprised?), Pierce Brosnan plays Thomas Crown, a limitlessly wealthy "finance geek", as one of the characters naively puts it, to whom there is more than meets the eye. He's thrill-seeker extraordinaire and a world-class thief; a man to whom the process of stealing a difficult-to-snatch object is worth infinitely more than actually possessing it. When he illicitly gets ahold of a Monet original worth $100 million he gets more than he bargained for: Catherine Banning (Rene Russo), a clever insurance agent responsible for retrieving the painting if she can.
Crown loves a good challenge so he indirectly admits to her that it was he who took the beloved Monet and gets her to date him (why? how?). They sleep together (hello?) and fall in love (why? how? when?) and that puts dear Catherine into a dilemma: does she run away with Crown or does she turn him in?
Aside from the numerous logical contradictions, especially associated with the admittedly clever climax, the first major flaw that struck me was the supported notion that Thomas Crown can correctly guess what everyone around him is going to do. McTiernan's intention seems to be to define him as an enigma: but this is a full-fledged romance and such definition is wholly inappropriate. As such, Crown rarely feels human to us and thus doesn't seem capable of falling in love. If the filmmakers wanted the romance to work they should have made Thomas Crown a real person.
Rene Russo's laughable performance doesn't help the situation any. Constantly leering, comically self-confident, her character suffers from a similar ailment as Brosnan's except in her case it's the performer's fault. She's more of a femme fatale than a human being; a superhero rather than a woman (Inspector Gadget could have used her presence). Rene Russo is another factor that keeps the romance from ever going anywhere. It has a fancy coating but it remains shallow and impersonal; we see two people falling in love but get no insight into their relationship.
Despite all of the above, The Thomas Crown Affair remains a moderately entertaining, engaging movie. It's very well-directed and wonderfully filmed. It also benefits from what is probably the year's best score: intricate and beautiful, it not only adds excitement to scenes that very much need it but it also pulls off the feat of flawlessly and unintrusively supplementing the action even in scenes where suspense, which a film's score is predominantly and sometimes exclusively used to emphasize, takes the back seat to another prevalent emotion.
I can't recommend The Thomas Crown Affair, but I can't say I strongly disliked it either. It's a film by someone who knows how to make films and does it well. Unfortunately it's deeply flawed (although the flaws don't come to you until after the movie) and I can't, with a clear conscience suggest that you see it over some of the far better movies this summer. But if your debating whether to see, say, Inspector Gadget or The Thomas Crown Affair, leap for those Thomas tickets or be sorry. ©1999 Eugene Novikov
Sent via Deja.com http://www.deja.com/ Share what you know. Learn what you don't.
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


This calculator is for students from England or the European Union (EU) starting a new course in academic years:
- 2016 to 2017
- 2017 to 2018
There has been no change to the rights and status of EU nationals in the UK, and UK nationals in the EU , as a result of the referendum.
Use the student finance calculator to estimate:
- student loans
- extra student funding, eg if you’re disabled or have children
Your result will be more accurate if you know your annual household income (your parents’ or partner’s income plus your own).
Before you start
You can’t use the calculator if you’re from Scotland , Wales or Northern Ireland.


We wanted to better understand how evictions are happening: both in normal times and during the pandemic. The process is complicated and can vary widely from place to place, making the experience even more confusing for renters.
At the onset of the COVID-19 pandemic in the US, many states saw suspending evictions as a tool to protect people and public health. But these moratoriums varied widely in their length and their scope. Some states opted for policies only protecting tenants recieving government subsidies, while others covered most renters.
Variation in procedure by state existed before the pandemic as well. The above chart shows each state's minimum and maximum timeline for each major step of the eviction process.
Long story short, a longer timeline is better for tenants. It give them more time to find employment or another place to live, more time to secure legal help. Short timelines create compounded difficulties, like getting time off work for a court date with only a few days notice or having just 24 hours after a verdict is made to pack up your entire apartment.
The architecture and planning of the existing court system exacerbate the obstacles Renters face in eviction proceedings in a few ways. First, many counties have one eviction court for their whole county, which can make accessing the court very difficult. It can be a challenge to physically get there, get the time off work or childcare, and in general, the courts are disconnected from the communities they service.
The existing prototypical court room creates a strong heirarchy between the tenant, landlord, and judge. With designated seating, separated entrances, and a series of controlled thresholds.
Within the courtroom each person has a specific role with spatial limitations. These conditions are not designed for collaboration.


I'm Julianne, and welcome to my Dev Academy project blog!
I'm originally from California and moved to New Zealand when I was 16. Here I spent time travelling and studying at the Univeristy of Auckland where I received a Bachelor of Earth Science. In my free time I enjoy hiking and spending time with my family.
Now I am learning to become a web developer at Dev Academy in Auckland, New Zealand. I want to learn as much as I can to build a new career amd work on phenomenal projects.


Judgment
- You make wise decisions (people, technical, business, and creative) despite ambiguity
- You identify root causes, and get beyond treating symptoms
- You think strategically, and can articulate what you are, and are not, trying to do
- You smartly separate what must be done well now, and what can be improved later
Communication
- You listen well, instead of reacting fast, so you can better understand
- You are concise and articulate in speech and writing
- You treat people with respect independent of their status or disagreement with you
- You maintain calm poise in stressful situations
Impact
- You accomplish amazing amounts of important work
- You demonstrate consistently strong performance so colleagues can rely upon you
- You focus on great results rather than on process
- You exhibit bias-to-action, and avoid analysis-paralysis
Curiosity
- You learn rapidly and eagerly
- You seek to understand our strategy, market, customers, and suppliers
- You are broadly knowledgeable about business and technology and CTM’s platform
- You contribute e ectively outside of your specialty
Innovation
- You re-conceptualize issues to discover practical solutions to hard problems
- You challenge prevailing assumptions when warranted, and suggest better approaches
- You create new ideas that prove useful
- You keep us nimble by minimizing complexity and nding time to simplify
Courage
- You say what you think even if it is controversial
- You make tough decisions without agonizing
- You take smart risks
- You question actions inconsistent with our values
Passion
- You inspire others with your thirst for excellence
- You care intensely about CTM‘s success
- You celebrate wins
- You are tenacious
Honesty
- You are known for candor and directness
- You are non-political when you disagree with others
- You only say things about fellow employees you will say to their face
- You are quick to admit mistakes
Selflessness
- You seek what is best for CTM, rather than best for yourself or your group
- You are ego-less when searching for the best ideas
- You make time to help colleagues
- You share information openly and proactively


Dr Mahathir attends dinner marking 50 years of Malaysia-Hungary diplomatic ties
by BernamaKUALA LUMPUR (Nov 19): Prime Minister Tun Dr Mahathir Mohamad tonight attended a gala dinner here to celebrate the 50th anniversary of establishment of diplomatic relations between Malaysia and Hungary.
He was accompanied by his wife Tun Dr Siti Hasmah Mohamad Ali.
The event, organised by the Hungarian Embassy in Malaysia, was hosted by Ambassador Attila Kali and his wife Dr Nora Kaline Szilagyi.
Kali in his speech highlighted the great relations shared by the two countries throughout history.
"We believe the cooperation between Hungary and Malaysia in the past few years has truly become a partnership of the 21st century. Our relations are going in a really good direction," he said.
Also present at the event was a business delegation of 13 companies from the Hungarian Chamber of Commerce and Industry who are in Malaysia from Nov 18 to 20.
Malaysia and Hungary established diplomatic relations on Dec 29, 1969. — Bernama


Apple
Fruit
It's Healthy
Cucumber
Vegetable
Тhe perfect salad ingredient
Bonster
Energy drink
Contains coffee
Hello CSS
red block
blue block
green block
gray block


I’ve started working in casino in the beginning of 2004. Ever since I loved what I do and still working in gambling business for more than 17 yeas now. But I didn’t stick to one place. Not long after I started, I’ve decide this job is giving me the opportunity to travel the world, so I did. At first went working in Agadir, Morocco. Spend there one year. And than an interesting started. Pass an interview and went working on a big and beautiful cruise ship. I loved it, and I stick to it for more than five years. Growth through the years, become a casino manager and been on this position for more than three years. One day I decide to settle down and come back home for good.
And than it happened, pandemic came than lock down. And I got love for sating home with my laptop. I've always wanted to study and decide to take some courses from home. Bump into free online JavaScript course for beginners offered from software university (Softuni.bg). At first in the beginning it was very hard but I knew never to gave up. I’m finishing soon the last professional module JS web and soon will graduate. Now looking for new adventure to starting my internship and see the real thing from inside. Very exited about what is wet to come.


All functions
|
|
add_hspanicr_column()
|
Add an NA hspanicr column if one doesn't exist |
|
add_pop_counts()
|
Given a dataframe with year, age, sex, and race, returns population estimate |
|
add_std_pop()
|
Given a dataframe with age, returns a standard population |
|
appalachia_fips
|
Dataframe of Appalachian counties with name and FIPS codes |
|
calc_asrate_var()
|
Calculate age-specific rates and variance |
|
calc_stdrate_var()
|
Calculate age-standardized rates and variance |
|
categorize_age_5()
|
Create a categorical age column from a converted ager27 column |
|
categorize_hspanicr()
|
Create a categorical Hispanic column from the hspanicr column |
|
categorize_race()
|
Create a categorical race column from standardized race column |
|
cdc_dict
|
A dictionary of year:URL key:value pairs for the CDC FTP MCOD files |
|
clean_icd9_data()
|
A wrapper function to perform basic cleaning of ICD-9 dataframes |
|
convert_ager27()
|
Converts the age27 variable in MCOD data to 5-year age groups |
|
.dct_to_fwf_df()
|
Downloads the NBER Stata dct file and returns a dictionary with column data |
|
.download_1979_pop_data()
|
Download 1979 Population Counts |
|
.download_1980s_pop_data()
|
Download 1980s Population Counts |
|
.download_1990s_pop_data()
|
Download 1990s Population Counts |
|
.download_2000s_pop_data()
|
Download 2000s Population Counts |
|
.download_2010s_pop_data()
|
Download 2010s Population Counts |
|
.download_all_pop_data()
|
Download 1979-2015 Population Estimates |
|
.download_mcod_fwf()
|
Download the multiple cause of death data as an ASCII file from the CDC |
|
.download_standard_pops()
|
Download Standard Populations |
|
.extract_year()
|
Helper function that extracts year from a dataframe and raises error
if more than one. |
|
.import_restricted_data()
|
Wrapper for importing restricted MCOD data |
|
download_mcod_csv()
|
Download the multiple cause of death data as a CSV file |
|
download_mcod_dta()
|
Download the multiple cause of death data as a DTA file |
|
download_natality_ascii()
|
Download NCHS Natality (Live Births) Data from the CDC FTP (ASCII) |
|
flag_drug_deaths()
|
Flag drug deaths according to ISW7 rules |
|
flag_heroin_present()
|
Creates a new column called heroin_present if opioid death involved heroin |
|
flag_maternal_deaths()
|
Creates a new column called maternal_death with 1 if maternal death |
|
flag_maternal_deaths_late()
|
Creates a new column called maternal_death with 1 if maternal death (late) |
|
flag_methadone_present()
|
Creates a column `methadone_present` if opioid death involved methadone |
|
flag_nonheroin()
|
Flag all opioid deaths that were not from heroin |
|
flag_nonopioid_drug_deaths()
|
Flag non-opioid drug deaths according to ISW7 rules |
|
flag_od_intent()
|
Flag overdose deaths by their UCOD intent code |
|
flag_opioid_contributed()
|
Flag non-opioid deaths that involved opioids |
|
flag_opioid_deaths()
|
Flag opioid deaths according to ISW7 rules |
|
flag_opioid_types()
|
Take a processed MCOD dataframe and create indicators for opioid types |
|
flag_opium_present()
|
Creates a column called `opium_present` if opioid death involved opium |
|
flag_other_natural_present()
|
Creates a column `other_natural_present` if opioid death involved opium |
|
flag_other_op_present()
|
Creates a column `other_op_present` for deaths with other unspecified opioid |
|
flag_other_synth_present()
|
Creates a column called `other_synth_present` |
|
flag_suicide_deaths()
|
Flag suicide deaths (no accidental poisoning) |
|
flag_suicide_fall()
|
Flag suicide by fall |
|
flag_suicide_firearm()
|
Flag suicide by firearm |
|
flag_suicide_other()
|
Flag suicide by other (not poison, fall, firearm, suffocation) |
|
flag_suicide_poison()
|
Flag suicide by poison |
|
flag_suicide_suffocation()
|
Flag suicide by suffocation |
|
flag_suicide_types()
|
Flag suicide five types: firearm, poisoning, fall, suffocation, or other |
|
ihme_fips
|
Mapping original FIPS codes to temporally stable FIPS codes from IHME |
|
label_od_intent()
|
Label intent from underlying cause column for overdose drugs |
|
label_suicide_type()
|
Create a new column with labels for suicide type |
|
live_births
|
Dataframe of live births in the US from 2003-2016 by race/ethnicity and age. |
|
mkdir_p()
|
Wrapper to make a directory (and subdirectories) if necessary |
|
narcan
|
narcan R package for working with multiple cause of death data |
|
pad_3char_codes()
|
Pad ICD-9 codes that do not have a sub-code (i.e., 3-character codes) |
|
pop_est
|
Dataframe of annual population counts by age and race, 1979-2015 |
|
prefix_e_to_ucod()
|
Add the external cause flag (E) to appropriate ICD-9 UCOD codes |
|
prefix_to_record()
|
Add the prefix to appropriate ICD-9 record columns |
|
remap_race()
|
Remaps the race column to a single standard across 1979-2015 |
|
rename_ni_flag()
|
Rename nature of injury columns for consistency |
|
st_fips_map
|
Mapping of state/territory name to abbreviation to FIPS code |
|
state_abbrev_to_fips()
|
Replace state abbreviations with their corresponding FIPS code |
|
std_pops
|
Dataframe of common standard populations from SEER website. |
|
subset_residents()
|
Subset to US residents |
|
summarize_binary_columns()
|
Summarizes all flagged (e.g., 0/1) MCOD columns |
|
trim_5char_record()
|
Trim ICD-9 record columns that include the nature of injury flag |
|
trim_trailing_whitespace()
|
Trim trailing whitespace on 3-char ICD-9 codes |
|
unite_records()
|
Unite the 20 record columns from MCOD dataframe into a single column |
|
zap_dta_data()
|
Clear Stata metadta from MCOD dta files |


Example usage
×
Yeah, you've submitted the form.
Now you have to validate the user response on your server.
here is how
Email address*
Please enter your email address
Captcha*
Create new Account
Debug output
{{user | json}}


Attn: Directors/Owners My name is Taylor Brown, I am a citizen OfLiberia.also the then honorable minister for special duties duringCharles Taylor?s government as the president of Liberia, During thewar,I decided to move out of my country,My wife, children and I managedto enter a red cross airplane that was evacuating foreigners and we arepresently in a refugee camp in the coastal city of Cardiff for cover[Exile] with my remaining family.While i was in the office,i was able tomake sum savings through contract that was awarded to various companiesvia my office to the tune of $43m USD and the funds has since beendeposited with a reputable equty and finance trust in Europe on behalfof a foreigner for sake keeping.Based on this,we will want you to assistus make claims of the funds.Thus we will want to transfer all right ofbeneficiary to you so as to enable you make claims of the funds on ourbehalf because i am not properly disposed due to my presentsituation.Moreso I wish to invest this sum in profitable venture likereal estate properties e.g. Houses, hotels and landed property in yourcountry and any other lucrative sphere of business you maydeem fit andprofitable with your assistant and coperation. But most importantlyI urgently wants to buy houses/properties so that I can relocate myentire family because I do not intent to go back to my countryLiberia,and it is based on these that i decided to contact you as afunds/property manager.On receipt of your positive response I shallforward to you more details on the exact role that is required of youfor the successful conclusion of this transaction. And if you feel youcould be of assistant, I shall need you to get back to me as soon aspossible via my private email (t.brown@sify.com). I await yourresponse. Regards Brown. __________________________________________________________________ 1Mb Tiscali Broadband for £14.99. Offer ends 30th June 2005 http://www.tiscali.co.uk/products/broadband


AnalyticsFields
object AnalyticsFields
Only common analytics field keys should be declared within this object.
SDK-specific analytics field keys should live within the corresponding SDK module.
Only common analytics field keys should be declared within this object.
SDK-specific analytics field keys should live within the corresponding SDK module.