text:
---
layout: default
---

# 1997-06-01 - Re: Rotenberg as the Uber Enemy

## Header Data

From: "Robert A. Costner"<EMAIL_ADDRESS>To: Tim May<EMAIL_ADDRESS>Message Hash: dfb6ab84e1252b11263d1e38388e514c9ce4294147f1cc3b84443e8e15d3dfd3

Message ID<EMAIL_ADDRESS>Reply To<EMAIL_ADDRESS>UTC Datetime: 1997-06-01 21:58:02 UTC

Raw Date: Mon, 2 Jun 1997 05:58:02 +0800

## Raw message

```
{% raw  %}From: "Robert A. Costner"<EMAIL_ADDRESS>Date: Mon, 2 Jun 1997 05:58:02 +0800
To: Tim May<EMAIL_ADDRESS>Subject: Re: Rotenberg as the Uber Enemy
In-Reply-To<EMAIL_ADDRESS>Message-ID<EMAIL_ADDRESS>MIME-Version: 1.0
Content-Type: text/plain

-----BEGIN PGP SIGNED MESSAGE-----

Myself, and EFGA supports no anti-spam law at this time, nor have we suggested
the world needs one.  Over the last year we have repeatedly said that existing
laws may prove to be sufficent.  What is clear is that there has been little
attempt at using today's laws against spam and failing.  If EFGA has a
position, it is that first the current laws should be tested against spam.  No
new laws should be proposed until today's laws can be shown to be useless
against the problem.

To the contrary, Cyberpromotions has been to court five times, and has lost
five times.  These are not internet issues as much as they are fraud, consumer
protection, and commerce issues.  Education of applicability of existing laws
may be more effective than new laws.

New laws are being proposed.  And I feel comfortable commenting on the faults
of a law, or of it's languge.  I can suggest what is wrong with a law, or what
it lacks without supporting a flawed bill.

  DATA GATHERING

The original issue is one of data collection.  For many, this is the opt-in,
opt-out argument.  For others it is adherence to a convention such as the
robots.txt file found on web pages.  While there is nothing wrong with data
harvesting in it's self, what one does with the info may be called into
question.

The currently proposed bills look at various areas.

  1.  Identification
  2.  Content
  3.  Data Collection procedures
  4.  Tonnage/automated processing

Data Collection procedures may be less restrictive than identification
requirements, or content bans.

There is a law precedent in the Telephone Consumer Protection Act (TCPA) of
1991 to handle each of these issues.  For data collection, the TCPA requires a
removal database be maintained and an opt-out strategy be employed.  One of
the largest problems with "spam" is that the data collection strategies
employed today are deceptive, fraudulent, and do not come close to fitting the
model carefully considered in the TCPA.

The reason the TCPA is carefully considered is that once the law allowed for
the promulgation of rules, the FCC had a series of public comment periods and
promoted rules that highly favored privacy while trying to balance the fair
practices of telemarketers.  Unfortunately, with spam, most spammers do not
have "fair practices".

If is highly likely that the spam question could be quickly addressed and more
clearly defined without new laws simply by a comment period and the
promulgation of new rules.

Additional comments after Tim's quote....

At 09:28 AM 5/31/97 -0700, Tim May wrote:
>If it is "ILLEGAL" (your emphasis) for someone to call me on the phone for
>spamming, why then do I get so many such calls? Why aren't the prisons full?
>
>(Answer: Because it is NOT illegal for people to call me, or for me to call
>others, or for me to even call thousands of others. True, it is possible
>for me (I disagree with these laws, though, and cite the First again) for
>me to _ask_ that they not call me. Maybe even jump through hoops and get an
>injunction. )
>
>There are laws on the books which prohibit fully automated calls with no
>humans in the loop, but these are easily bypassed. (E.g., the boiler-room
>minimum wage employees in Detroit and Chicago who pick up the phone several
>seconds after I have picked up and then start a barely understandable
>spiel...I've prettty much taken to hanging up if no human voice appears
>within the first couple of seconds, as I know I am being handed off to the
>next available "human.")

Well, prisons *are* full.  Many of the inmates are telemarketers.  But this is
not because of telemarketing laws.  You are confusing "illegal" with
"criminal".  The laws we refer to are civil law, not criminal law.  47 USC 227
is a federal civil law.  It also allows for state Attorney Generals to file
civil suits on behalf of it's citizens.  This, if not taken to extreme, is a
proper function of gov't.  To protect citizens from that which they cannot
protect themselves.

Why do you get such calls?  The existing laws not only apply to fully
automatic calls, but predictive dialing systems such as you mention and pure
manual voice calls.  I cannot answer why you get the calls.  Perhaps you have
not requested to be in the national "don't call me database".  Perhaps your
callers just use illegal data collection procedures.  I'll summarize some of
the law to you.  The Telephone Consumer Protection Act (TCPA) of 1991 made
effective December 1992 the following:

1.  Calls only allowed 8am to 9pm
2.  Lists must be maintained of "do not want to be called"
3.  Telemarketers must identify themselves - address & phone number
4.  Employees must know rules & know how to use remove list.

Additional info can be found at
http://www.fcc.gov/Bureaus/Common_Carrier/Orders/1995/fcc95310.txt

Quote from the Act:
    Because unrestricted telemarketing can be an invasion of
    consumer privacy, and even a risk to public safety, Congress
    found that a federal law is necessary to control
    telemarketing practices.

SPAM vs TELEMARKETING

A telemarketing operation has a high level of entry.  Not that high, but phone
lines, desks, office space, employees. etc must all be provisioned and paid
for.  The level of entry for being a spammer is much, much lower.  For some it
may be a dedicated connection, but millions of spams can still be sent with a
dial-up account.  Accordingly, EFGA sees that the number of spammers could
grow to be far more than the number of telemarketers.  Easily a figure could
be reached that ten times more spammers could start a business than the number
of telemarketers.

In 1990, more than 30,000 telemarketing operations employed over 18 million
Americans.  Easily we could see over 300K spam operators in business,
employing less than one million people.  Each of these individual spammers
could be sending out daily spams.  Many of them would be able to reach a
significant portion of the internet users on a daily basis.

At 09:28 AM 5/31/97 -0700, Tim May wrote:
>Your point being?
>
>Any laws forbidding spam generation in the U.S. will simply (or already)
>move the spam-originating sites offshore. Then what happens?

As long as the companies who are advertising have US offices, the offshore
factor will not matter.  Existing fax precedent makes the advertiser the one
ultimately responsible for the ad.

-----BEGIN PGP SIGNATURE-----
Version: 5.0 beta
Charset: noconv

iQBVAwUBM5Ht90GpGhRXg5NZAQH4RQIAnm4mbPbsF3JVCK2mFwzZ0frOa6CJBcA3
CHv7lvhxndUT+wPlV40BjCohL9kknuOkLbeZeAoMCGlZkZ9ThIXVYQ==
=srDk
-----END PGP SIGNATURE-----

  -- Robert Costner                  Phone:<PHONE_NUMBER>
     Electronic Frontiers Georgia<EMAIL_ADDRESS>
     http://www.efga.org/            run PGP 5.0 for my public key

{% endraw %}
```

## Thread

+ Return to [May 1997](/archive/1997/05)
+ Return to [June 1997](/archive/1997/06)

+ Return to<EMAIL_ADDRESS>(Ulf =?ISO-8859-1?Q?M=F6ller?=)](/authors/3umoelle_at_informatik_unihamburg_de_ulf_iso88591qmf6ller_)"
+ Return to "[Asgaard <asgaard@cor.sos.sll.se>](/authors/asgaard_asgaard_at_cor_sos_sll_se_)"
+ Return to "[Bill Stewart <stewarts@ix.netcom.com>](/authors/bill_stewart_stewarts_at_ix_netcom_com_)"
+ Return to "[Dave Emery <die@pig.die.com>](/authors/dave_emery_die_at_pig_die_com_)"
+ Return to "[Declan McCullagh <declan@pathfinder.com>](/authors/declan_mccullagh_declan_at_pathfinder_com_)"
+ Return to "[Declan McCullagh <declan@well.com>](/authors/declan_mccullagh_declan_at_well_com_)"
+ Return to<EMAIL_ADDRESS>(Dr.Dimitri Vulis KOTM)](/authors/dlv_at_bwalk_dm_com_dr_dimitri_vulis_kotm_)"
+ Return to "[Duncan Frissell <frissell@panix.com>](/authors/duncan_frissell_frissell_at_panix_com_)"
+ Return to "[Eric Murray <ericm@lne.com>](/authors/eric_murray_ericm_at_lne_com_)"
+ Return to "[frissell@panix.com](/authors/frissell_at_panix_com)"
+ Return to<EMAIL_ADDRESS>(Igor Chudov @ home)](/authors/ichudov_at_algebra_com_igor_chudov__at__home_)"
+ Return to "[jonathon <grafolog@netcom.com>](/authors/jonathon_grafolog_at_netcom_com_)"
+ Return to "[Kent Crispin <kent@songbird.com>](/authors/kent_crispin_kent_at_songbird_com_)"
+ Return to "[Lee Tien <tien@well.com>](/authors/lee_tien_tien_at_well_com_)"
+ Return to "[Lucky Green <shamrock@netcom.com>](/authors/lucky_green_shamrock_at_netcom_com_)"
+ Return to "[Mac Norton <mnorton@cavern.uark.edu>](/authors/mac_norton_mnorton_at_cavern_uark_edu_)"
+ Return to "[Marc Rotenberg <rotenberg@epic.org>](/authors/marc_rotenberg_rotenberg_at_epic_org_)"
+ Return to<EMAIL_ADDRESS>(Mike Duvos)](/authors/mpd_at_netcom_com_mike_duvos_)"
+ Return to "[Paul Bradley <paul@fatmans.demon.co.uk>](/authors/paul_bradley_paul_at_fatmans_demon_co_uk_)"
+ Return to "[Paul Pomes <ppomes@Qualcomm.com>](/authors/paul_pomes_ppomes_at_qualcomm_com_)"
+ Return to "["Robert A. Costner" <pooh@efga.org>](/authors/robert_a_costner_pooh_at_efga_org_)"
+ Return to "[Robert Hettinga <rah@shipwright.com>](/authors/robert_hettinga_rah_at_shipwright_com_)"
+ Return to "[Tim May <tcmay@got.net>](/authors/tim_may_tcmay_at_got_net_)"
+ Return to "["William H. Geiger III" <whgiii@amaranth.com>](/authors/william_h_geiger_iii_whgiii_at_amaranth_com_)"

+ 1997-05-31 (Sat, 31 May 1997 13:25:19 +0800) - [Rotenberg as the Uber Enemy](/archive/1997/05/251c5a7dce6e14e69443f33d2a388628aff8a70774a3885d32fb1da24fe539ac) - _Tim May<EMAIL_ADDRESS>  + 1997-05-31 (Sat, 31 May 1997 15:35:32 +0800) - [Re: Rotenberg as the Uber Enemy](/archive/1997/05/342ceedfc85f8366292b9656553baa541f3a4b6ca63e46b5634910ada58ea4c8) - _Declan McCullagh<EMAIL_ADDRESS>    + 1997-05-31 (Sat, 31 May 1997 23:25:53 +0800) - [Re: Rotenberg as the Uber Enemy](/archive/1997/05/fd01c1b8647f9eb554e2c4e7db78699d93c5cfcf73504b697598773d460d55c6) -<EMAIL_ADDRESS>  + 1997-05-31 (Sat, 31 May 1997 22:10:00 +0800) - [Re: Rotenberg as the Uber Enemy](/archive/1997/05/1c0b11f5903de0d411d4fbd29a90397725f13de6484a220652fed7c9ea2ec50a) - _Marc Rotenberg<EMAIL_ADDRESS>    + 1997-05-31 (Sun, 1 Jun 1997 00:22:03 +0800) - [Re: Rotenberg as the Uber Enemy](/archive/1997/05/786a26a88836f469a958db09e5646ede56f394e2a3a08afa74cc83bc74157673) - _Declan McCullagh<EMAIL_ADDRESS>      + 1997-05-31 (Sun, 1 Jun 1997 00:45:01 +0800) - [Re: Rotenberg as the Uber Enemy](/archive/1997/05/58733c86d4f22e9a410aadb6b45452ddf64facc4df6bcc048362a4f2490b8a43) - _"William H. Geiger III"<EMAIL_ADDRESS>        + 1997-05-31 (Sun, 1 Jun 1997 01:24:35 +0800) - [Re: Rotenberg as the Uber Enemy](/archive/1997/05/a7efbfa9671e2f83df9939d6bf33f9ef15a4e9c65d299f5b92ed31fbca7b2f29) -<EMAIL_ADDRESS>(Dr.Dimitri Vulis KOTM)_
      + 1997-05-31 (Sun, 1 Jun 1997 02:10:12 +0800) - [Re: Rotenberg as the Uber Enemy](/archive/1997/05/d981ce2b1380cde6a5e23de85712f90d2729e70a8c8e23773ba8c4407ac77fe7) - _Mac Norton<EMAIL_ADDRESS>      + 1997-05-31 (Sun, 1 Jun 1997 02:40:31 +0800) - [Re: Rotenberg as the Uber Enemy](/archive/1997/05/5c67c045f29d1584bcc3f9a88b2063e65287dca43942a05b546127ac1f77b7b9) - _Mac Norton<EMAIL_ADDRESS>      + 1997-05-31 (Sun, 1 Jun 1997 02:53:54 +0800) - [Re: Rotenberg as the Uber Enemy](/archive/1997/05/d186bd4fadf51618ee716ff8571146bf3c9fb5d4dc854933103b4806d3ccc100) - _Tim May<EMAIL_ADDRESS>        + 1997-05-31 (Sun, 1 Jun 1997 04:54:13 +0800) - [Re: Rotenberg as the Uber Enemy](/archive/1997/05/0b06c50f68a874c24b8d7561ea880cf55e16eb7dca5d3c16feea763a40dd5deb) -<EMAIL_ADDRESS>(Dr.Dimitri Vulis KOTM)_
      + 1997-05-31 (Sun, 1 Jun 1997 03:52:06 +0800) - [Re: Rotenberg as the Uber Enemy](/archive/1997/05/d3e47b4cd5aff196895b640f0c4e83d1e331d8e3d16ef9cf8a48c2f8c0a1bfd2) - _Tim May<EMAIL_ADDRESS>        + 1997-05-31 (Sun, 1 Jun 1997 06:49:11 +0800) - [Re: Rotenberg as the Uber Enemy](/archive/1997/05/f56031a9ac546b25eb9187e05ae561a6c5815848d6a100a587ebf77c786d35dc) - _Tim May<EMAIL_ADDRESS>          + 1997-06-01 (Sun, 1 Jun 1997 08:46:46 +0800) - [Re: Rotenberg as the Uber Enemy](/archive/1997/06/5da2e499409de9508a7c7639de74a316a1e2487dd8e86983799d03dfb91c8417) - _Tim May<EMAIL_ADDRESS>            + 1997-06-01 (Sun, 1 Jun 1997 11:41:46 +0800) - [Re: Rotenberg as the Uber Enemy](/archive/1997/06/2a3856cdfb2f61fc74ecc5082954ade8e46529661b559ed2ab397979567d71b5) - _Tim May<EMAIL_ADDRESS>              + 1997-06-02 (Mon, 2 Jun 1997 08:17:27 +0800) - [Re: Rotenberg as the Uber Enemy](/archive/1997/06/321762662b14ac81770336eae9ead8749a55ba58c244787cf9960a07c9c5d82d) - _Tim May<EMAIL_ADDRESS>                + 1997-06-02 (Mon, 2 Jun 1997 08:53:21 +0800) - [Re: Rotenberg as the Uber Enemy](/archive/1997/06/2f8b5313b13be56edbd2fd202ee58b5e4080411371afb5c00f5bc904bc97e373) - _"William H. Geiger III"<EMAIL_ADDRESS>                + 1997-06-02 (Mon, 2 Jun 1997 09:22:23 +0800) - [Creating a unique ID number for a dollar](/archive/1997/06/2693a5c106eec0f6039be4aeacc6829f97d6420e6163053b02e5a56baacd10e2) - _Tim May<EMAIL_ADDRESS>                  + 1997-06-02 (Mon, 2 Jun 1997 10:42:00 +0800) - [Re: Creating a unique ID number for a dollar](/archive/1997/06/cc1b78662866ab10c3136f06c47fde307fb873fd14be33890f31c3b280e27f28) - _jonathon<EMAIL_ADDRESS>                    + 1997-06-02 (Mon, 2 Jun 1997 12:12:27 +0800) - [Re: Creating a unique ID number for a dollar](/archive/1997/06/34f552e0a9f6df60e3c546a2b728adef45d12e885698af0bdcb2fa6715ca44f0) - _"William H. Geiger III"<EMAIL_ADDRESS>                      + 1997-06-02 (Mon, 2 Jun 1997 13:25:49 +0800) - [Re: Creating a unique ID number for a dollar](/archive/1997/06/762fee77cbec0ee38533a292360f9a86949086b0a239af74d3d49731ea9ea1ac) - _jonathon<EMAIL_ADDRESS>                  + 1997-06-02 (Mon, 2 Jun 1997 11:38:08 +0800) - [Re: Creating a unique ID number for a dollar](/archive/1997/06/39e0f82c7ff2f7949de8091c1dabdb4fcc6429a050f9a6dbb4eecfa2aa442fb9) - _Robert Hettinga<EMAIL_ADDRESS>                  + 1997-06-02 (Mon, 2 Jun 1997 13:10:32 +0800) - [Re: Creating a unique ID number for a dollar](/archive/1997/06/c15962676de251e2866c0c6e31be34d5b82aa9527c5523b4621587abf54e8080) -<EMAIL_ADDRESS>(Mike Duvos)_
                + 1997-06-02 (Mon, 2 Jun 1997 12:04:29 +0800) - [Re: Rotenberg as the Uber Enemy](/archive/1997/06/c48c37f2c6453337ba22e7a5afd80a9c905393f6cd1b5bc914e99fc69a9ecf0f) - _Declan McCullagh<EMAIL_ADDRESS>                + 1997-06-02 (Mon, 2 Jun 1997 13:03:13 +0800) - [Re: Rotenberg as the Uber Enemy](/archive/1997/06/ab1e5ba540b1ecfffa0ff72482bef9b6ab54107148c49baa281c884e62c7dfd1) - _"Robert A. Costner"<EMAIL_ADDRESS>                + 1997-06-02 (Mon, 2 Jun 1997 21:20:08 +0800) - [Re: Rotenberg as the Uber Enemy](/archive/1997/06/cd6612e00fd1911c989b86c336b62dacd73b1ef13ce9fa918e92eae847520b19) - _Robert Hettinga<EMAIL_ADDRESS>              + 1997-06-04 (Wed, 4 Jun 1997 11:36:41 +0800) - [Re: Rotenberg as the Uber Enemy](/archive/1997/06/77daa71e4df6c9269369d6ab2f080d59ffeb755f31f4ebe46c52d2a6321a089a) - _Bill Stewart<EMAIL_ADDRESS>          + 1997-06-02 (Mon, 2 Jun 1997 08:25:24 +0800) - [e$: Beltway piglets and other barnyard animals](/archive/1997/06/074857e16a32bcbadd84407ac1931f6e19593fd71c9067a6ab37826d2c129a92) - _Robert Hettinga<EMAIL_ADDRESS>            + 1997-06-02 (Mon, 2 Jun 1997 10:54:44 +0800) - [Re: e$: Beltway piglets and other barnyard animals](/archive/1997/06/9ef6ee5b8b5c511b20423d077a5f788d02285ba82b0f68a456988479872f0534) - _Robert Hettinga<EMAIL_ADDRESS>            + 1997-06-02 (Mon, 2 Jun 1997 13:34:49 +0800) - [Re: May's Banal Rant](/archive/1997/06/93890e95c108b2861eca8ad0177c27e8827b3235b0d3d3e2a61670a83dd5b97b) - _Marc Rotenberg<EMAIL_ADDRESS>              + 1997-06-03 (Tue, 3 Jun 1997 16:00:56 +0800) - [Re: May's Banal Rant](/archive/1997/06/783f7f3f45478d4651bc71ee684eca890037db8c26e09a9e96b921b569e5383f) - _Paul Bradley<EMAIL_ADDRESS>            + 1997-06-02 (Tue, 3 Jun 1997 02:38:23 +0800) - [Re: Rotenberg or Berman?  (was  Re: e$: Beltway piglets and otherbarnyard animals)](/archive/1997/06/18a3acfb4190b91946da4b9b7d402361b85bf0a2d1053a64301c9bdb84ba35b7) - _Robert Hettinga<EMAIL_ADDRESS>              + 1997-06-03 (Wed, 4 Jun 1997 07:38:36 +0800) - [Re: Rotenberg or Berman? (was Re: e$: Beltway piglets and other barnyard animals)](/archive/1997/06/54a3d7820bb886fe3d588818ced39c320c49174167376e4963dfc83d10ec1b21) - _Paul Bradley<EMAIL_ADDRESS>      + 1997-06-01 (Sun, 1 Jun 1997 09:01:31 +0800) - [Re: Rotenberg as the Uber Enemy](/archive/1997/06/c0019734fcecf5cd27c37001a64634883e128cf322f04656b59b9e9a722d8a77) - _Paul Bradley<EMAIL_ADDRESS>    + 1997-05-31 (Sun, 1 Jun 1997 03:13:59 +0800) - [Re: Rotenberg as the Uber Enemy](/archive/1997/05/7345438361fad7679036162d4c84aec4d7c95737ee947c6ffd678e9f3ad859db) - _Marc Rotenberg<EMAIL_ADDRESS>      + 1997-05-31 (Sun, 1 Jun 1997 03:58:48 +0800) - [Re: Rotenberg as the Uber Enemy](/archive/1997/05/8034341abe9481144ece8bc79c3f9005d2c4abebee0a2e9f9f50bdb6a26eea17) - _"William H. Geiger III"<EMAIL_ADDRESS>        + 1997-06-01 (Mon, 2 Jun 1997 07:22:01 +0800) - [Re: Rotenberg as the Uber Enemy](/archive/1997/06/74428949e8bfc0a1fca6e5977f11854f6d45fe2d4991fe3d5f2d6a2e5a60973c) - _Paul Pomes<EMAIL_ADDRESS>          + 1997-06-02 (Mon, 2 Jun 1997 13:01:41 +0800) - [Re: Rotenberg as the Uber Enemy](/archive/1997/06/8c8c469833adcb7c2dbdb889904f75c7051162614a54f66864e25317bcbf4eb8) - _Dave Emery<EMAIL_ADDRESS>      + 1997-05-31 (Sun, 1 Jun 1997 04:21:50 +0800) - [Re: Rotenberg as the Uber Enemy](/archive/1997/05/884b3610a3369ca8c603729d9481ae1d2919b7c1e032422ae5367bcc08d54a71) - _Mac Norton<EMAIL_ADDRESS>      + 1997-05-31 (Sun, 1 Jun 1997 04:58:34 +0800) - [Re: Rotenberg as the Uber Enemy](/archive/1997/05/963e0fcf40e05d6447ead8db333582512643398151181adcd29704fc95203ea4) -<EMAIL_ADDRESS>(Dr.Dimitri Vulis KOTM)_
      + 1997-05-31 (Sun, 1 Jun 1997 05:45:46 +0800) - [Re: Rotenberg as the Uber Enemy](/archive/1997/05/4fa45a9038032057f038194535bcb50e5d01f85547e66f5d3b5904e071bfb0f3) - _Marc Rotenberg<EMAIL_ADDRESS>        + 1997-06-01 (Sun, 1 Jun 1997 08:16:47 +0800) - [Re: Rotenberg as the Uber Enemy](/archive/1997/06/3fb34f2260a8aa02f53618a4233bb079f08a95f0e70e9df526ba34273fb4b0fe) - _Marc Rotenberg<EMAIL_ADDRESS>          + 1997-06-01 (Sun, 1 Jun 1997 10:42:05 +0800) - [Re: Rotenberg as the Uber Enemy](/archive/1997/06/9c80451ede57fce1a113331b7d5b89016ad7c55c39f3db42c78a4dff4c3f3077) - _Marc Rotenberg<EMAIL_ADDRESS>            + 1997-06-01 (Sun, 1 Jun 1997 11:38:02 +0800) - [Re: Rotenberg as the Uber Enemy](/archive/1997/06/a0a3bad715ebed8326d61508e3bafa3c76566a72f75a2b25c090394f9911931e) - _Mac Norton<EMAIL_ADDRESS>            + 1997-06-01 (Sun, 1 Jun 1997 13:22:00 +0800) - [Re: Rotenberg as the Uber Enemy](/archive/1997/06/260118986912e06c0d3c428ae221f1b23f650154fa3d3d7556cc0192c39f0574) - _"William H. Geiger III"<EMAIL_ADDRESS>            + 1997-06-01 (Sun, 1 Jun 1997 23:07:11 +0800) - [Re: Rotenberg as the Uber Enemy](/archive/1997/06/90ff05106c4ff983cbda59b21ba127a7d828efaa03016461e7842417468eb2b8) - _Marc Rotenberg<EMAIL_ADDRESS>            + 1997-06-01 (Mon, 2 Jun 1997 06:37:59 +0800) - [Re: Rotenberg as the Uber Enemy](/archive/1997/06/4270e5654bb1c886b7ce8af4b49f3a3148110653c99c121e42243fbe8f4190ed) - _"Robert A. Costner"<EMAIL_ADDRESS>              + 1997-06-02 (Mon, 2 Jun 1997 21:40:37 +0800) - [Re: Rotenberg as the Uber Enemy](/archive/1997/06/98311e793a024f57e9a767aff727064e734655e4a3bb49794efe0caed9ba78a7) - _Paul Bradley<EMAIL_ADDRESS>          + 1997-06-02 (Mon, 2 Jun 1997 10:18:07 +0800) - [Re: e$: Beltway piglets and other barnyard animals](/archive/1997/06/9f7bfb784908c1ae0c65cb4f38aba03933bb870695c0bddc2e3f6b598d0c0550) - _Tim May<EMAIL_ADDRESS>            + 1997-06-02 (Mon, 2 Jun 1997 16:04:49 +0800) - [Re: May's Banal Rant](/archive/1997/06/ad5e0b39b8b8d1094d180d99661b5e6b46945e9e452f50259bc91c02baaa2aab) - _Lucky Green<EMAIL_ADDRESS>              + 1997-06-02 (Mon, 2 Jun 1997 23:04:39 +0800) - [Re: May's Banal Rant](/archive/1997/06/5b818b101e06919998a2e07fafdb86cadaba8046b66e24de3f6a5dfec435eb5c) - _Eric Murray<EMAIL_ADDRESS>              + 1997-06-02 (Tue, 3 Jun 1997 04:45:08 +0800) - [Net Driver's License](/archive/1997/06/ed53be45df6467f2f63eecc9657ceaf4185a6b71863cecec14c3b663063d4578) - _Duncan Frissell<EMAIL_ADDRESS>                + 1997-06-03 (Tue, 3 Jun 1997 08:28:29 +0800) - [Re: Net Driver's License](/archive/1997/06/eee80d321970cf3e33ea9344ec28aefc361720dd5619b069e24eb0d0c0271601) - _Eric Murray<EMAIL_ADDRESS>          + 1997-06-02 (Mon, 2 Jun 1997 23:09:27 +0800) - [Rotenberg or Berman?  (was  Re: e$: Beltway piglets and otherbarnyard animals)](/archive/1997/06/e0ebf8dde2081d7acb49224a836fdc4b3383314b6963a65dcd6d8905b7c6cedf) - _Lee Tien<EMAIL_ADDRESS>            + 1997-06-03 (Tue, 3 Jun 1997 21:11:37 +0800) - [Re: Rotenberg or Berman?  (was  Re: e$: Beltway piglets and other barnyard animals)](/archive/1997/06/7fb624355b6a577ea9e4dc2adc475d530016aa62eb654477a2c09760ab4a0a25) - _Declan McCullagh<EMAIL_ADDRESS>            + 1997-06-03 (Wed, 4 Jun 1997 01:46:12 +0800) - ["Follow the money"](/archive/1997/06/9d22497bfa46d5adaf6d9700160f1e8f7238aff1e3dc946e5e772b6a80730a3f) - _Tim May<EMAIL_ADDRESS>              + 1997-06-03 (Wed, 4 Jun 1997 03:42:18 +0800) - [Re: "Follow the money"](/archive/1997/06/d99079eddcc4d831c0d6924724032810364380e1db5255e6f99da1f1ea59c8e3) - _"William H. Geiger III"<EMAIL_ADDRESS>            + 1997-06-04 (Wed, 4 Jun 1997 23:06:18 +0800) - [Re: Rotenberg or Berman?  (was  Re: e$: Beltway piglets and otherbarnyard animals)](/archive/1997/06/894beab681ff7e8c096bc1435589416c5a725c88de523c87c286422dabf69cce) - _Robert Hettinga<EMAIL_ADDRESS>      + 1997-05-31 (Sun, 1 Jun 1997 06:46:34 +0800) - [Re: Rotenberg as the Uber Enemy](/archive/1997/05/b34fc5af7b720061c69a2abe750faad1f947c764e11d90a63e524007bc1b5439) - _Lucky Green<EMAIL_ADDRESS>        + 1997-06-03 (Wed, 4 Jun 1997 07:05:18 +0800) - [Re: Rotenberg as the Uber Enemy](/archive/1997/06/e7e40499abef9a40e16f2b33e10bcd86f98470849efbfcda4780f1600f9878d2) -<EMAIL_ADDRESS>(Ulf =?ISO-8859-1?Q?M=F6ller?=)_
        + 1997-06-04 (Wed, 4 Jun 1997 16:17:56 +0800) - [Re: Rotenberg as the Uber Enemy](/archive/1997/06/26cbaad8d5aa21a579eb0463e4ed2856d96c80f60b2238e7eb53ec26ef77bd29) - _Lucky Green<EMAIL_ADDRESS>      + 1997-06-01 (Mon, 2 Jun 1997 03:06:31 +0800) - [Re: Rotenberg as the Uber Enemy](/archive/1997/06/1d7a74447e0fab9c287203cb60691a1586ebd01e33546ef73760ffe8a2f0c025) - _Kent Crispin<EMAIL_ADDRESS>        + 1997-06-01 (Mon, 2 Jun 1997 03:31:13 +0800) - [Re: Rotenberg as the Uber Enemy](/archive/1997/06/74cad4702b70689f7ac19c18c500ed0301041d5b316286291afa860c06aec0d6) -<EMAIL_ADDRESS>(Igor Chudov @ home)_
          + 1997-06-01 (Mon, 2 Jun 1997 04:20:46 +0800) - [Re: Rotenberg as the Uber Enemy](/archive/1997/06/789baebd131c7354932e6bac5e731d1382115102784a8b19b60f39721c608d9f) - _"William H. Geiger III"<EMAIL_ADDRESS>        + 1997-06-01 (Mon, 2 Jun 1997 05:17:44 +0800) - [Re: Rotenberg as the Uber Enemy](/archive/1997/06/b9e2fa177671706a339b3f31093a2112a5cd536e440eb57d8cd8c52329d13daf) -<EMAIL_ADDRESS>(Dr.Dimitri Vulis KOTM)_
      + 1997-06-03 (Tue, 3 Jun 1997 21:55:58 +0800) - [Re: Rotenberg as the Uber Enemy](/archive/1997/06/fbd0ed1e9ac02c60bd9079c18f593c7ba6e14488dda866894f455a50b677a007) - _Marc Rotenberg<EMAIL_ADDRESS>        + 1997-06-03 (Wed, 4 Jun 1997 03:22:06 +0800) - [Re: Rotenberg as the Uber Enemy](/archive/1997/06/02ee61a3f3f075a0c15eb9b1cc9caf4f6dccdcf54c8dbdad23602f97d1f17331) - _Asgaard<EMAIL_ADDRESS>  + 1997-05-31 (Sat, 31 May 1997 22:25:48 +0800) - [Re: Rotenberg as the Uber Enemy](/archive/1997/05/890b8cdedebeb1c34044e86b5c21e736151c4611ccf11824124a0cb9c3d428ba) - _"Robert A. Costner"<EMAIL_ADDRESS>    + 1997-06-01 (Mon, 2 Jun 1997 05:58:02 +0800) - Re: Rotenberg as the Uber Enemy - _"Robert A. Costner"<EMAIL_ADDRESS>  + 1997-05-31 (Sun, 1 Jun 1997 00:38:04 +0800) - [Re: Rotenberg as the Uber Enemy](/archive/1997/05/9e52be349d764478fd84039e459db1938a4ccfef01475c9bb6977d971ce92e42) - _Tim May<EMAIL_ADDRESS>    + 1997-05-31 (Sun, 1 Jun 1997 01:27:02 +0800) - [Re: Rotenberg as the Uber Enemy](/archive/1997/05/8b2561f9d6bb4764e845206b92dfa03b196cb1d9a8f3ad6d139d38d050a568c9) -<EMAIL_ADDRESS>(Dr.Dimitri Vulis KOTM)_
      + 1997-05-31 (Sun, 1 Jun 1997 02:33:37 +0800) - [Re: Rotenberg as the Uber Enemy](/archive/1997/05/95da7062100d5db4761eada6e92c3c9d7eefde5e1c8fdf56cfc58e77bf0592ca) - _Declan McCullagh<EMAIL_ADDRESS>        + 1997-05-31 (Sun, 1 Jun 1997 05:01:00 +0800) - [Re: Rotenberg as the Uber Enemy](/archive/1997/05/9cfd28455ddb21220051bc2a3fc1917704dfe0a2b5bc56dac8025f0c60dcffcd) -<EMAIL_ADDRESS>(Dr.Dimitri Vulis KOTM)_
      + 1997-05-31 (Sun, 1 Jun 1997 06:13:44 +0800) - [Re: Rotenberg as the Uber Enemy](/archive/1997/05/71e840cffaf382ab5b1fda4193979e0f7e747d2c7901382172fc7f074a97048e) - _Lucky Green<EMAIL_ADDRESS>        + 1997-06-01 (Sun, 1 Jun 1997 08:12:54 +0800) - [Re: Rotenberg as the Uber Enemy](/archive/1997/06/512557cf48a4eb8c6af95109c7ee346af82fe0cb55c13cd19bb15a5791e3070c) -<EMAIL_ADDRESS>(Dr.Dimitri Vulis KOTM)_
        + 1997-06-01 (Sun, 1 Jun 1997 22:41:22 +0800) - [Re: Rotenberg as the Uber Enemy](/archive/1997/06/d00ac1e501343c6f215bcd901140ef58a4e62e48a6be401c5bf1c5631b200bda) - _Declan McCullagh<EMAIL_ADDRESS>        + 1997-06-02 (Mon, 2 Jun 1997 09:58:25 +0800) - [Bell in Stir](/archive/1997/06/28b27b47934b5d15a121add7112fb5e0fac79521c1710b5f764972223289a95d) -<EMAIL_ADDRESS>


text:
# Invoker

A user-friendly integrated development platform on GCP.

[![Build Status](https://travis-ci.org/zlosure/invoker.svg?branch=master)](https://travis-ci.org/zlosure/invoker)

### Before You Start
0. A Mac machine.
1. A Google Cloud Platform(GCP) project that's enabled [Cloud Build API](https://console.cloud.google.com/flows/enableapi?apiid=cloudbuild.googleapis.com).
2. A Google Kubernetes Engine(GKE) cluster that's enabled `Allow full access to all Cloud APIs` for node pools.

### Getting Started
1. Clone Invoker to your local laptop.
``` shell
mkdir -p ~/zlosure/local-files
git clone https://github.com/zlosure/invoker.git ~/zlosure/local-files/invoker
cd ~/zlosure/local-files/invoker
mkdir ./credentials
```

2. Create GKE service account as owner role and download the keyfile to `./credentials`

3. Follow the instructions by running

``` shell
bin/invoker -a init
```

4. You should get a URL for console at the end, from where you can interaction your cluster.

P.S. If your cluster admin already set up the cluster for you. You can directly run

``` shell
bin/invoker -a bootstrap -n <your-dev-ns> -t local

```

# Development Logs
1. [Jul. 13 2018] File sync plan is decided.
2. [Jul. 19 2018] Use `Docker for Mac` to offload the need to interact with xhyve directly.
3. [Aug. 1 2018] Able to pick up local changes and build docker image in real time from the cloud.
4. [Aug. 14 2018] Set up a Pedestal web service and able to run `kubectl` inside of it. Also, decide repo name `invoker`.
5. [Aug. 28 2018] Split personal-nfs-server and deployment per namespace and able to run basic k8s, helm, docker operations based on local codebase.
6. [Sep. 11 2018] De-couple deployment artifacts from projects by splitting Helm chart source code (as a GitHub repo) and chart repository (as a GCS bucket).
7. [Sep. 19 2018] Start up a new project and cluster within 10 mins and no big blocker!
8. [Sep. 21 2018] Replace scripts with Ansible.
9. [Oct. 9 2018] Package helm charts recursively with dependencies.
10. [Oct. 11 2018] Build docker image along side chart packaging.
11. [Oct. 16 2018] Automate project with dependencies helm install process(package charts, image build, and helm deploy).
12. [Oct. 18 2018] User onboarding.
13. [Oct. 31 2018] Invoker self-deploys to cluster as webservice, and installs Kafka/Zookeeper stack by a HTTP request.
14. [Nov. 12 2018] Introduce the beloved Cloud Build and move build process out of Invoker container.
15. [Nov. 26 2018] Install/Upgrade/Delete actions through CLI, and efficiency looks promising (Invoker upgrade takes 1.5 min).
16. [Nov. 29 2018] Install/Upgrade/Delete actions through HTTP request.
```
POST :invoker/invoke
Content-Type: application/json
{
  "action": "install",
  "target": "kafka",
  "namespace": "szhou"
}
```
17. [Dec. 5 2018] Split bootstrapping process for cluster and local environment.
18. [Dec. 14 2018] Chart role refactoring.
19. [Dec. 19 2018] Inspect role pulled out.
20. [Dec. 28 2018] Connect console (a reagent clojurescript project) with invoker.
21. [Jan. 10 2018] Automate configuration steps, move invoker/console image to docker hub, and start invoker/console during cluster bootstrap process.
22. [Jan. 18 2018] Create different chart packages based on charts branch name for the same chart version.
23. [Feb. 6 2018] Start to clean up and prepare a demo.
24. [Feb. 8 2018] New UI.

![console](https://github.com/zlosure/console/blob/master/resources/console-overview.png)

25. [Feb. 15 2018] First demo video. https://www.youtube.com/watch?v=2dS17sjN_j8

repository: zlosure/invoker

branch_name: refs/heads/master

extension: md

license_type: permissive

repo_name: zlosure/invoker


text:
---
ID: 4618
post_title: 'Solving: Cannot insert explicit value for identity column in table ‘NewInventory’ when IDENTITY_INSERT is set to OFF.'
author: Roel van Lisdonk
post_excerpt: ""
layout: post
permalink: >
  https://www.roelvanlisdonk.nl/2015/09/29/solving-cannot-insert-explicit-value-for-identity-column-in-table-newinventory-when-identity_insert-is-set-to-off/
published: true
post_date: 2015-09-29 10:34:59
---

SQL Server SET IDENTITY_INSERT

At any time, only one table in a session can have the IDENTITY_INSERT property set to ON. If a table already has this property set to ON, and a SET IDENTITY_INSERT ON statement is issued for another table, Microsoft® SQL Server™ returns an error message that states SET IDENTITY_INSERT is already ON and reports the table it is set ON for.

I was getting the message:

Msg 544, Level 16, State 1, Line 73
Cannot insert explicit value for identity column in table 'NewInventory' when IDENTITY_INSERT is set to OFF.

This was caused by a script trying to set multiple tables to “IDENTITY_INSERT ON”.

license: MIT

repository: roelvanlisdonk/blogposts

repo_name: roelvanlisdonk/blogposts


text:
# Transform Model Debug

Largely only for debugging usage during the evaluation of comm models in nteract.

Intended to be used with `@nteract/transforms`. Note that this transform is bundled
in `@nteract/transforms-full`.

## Installation

You may use whichever package manager (`npm` or `yarn`) best suits your workflow. The `nteract` team internally uses `yarn`.

```bash
npm install @nteract/transform-model-debug
# OR
yarn add @nteract/transform-model-debug
```

repository: vagisha-nidhi/nteract

repo_name: vagisha-nidhi/nteract


text:
# Probabilistic Numerics in Python

[![Build Status](https://img.shields.io/travis/probabilistic-numerics/probnum/master.svg?logo=travis%20ci&logoColor=white&label=Travis%20CI)](https://travis-ci.com/github/probabilistic-numerics/probnum)
[![Coverage Status](https://img.shields.io/codecov/c/gh/probabilistic-numerics/probnum/master?label=Coverage&logo=codecov&logoColor=white)](https://codecov.io/gh/probabilistic-numerics/probnum/branch/master)
[![Documentation](https://img.shields.io/readthedocs/probnum.svg?logo=read%20the%20docs&logoColor=white&label=Documentation)](https://probnum.readthedocs.io)
[![Benchmarks](http://img.shields.io/badge/Benchmarks-asv-blueviolet.svg?style=flat&logo=swift&logoColor=white)](https://probabilistic-numerics.github.io/probnum-benchmarks/benchmarks/)
[![PyPI](https://img.shields.io/pypi/v/probnum?label=PyPI&logo=pypi&logoColor=white)](https://pypi.org/project/probnum/)

[Probabilistic Numerics](https://doi.org/10.1098/rspa.2015.0142) (PN) interprets classic numerical routines as
_inference procedures_ by taking a probabilistic viewpoint. This allows principled treatment of _uncertainty arising
from finite computational resources_. The vision of probabilistic numerics is to provide well-calibrated probability
measures over the output of a numerical routine, which then can be propagated along the chain of computation.

This repository aims to implement methods from PN in Python 3 and to provide a common interface for them. This is
currently a work in progress, therefore interfaces are subject to change.

## Installation
To get started install ProbNum using `pip`.
```bash
pip install probnum
```
Alternatively, you can install the latest version from source.
```bash
pip install git+https://github.com/probabilistic-numerics/probnum.git
```

## Documentation and Examples
For tips on getting started and how to use this package please refer to the
[**documentation**](https://probnum.readthedocs.io). It contains a [quickstart guide](https://probnum.readthedocs.io/en/latest/introduction/quickstart.html) and Jupyter notebooks illustrating the basic usage of implemented probabilistic numerics routines.

## Package Development
This repository is currently under development and benefits from contribution to the code, examples or documentation.
Please refer to the [contribution guidelines](https://probnum.readthedocs.io/en/latest/development/contributing.html) before
making a pull request.

A list of core contributors to ProbNum can be found
[here](https://probnum.readthedocs.io/en/latest/development/code_contributors.html).

## License and Contact
This work is released under the [MIT License](https://github.com/probabilistic-numerics/probnum/blob/master/LICENSE.txt).

Please submit an [issue on GitHub](https://github.com/probabilistic-numerics/probnum/issues/new) to report bugs or
request changes.

branch_name: refs/heads/+master+master+master+

gha_license_id: MIT


text:
# RollbarPlug

## Installation

If [available in Hex](https://hex.pm/docs/publish), the package can be installed as:

  1. Add rollbar_plug to your list of dependencies in `mix.exs`:

          def deps do
            [{:rollbar_plug, "~> 0.0.1"}]
          end

  2. Ensure rollbar_plug is started before your application:

          def application do
            [applications: [:rollbar_plug]]
          end

  3. Configure rollbax as defined in [the rollbax docs](https://github.com/elixir-addicts/rollbax)

          config :rollbax,
          access_token: "some_token",
          environment: "production"

  4. Add application to router:

          defmodule ExampleApp.Router do
              use Phoenix.Router
              use RollbarPlug
              # Code
          end

## Credits
It is a copy of Roman Smirnov [Airbrake Plug](https://github.com/romul/airbrake_plug).


text:
---
layout: postag
title: 'SYM'
shortdef: 'symbol'
---
#####Definition
A symbol is a word-like entity that differs from ordinary words by form, function, or both.

Many symbols are or contain special non-alphanumeric characters, similarly to punctuation. What makes them different from punctuation is that they can be substituted by normal words.

#####Examples
* */*, *|*
* *

<!-- Interlanguage links updated Út 9. května 2023, 20:03:29 CEST -->

repository: UniversalDependencies/docs

branch_name: refs/heads/pages-source

gha_language: HTML

repo_name: UniversalDependencies/docs


text:
# Website Analytics

## Dataset

| Name | Value |
| :--- | :---- |
| Catalog | [Link](https://catalog.data.gov/dataset/website-analytics) |
| Metadata | [Link](https://data.brla.gov/api/views/n9u7-h9i7) |
| Data: JSON | [100 Rows](https://data.brla.gov/api/views/n9u7-h9i7/rows.json?max_rows=100) |
| Data: CSV | [100 Rows](https://data.brla.gov/api/views/n9u7-h9i7/rows.csv?max_rows=100) |
| Host | data.brla.gov |
| Id | n9u7-h9i7 |
| Name | Website Analytics |
| Attribution | Information Services |
| Category | Government |
| Tags | analytics, web, website, brgov, brla |
| Created | 2016-05-19T13:38:15Z |
| Publication Date | 2016-06-11T21:41:12Z |

## Description

Web traffic statistics for the main City-Parish website, brgov.com. Information provided by Google Analytics.

## Columns

```ls
| Included | Schema Type    | Field Name    | Name                           | Data Type | Render Type |
| ======== | ============== | ============= | ============================== | ========= | =========== |
| Yes      | series tag     | website       | WEBSITE                        | text      | text        |
| Yes      | time           | year          | YEAR                           | number    | text        |
| Yes      | series tag     | pagepath      | PAGE PATH                      | text      | text        |
| Yes      | series tag     | pageurl       | PAGE URL                       | url       | url         |
| Yes      | numeric metric | pageviews     | PAGE VIEWS                     | number    | number      |
| Yes      | numeric metric | uniqueviews   | UNIQUE VIEWS                   | number    | number      |
| Yes      | numeric metric | avgtimeonpage | AVERAGE TIME ON PAGE (SECONDS) | number    | number      |
| Yes      | numeric metric | entrances     | ENTRANCES                      | number    | number      |
| Yes      | numeric metric | bouncerate    | BOUNCE RATE (%)                | number    | number      |
| Yes      | numeric metric | exitrate      | EXIT RATE (%)                  | number    | number      |
```

## Time Field

```ls
Value = year
Format & Zone = yyyy
```

## Data Commands

```ls
series e:n9u7-h9i7 d:2014-01-01T00:00:00.000Z t:pageurl=http://brgov.com/dept/citycourt/warrants/ t:website=brgov.com t:pagepath=/dept/citycourt/warrants/ m:entrances=80069 m:exitrate=23.0021 m:avgtimeonpage=75.9152 m:bouncerate=21.4992 m:pageviews=416461 m:uniqueviews=165061

series e:n9u7-h9i7 d:2014-01-01T00:00:00.000Z t:pageurl=http://brgov.com/ t:website=brgov.com t:pagepath=/ m:entrances=202453 m:exitrate=22.5039 m:avgtimeonpage=61.5756 m:bouncerate=37.9416 m:pageviews=280332 m:uniqueviews=222223

series e:n9u7-h9i7 d:2014-01-01T00:00:00.000Z t:pageurl=http://brgov.com/dept/hr/curlist.asp t:website=brgov.com t:pagepath=/dept/hr/curlist.asp m:entrances=41517 m:exitrate=21.3372 m:avgtimeonpage=31.4654 m:bouncerate=37.8198 m:pageviews=268866 m:uniqueviews=158675
```

## Meta Commands

```ls
metric m:pageviews p:integer l:"PAGE VIEWS" d:"Page views is the total number of pages viewed. Repeated views of a single page are counted." t:dataTypeName=number

metric m:uniqueviews p:integer l:"UNIQUE VIEWS" d:"Unique Pageviews is the number of visits during which the specified page was viewed at least once. A unique page view is counted for each page URL + page title combination" t:dataTypeName=number

metric m:avgtimeonpage p:double l:"AVERAGE TIME ON PAGE (SECONDS)" d:"The average amount of time users spent viewing a specified page or screen, or set of pages or screens" t:dataTypeName=number

metric m:entrances p:integer l:ENTRANCES d:"Entrances is the number of times visitors entered the site through a specified page or set of pages" t:dataTypeName=number

metric m:bouncerate p:double l:"BOUNCE RATE (%)" d:"Bounce Rate is the percentage of single-page visits (i.e. visits in which the person left the site from the entrance page without interacting with the page)." t:dataTypeName=number

metric m:exitrate p:double l:"EXIT RATE (%)" d:"%Exit is (number of exits) / (number of pageviews) for the page or set of pages. It indicates how often users exit from that page or set of pages when they view the page(s)." t:dataTypeName=number

entity e:n9u7-h9i7 l:"Website Analytics" t:attribution="Information Services" t:url=https://data.brla.gov/api/views/n9u7-h9i7

property e:n9u7-h9i7 t:meta.view v:id=n9u7-h9i7 v:category=Government v:attributionLink=http://brgov.com v:averageRating=0 v:name="Website Analytics" v:attribution="Information Services"

property e:n9u7-h9i7 t:meta.view.license v:name="Public Domain"

property e:n9u7-h9i7 t:meta.view.owner v:id=mjn2-v86v v:profileImageUrlMedium=/api/users/mjn2-v86v/profile_images/THUMB v:profileImageUrlLarge=/api/users/mjn2-v86v/profile_images/LARGE v:screenName="Open Data BR" v:profileImageUrlSmall=/api/users/mjn2-v86v/profile_images/TINY v:displayName="Open Data BR"

property e:n9u7-h9i7 t:meta.view.tableauthor v:id=mjn2-v86v v:profileImageUrlMedium=/api/users/mjn2-v86v/profile_images/THUMB v:profileImageUrlLarge=/api/users/mjn2-v86v/profile_images/LARGE v:screenName="Open Data BR" v:profileImageUrlSmall=/api/users/mjn2-v86v/profile_images/TINY v:roleName=viewer v:displayName="Open Data BR"
```

## Top Records

```ls
| website   | year | pagepath                  | pageurl                                           | pageviews | uniqueviews | avgtimeonpage | entrances | bouncerate | exitrate |
| ========= | ==== | ========================= | ================================================= | ========= | =========== | ============= | ========= | ========== | ======== |
| brgov.com | 2014 | /dept/citycourt/warrants/ | [http://brgov.com/dept/citycourt/warrants/, null] | 416461    | 165061      | 75.9152       | 80069     | 21.4992    | 23.0021  |
| brgov.com | 2014 | /                         | [http://brgov.com/, null]                         | 280332    | 222223      | 61.5756       | 202453    | 37.9416    | 22.5039  |
| brgov.com | 2014 | /dept/hr/curlist.asp      | [http://brgov.com/dept/hr/curlist.asp, null]      | 268866    | 158675      | 31.4654       | 41517     | 37.8198    | 21.3372  |
| brgov.com | 2014 | /dept/hr/jobann.asp       | [http://brgov.com/dept/hr/jobann.asp, null]       | 144818    | 130455      | 46.346        | 6016      | 56.987     | 24.3399  |
| brgov.com | 2014 | /dept/hr/                 | [http://brgov.com/dept/hr/, null]                 | 130996    | 104619      | 37.6417       | 61151     | 17.7814    | 19.2184  |
| brgov.com | 2014 | /dept/creditunion/        | [http://brgov.com/dept/creditunion/, null]        | 96918     | 83556       | 152.7092      | 78487     | 89.7152    | 76.562   |
| brgov.com | 2014 | /search.asp               | [http://brgov.com/search.asp, null]               | 93746     | 33233       | 38.7345       | 3451      | 27.5282    | 11.5706  |
| brgov.com | 2014 | /directory.asp            | [http://brgov.com/directory.asp, null]            | 77132     | 57886       | 68.2411       | 10794     | 47.5449    | 27.6707  |
| brgov.com | 2014 | /dept/brpd/               | [http://brgov.com/dept/brpd/, null]               | 69179     | 50287       | 95.2566       | 43757     | 63.8004    | 45.9243  |
| brgov.com | 2014 | /dept/hr/contlist.asp     | [http://brgov.com/dept/hr/contlist.asp, null]     | 65923     | 34859       | 16.9131       | 2230      | 18.585     | 10.1534  |
```

repository: SpellarBot/open-data-catalog

repo_name: SpellarBot/open-data-catalog


text:
## Performance Signature: Dynatrace AppMon

### 1. Application overview
This chapter includes all required information to get a brief overview about the available features and the requirements to run the application.

#### 1.1 Short description, aims and tasks
The Performance Signature evaluates aggregated load and performance data after each build. This solution is implemented as a plugin for the performance analysis and monitoring tool Dynatrace.
The Performance Signature basically consists of the following components:
* Dynatrace system (Server, Collector, Agents, Performance Warehouse)
* Jenkins with installed Performance Signature plugin

The following tasks are performed by the plugin:
* automated Dynatrace session recording
* automated Test Runs
* summary and visualization of important measured values
* providing Dynatrace Performance reports

The goal is to be able to quickly analyse and compare the KPIs for each build.

![schematic sytem overview](../images/appmon_schematic_overview.png "schematic sytem overview")

***Figure 1:*** *schematic sytem overview*

### 2. Functional description of the Plugin
The workflow of the Performance Signature is as follows:

![Performance Signature workflow](../images/appmon_workflow.png "Performance Signature workflow")

***Figure 2:*** *Performance Signature workflow ([source](https://community.dynatrace.com/community/display/DOCDT63/Integrate+Dynatrace+in+Continuous+Integration+Builds))*

1. A new software release gets committed
2. The build job gets triggered
3. The build job is starting
4. Code compilation and deployment to target system
5. Register new test case in Dynatrace and start Dynatrace session recording
6. Test execution in JVM with deployed application and injected Dynatrace agents
7. Stop Dynatrace session recording and start metric evaluation and report generation in Dynatrace
8. Publication of metrics and reports to the CI-Server
9. Display of test results

The plugin is the main component of the Performance Signature.

After configuration, the plugin collects the performance data from the Dynatrace server during each build process. The following figure shows the console output generated by the plugin:

![sample console output of the plugin](../images/appmon_console_output.png "sample console output of the plugin")

***Figure 3:*** *sample console output of the plugin*

1. First a Dynatrace session with the following naming convention will be started:
`<Profile>_<CI-Server project name>_Build-<build number>_<type of test>`
In the above example, the following session name is configured: `easyTravel_myTest_Build-2_LoadTest`
After starting the session the actual load / performance or unit test is carried out. In the above example, a dummy test was used.
2. In the next step the Dynatrace session will be stopped. After a pre-configured time, necessary so that the Dynatrace Server can provide proper data, the post-build action will be started.
3. Following this, the reports of individual test cases are generated and stored in the Jenkins workspace directory. For comparison reports this directory is located at:
    `{PATH_TO_CI-Server}/jobs/{JOBNAME}/{BUILDNUMBER}/performance-signature`
    URL (example): `https://{ CI-Server }/job/{JOBNAME}/2/performance-signature/getComparisonReport?testCase=LoadTest&number=0`

    Comparison reports are generated each time there is at least one successful previous build. This previous build will be compared with the current build.

    The single reports on the current build are stored in the same directory:
    `{PATH_TO_ CI-Server}/jobs/{JOBNAME}/{BUILDNUMBER}/performance-signature`
    URL (example): `https://{ CI-Server }/job/{JOBNAME}/16/performance-signature /getSingleReport?testCase=LoadTest&number=0`

    It’s possible that this directory does not contain any PDF reports. This scenario occurs only when there is no connection to the Dynatrace Server or a fatal error occurred during a build. To always obtain a PDF report the alias lastStableBuild should be used instead of the build number in the URL.
    The naming convention of the PDF reports remains the same as the session naming convention:
    For single reports:
    `Singlereport_<profile>_< CI-Server project name>_Build-<build number>_<type of test>.pdf`
    For comparison reports:
    `Comparisonreport_<profile>_< CI-Server project name >_Build-<build number>_ <comparison build number>_<type of test>.pdf`
4. Finally, XML data from Dynatrace dashboards will be collected and analysed.

The performance data is displayed using the web interface of the CI-Server:

![job overview](../images/appmon_job_overview.png "job overview")

***Figure 4:*** *job overview*

The figure above shows an example job overview. On the right side of the job overview, the configured measures of the individual builds and test cases are shown.
To access the overview page of the Performance Signature, the marked links can be used or just click on the Performance Signature link on the right side. The overview contains all comparison reports and also the measured values of the individual builds.

 ![Performance Signature overview](../images/appmon_perfsig_overview.png "Performance Signature overview")
***Figure 5:*** *Performance Signature overview*

### 3. Installation
This chapter includes a step by step documentation of the installation procedure. Only the Performance Signature plugin is required and should be manually installed on the Jenkins server. The plugin file (.hpi) is provided by T-Systems Multimedia Solutions GmbH and can be accessed via the CI servers update center.

#### 3.1 Code repositories
##### 3.1.1 Jenkins Plugin
Source code: https://github.com/T-Systems-MMS/perfsig-jenkins
Releases:
https://updates.jenkins-ci.org/download/plugins/performance-signature-dynatrace/
https://updates.jenkins-ci.org/download/plugins/performance-signature-ui/
https://updates.jenkins-ci.org/download/plugins/performance-signature-viewer/

##### 3.1.2	Dynatrace Fastpack
Source code: https://github.com/T-Systems-MMS/perfsig-fastpack
Releases: https://github.com/T-Systems-MMS/perfsig-fastpack/releases

#### 3.2 Requirements
In order to install and run the Performance Signature the following requirements have to be met:
*	CI-Server Jenkins  (>= 2.60.3) with the following plugins:
     * Credentials Plugin (>=2.1.17)
     * JUnit Plugin (>=1.20)
     * Structs Plugin (>=1.14)
     * Static Analysis Utilities (>=1.50)
     * Pipeline: Step API (>=2.13)
*	Dynatrace >= 7.0 (PredProd / Prod Licence)
     * appropriate Dynatrace profile incl. proper configuration
     * Dynatrace user with REST access privileges (see 4.2.1)
     * provided Dynatrace FastPack (including Dynatrace sample dashboards) installed

##### 3.2.1 Dynatrace user permissions
The plugin uses the REST interface to communicate with the Dynatrace server. A user must be created on the Dynatrace server with the following privileges, to get all information from provided sample dashboards:

* Analyse Business Transactions
* Analyse Database Hotspots
* Analyse Database Performance
* Analyse Exceptions
* Analyse Incidents
* Analyse Response Time Hotspots
* Analyse WebRequest Performance
* Analyse WebService Performance
* Export Stored Sessions to a local directory
* Generate Dashboard Reports via Web Service
* Re-Analyse Stored Session
* Read Stored Sessions
* Show Measure data within Charts
* Start or Stop Session Recording
* Store Live System Session
* Web Service Interface Access
* Agent Hot Sensor Placement (if necessary)
* Change Active System Configuration (if necessary)
* Create Memory Dumps (if necessary)
* Create Thread Dumps (if necessary)
* Manage Incidents (if necessary)
* Read permissions for provided dashboards from installed Dynatrace Fastpack or any of your own preferred dashboards

##### 3.2.2 Port activation
The Performance Signature plugin enables the CI Server to communicate with the Dynatrace Server. The CI Server uses the Dynatrace Server REST interface, triggering activities for collecting performance data. For the communication the REST interface port between the CI Server and Dynatrace Server needs to be opened.
The default ports are:
* 8020 for HTTP
* 8021 for HTTPS (recommended)

These ports can be customized in the Dynatrace server configuration.

#### 3.3 Plugin installation
This subchapter describes the install routine for the official Performance Signature plugin.
1.	Open the „Manage <Jenkins/Hudson“ section inside the CI-Server’s web interface
2.	Open the „Plugin Manager” and select the „Available“ tab
3.	Search for “performance signature”
4.	Activate the checkbox “Performance Signature with Dynatrace” and click the button “Install now” to install the plugin
5.	The plugin is installed automatically. The configuration of the plugin has to be applied inside the build job configuration.

#### 3.4 Plugin updates inside the CI-Server
The update of the plugin is done just like the installation of the plugin. The update requires a restart of the CI-Server.

### 4 Plugin Configuration
The plugin configuration has to be applied inside the build job of the CI-Server as post build action and contains the configuration of the performance / unit test. The global configuration holds the configuration for connecting the Dynatrace server.

![example workflow](../images/appmon_example_workflow.png "example workflow")

***Figure 6:*** *example workflow*

#### 4.1 Configure Dynatrace server
The Dynatrace Server configuration has to be applied in the global configuration of the CI-Server:
navigate to Manage Jenkins/Hudson >> Configure System or use this url to add a Dynatrace Server:
`https://{ CI-Server }:8080/configure`

![global Dynatrace server configuration](../images/appmon_global_configuration.png "global Dynatrace server configuration")

***Figure 7:*** *global Dynatrace server configuration*

In the configuration section “advanced” a delay can be adjusted, which controls the time before querying dashboards and other REST data from the Dynatrace Server, in case the server itself is under heavy load.
If the Jenkins server cannot reach the Dynatrace server without a proxy, it’s possible to use the configured proxy in Jenkins (Settings  Plugin Manager  Advanced) or to specify an own proxy server with setting “Use custom proxy server”.

![Dynatrace server advanced settings](../images/appmon_advanced_settings.png "Dynatrace server advanced settings")

***Figure 8:*** *Dynatrace server advanced settings*

#### 4.2 Build step job configuration
This configuration assigns test case(s) to build steps for collection of performance data. For each test type (performance test, unit test or other) the following build steps have to be added in the section “Build Procedure”:

1. Start Dynatrace Session Recording
2. Add a Test Step with a unique name.
3. Stop Dynatrace Session Recording

It is possible to add several test cases to a single build job. The test in step 2 can be performed by custom build steps, e.g. via shell script, batch, Ant or Maven.

![build steps](../images/appmon_build_steps.png "build steps")

***Figure 9:*** *build steps*

#### 4.3 Post build step job configuration
The Post build job evaluates the collected performance data and publishes customizable Performance Signature Reports. For the evaluation of the collected performance data and the publication of reports requires a Dynatrace user is needed. The Dynatrace user needs read permission on the dashboards used for report generation (section 4.2.1).
In the section “Post Build Actions” you have to configure the following parameters:

1. Add `publish Performance Signature Reports` to Post-Build steps
2. Configure the test cases and assign the Dynatrace Report Dashboards

Ensure to assign the test case names used in in the “Build Procedure“ section. With “Add Test Case” several test cases can be configured. There are two test case types: generic test case and unit test case.

##### 4.3.1 Configuration of unit tests
This configuration step is needed to map Dynatrace dashboards with previously defined test cases and collected unit test performance data for report creation. The unit test case type is using Dynatrace test automation interfaces to gather unit test specific performance data. Choose one of the previously configured test case names (see build step start session recording → Test Case Name) from the dropdown list.

The basis for report generation is Dynatrace dashboards. Single and comparison reports will be exported as PDF. Every dashlet element in XML dashboards will be included in the Performance Signature overview. The client dashboard can be opened by following the “open in Dynatrace client” link in the detail view.

![Dynatrace client link](../images/appmon_client_link.png "Dynatrace client link")

***Figure 10:*** *Dynatrace client link*

![unit test case configuration](../images/appmon_unit_testcase.png "unit test case configuration")
***Figure 11:*** *unit test case configuration*

For the following it is important to understand that a test run represents the execution of several test cases.

Technically the Performance Signature Plugin performs the following activities for each test run:
* Before the session recording is triggered and the test case is started the plugin creates a new test run on the Dynatrace Server. The REST interface supplies a unique testRunId. The unique testRunId identifies the test run within Dynatrace.
* The Plugin additionally tags Dynatrace Session recording of the Test run with Jenkins/Hudson BUILD ID, Purpose: correlation of test results, DT performance data to a software build. Tagging the test runs with the BUILD_ID enables that the results of multiple test runs (executing different test cases) can be mapped to a single software build and summarize the results into a single report.
* A Dynatrace agent is required to enable the tagging of unit tests. The tagging meta information is passed to Dynatrace Agent. The Dynatrace Agent needs to be injected in the process which executes the unit test.
* Below is an example of injecting the agent with tagging meta information into an Ant build job. Ensure that the environment variables are imported.

```xml
<property environment="env"/>
<condition property="build.number" value="${env.BUILD_ID}">
<isset property="env.BUILD_ID" />
</condition>
<junit printsummary="on"
	errorproperty="test.error"
	failureproperty="test.failure"
	timeout="60000"
	showoutput="on"
	outputtoformatters="on"
	fork="on"
	tempdir="${user.home}/.dynaTrace/easyTravel 2.0.0/easyTravel/tmp">
<jvmarg value="${dtagent},optionTestRunIdJava=${env.DYNATRACE_TESTRUN_ID}"/>
```
***Figure 12:*** *unit test case configuration*

For more information about the integration of Dynatrace into major build tools see the official Dynatrace documentation:
https://community.dynatrace.com/community/display/DOCDT62/Integrate+Dynatrace+in+Continuous+Integration+Builds

For the evaluation of unit test run results an additional post-build step „Publish JUnit Test Results’ is required and needs to be configured. Further information about the JUnit plugin: https://wiki.jenkins-ci.org/display/JENKINS/JUnit+Plugin

![configuration of the JUnit plugin](../images/appmon_configuration_junit.png "configuration of the JUnit plugin")

***Figure 13:*** *configuration of the JUnit plugin*

##### 4.3.2 Configuration of generic test cases
Generic test cases allow collecting performance data and generating reports of other test types than unit tests such as performance tests.
The configuration of generic test follows the principles as used in unit test (see section 5.3.1). As with unit tests choose one of the previously configured test case names (see build step start session recording → Test Case Name) from the dropdown list.

![generic test case configuration](../images/appmon_configuration_generic_testcase.png "generic test case configuration")

***Figure 14:*** *generic test case configuration*

#### 4.4 Configuration of Pipeline steps
As of version 2.0 the plugin is compatible to the Jenkins Pipeline API. All build steps described above are available in the Pipeline Snippet Generator (`https://{CI-Server}:8080/job/{Pipeline job}/pipeline-syntax/)`

Start session example:

![snippet generator example](../images/appmon_snippet_generator.png "snippet generator example")

Figure 15:  snippet generator example

Please recognize the right order of the Performance Signature builds steps described in chapter 2.

Following example can be used to replace a Freestyle job:
```groovy
node {
    stage('StartSessionRecording') {
        startSession dynatraceProfile: 'easy Travel (fn_perfsig) @ PoC PerfSig', testCase: 'workflowTest'
    }
    stage('Loadtest') {
        sh './startLoadtest.sh'
    }
    stage('StopSessionRecording') {
        stopSession 'easy Travel (fn_perfsig) @ PoC PerfSig'
    }
    stage('getReports') {
        perfSigReports configurationTestCases: [[$class: 'GenericTestCase', clientDashboard: 'open Webstart client', comparisonDashboards: [[dashboard: 'PerformanceSignature_comparisonreport']], name: 'workflowTest', singleDashboards: [[dashboard: 'PerformanceSignature_singlereport']], xmlDashboard: 'PerformanceSignature_xml']], dynatraceProfile: 'easy Travel (fn_perfsig) @ PoC PerfSig', exportSessions: true
    }
}
```
***Figure 16:*** *pipeline job example code*

#### 4.5 Advanced settings
The configuration section “advanced” allows configuring automated session export and the modification of the built result status.

If the session export option is activated the plugin automatically downloads the recorded Dynatrace sessions to the report directory (described in chapter 3) of the CI Server. Thus the Dynatrace session, the test results and the generated reports are stored in one place for each build.

The Performance Signature Plugin is capable of modifying the built result depending on the results of executed tests. In case of occurring Dynatrace incidents (e.g. CPU unhealthy) in Dynatrace session recorded during test run execution the build result can be modified according to the 5 available options. In case the build result should be modified “Incident rules” need to be setup in Dynatrace.

![advanced settings](../images/appmon_advanced_step_settings.png "advanced settings")

***Figure 15:*** *advanced settings*

### 5 Customizing the Performance Signature Overview
The Performance Signature overview page can be customized depending on the test case. It can be configured which measures from the corresponding Dynatrace dashboard are shown on the performance Signature overview page. Using the edit button, it’s possible to select the measures to be displayed from all existing measures. The aggregation of a measure, the chart title (custom measure name) and the number of comparison values from previous builds for a measure (custom build counts) can be adjusted.
![selection of measures](../images/appmon_select_mesasure.png "selection of measures")
***Figure 16:*** *selection of measures*

After deleting and adding the desired charts, the configuration will be saved by clicking the “Done” button. The table below the charts shows only the data of the previously configured charts.

![overview of a sample Jenkins build](../images/appmon_example_build.png "overview of a sample Jenkins build")

***Figure 17:*** *overview of a sample Jenkins build*

To access the individual reports and charts of a build, follow the highlighted links. In this view (Figure 17), detailed measure data of the current build and the last successful build can be accessed and single reports and sessions can be downloaded.

![view of an individual build](../images/appmon_example_perfsig.png)

***Figure 18:*** *view of an individual build*

#### 5.1 Access enhanced JUnit tests
To view the enhanced JUnit test reports in Jenkins it’s necessary that all steps were executed from section 5.3.1.

![job overview with junit test data](../images/appmon_junit_overview.png "job overview with junit test data")

***Figure 19:*** *job overview with junit test data*

To view the JUnit test reports, follow the highlighted links in the job overview:

![JUnit test report for an individual build](../images/appmon_junit_build.png "JUnit test report for an individual build")
***Figure 20:*** *JUnit test report for an individual build*

In this view the Dynatrace test automation data can be accessed by clicking on the different status icons behind the JUnit test method:

![detailed test automation data for one Junit test](../images/appmon_junit_detail.png "detailed test automation data for one Junit test")

***Figure 21:*** *detailed test automation data for one Junit test*

These measures are also available by clicking on the test method in the JUnit test report:

![detailed view of a Junit test](../images/appmon_junit_detail_page.png "detailed view of a Junit test")

***Figure 22:*** *detailed view of a Junit test*

### 6 Content of reports
This section describes the content of the reports included in the fastpack. Keep in mind that the content of the reports can be customized according to the test, use case or application. All measures are preinstalled in a Dynatrace system profile except Database INSERT, UPDATA, DELETE, SELECT execution time and Count.

#### 6.1 Content of PDF reports
##### 6.1.1 Single reports
The single reports are generated for each build and test case and contain the most important characteristics and metrics by default:
* Overview over important non-functional requirements
* Web requests (only the 20 highest average execution times)
* Web Service methods (only the 20 highest average execution times)
* Database measures (min/max/avg.) for INSERT / UPDATE / DELETE / SELECT statements
* HTTP errors and exceptions of the application

##### 6.1.2 Comparison reports
If there is at least one successful previous build, comparison reports are generated for each following build. These reports contain the following measures by default:
* Web Page requests (only the 20 highest average execution times)
* Web Service methods (only the 20 highest average execution times)
* HTTP errors and exceptions of the application
* Database measures (response time hotspots, execution hotspots, pool usage)

#### 6.2 XML reports
The XML reports are required to visualize the various measures of the individual builds in Jenkins in charts. The dashboard contains the following values by default:
* Synthetic Web Requests + Count
* Web Request Time + Count
* Web Service Time + Count
* Database Time + Count
* GC Utilization
* CPU Load
* Database Preparation Count
* Failed Transaction Count

repository: T-Systems-MMS/perfsig-jenkins

gha_language: Java

repo_name: T-Systems-MMS/perfsig-jenkins


text:
# Razy
- Supports PHP5+
- Fast & easy to build a website
- Weight light, structure clean
- Separated module folder, you can clone the module to other Razy framework without any modification
- Cross-module communication
- Easy routing
- Supports CLI mode
- Pluggable controller, better coding management
# Task List
- New CLI Mode (Working in progress)
- FTP library
- HTTP library
- Image Manipulation Library
- Mail library
# Razy Files Structure
```
- .
 - library/
 - module/
  - your_module_name/
   - controller/ (Place your controller here)
   - view/ (Module based view folder)
   - library/ (auto-load library)
   - config.php (Module configuration)
 - view/ (Global view folder)
 - system/
 - material/
```
# Configuration File
Razy will deep scan the module folder, when the module folder contain a **config.php**, Razy will assume it is a module. **config.php** is a array-return file, example:
```
<?php
return [
  // Module code must unique
  'module_code' => 'example',
  // The Module author name
  'author' => 'Ray Fung',
  // The Module version
  'version' => '1.0.0',
  // The remap to change the route path, default `/module_code/`
  'remap' => '/admin/$1', // Put $1 as a module_code
  // Route setting, for example `reroute` is mapped to method `reroute` under class `example`
  'route' => array(
    // (:any)	 Pass all arguments to 'any' route if there is no route was matched
    '(:any)' => 'example.main',
    'reroute' => 'example.reroute',
    'custom' => 'example.custom'
  ),
  // Callable method mapping, for cross-module communication and event trigger
  'callable' => array(
    'method' => 'example.method',
    'onMessage' => 'example.onMessage'
  )
];
?>
```
# Controller Rule
Every module must contain **one** class in **controller** folder, which is named as **module code**. For example if the module code named **user**, you should have:
```
/module/example/controller/user.php
```
The file must a class file, under **Module** namespace, and extends **IController** class:
```
<?php
namespace Module
{
  class user extends \Core\IController
  {
    public function main()
    {
      $this->loadview('main', true);
    }

    public function reroute()
    {
      echo 'Re-Route';
    }

    public function onMessage()
    {
      echo 'onMessage Event';
    }

    public function method()
    {
      return 'Callable Method';
    }
  }
}
?>
```

Also, you can separate any method into other file. Such as there is a **getName** in **user** class, you can create a function-return file named:
```
/module/example/controller/user.getName.php
```
And the file like:
```
<?php
return function($argA) {
  return $this->name;
};
?>

repository: treemanou/Razy

repo_name: treemanou/Razy


text:
# Sightengine

![](https://travis-ci.org/leoht/sightengine.svg?branch=master)

Unofficial wrapper for the [Sightengine](https://sightengine.com/) API
which provides image moderation including nudity detection, scammer detection,
face attributes, and more.

Official API docs can be found here: https://sightengine.com/docs/reference

## Installation

Add this line to your application's Gemfile:

```ruby
gem 'sightengine'
```

And then execute:

    $ bundle

Or install it yourself as:

    $ gem install sightengine

## Usage

### Configuration

```ruby
require 'sightengine'

client = Sightengine::Client.new(
  api_user: 'your api user',
  api_secret: 'your api secret'
)

```

### Offensive check

```ruby
response = client.offensive("https://sightengine.com/assets/img/examples/example2.jpg")
response.offensive? # false
```

### Nudity check

```ruby
response = client.nudity("https://sightengine.com/assets/img/examples/example2.jpg")

response.raw_nudity? # false
response.partial_nudity? # false
response.safe? # true
```

### Face attributes

```ruby
response = client.face_attributes("https://sightengine.com/assets/img/examples/example7.jpg")

response.get_faces.length # 1
face = response.get_faces.first

face.female? # true
face.male? # true
face.minor? # false
face.coordinates # [x1, y1, x2, y2] = [0.5156, 0.1936, 0.6922, 0.6207]
```

### Scam detection

```ruby
response = client.scam("https://d3m9459r9kwism.cloudfront.net/img/examples/example-scam1-1000.jpg")

response.scam? # true
```

### Celebrities detection

```ruby
response = client.celebrities("https://sightengine.com/assets/img/examples/example-craig-300.jpg")

response.celebrity? # true
response.celebrities # [{"name"=>"Daniel Craig", "prob"=>0.99}, {"name"=>"Graham Fellows", "prob"=>0.08}, ...]
```

### Weapons, alcohol and drugs (WAD)

```ruby
response = client.wad("https://sightengine.com/assets/img/examples/example2.jpg")

response.weapon?
response.drugs?
response.alcohol?
```

### Multi-models check

```ruby
# Detect nudity, scammers and celebrities in picture
response = client.check("https://d3m9459r9kwism.cloudfront.net/img/examples/example-scam1-1000.jpg", [
    Sightengine::NUDITY,
    Sightengine::SCAM,
    Sightengine::CELEBRITIES
])

response.raw_nudity? # false
response.scam? # true
response.celebrity? # false
```

## Development

After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.

To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).

## Contributing

Bug reports and pull requests are welcome on GitHub at https://github.com/leoht/sightengine.

## License

The gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).

repository: BloomAndWild/sightengine

gha_language: Ruby

repo_name: BloomAndWild/sightengine


text:
# word-break

https://developer.mozilla.org/en-US/docs/Web/CSS/word-break

## break-all
```css
.selector {
  composes: break-all from 'hydrogencss/word-break.css'
}
```

or:
```css
.selector {
  composes: break-all from 'hydrogencss/word-break/break-all.css'
}
```

## keep-all
```css
.selector {
  composes: keep-all from 'hydrogencss/word-break.css'
}
```

or:
```css
.selector {
  composes: keep-all from 'hydrogencss/word-break/keep-all.css'
}
```

## normal
```css
.selector {
  composes: normal from 'hydrogencss/word-break.css'
}
```

or:
```css
.selector {
  composes: normal from 'hydrogencss/word-break/normal.css'
}
```

repository: eddiemoore/hydrogencss

gha_language: JavaScript

repo_name: eddiemoore/hydrogencss


text:
## RDS

Amazon Relational Database Service (Amazon RDS) makes it easy to set up, operate, and scale a relational database in the cloud. It provides cost-efficient and resizable capacity while automating time-consuming administration tasks such as hardware provisioning, database setup, patching and backups. It frees you to focus on your applications so you can give them the fast performance, high availability, security and compatibility they need.

- https://aws.amazon.com/rds/?nc1=h_ls

<br/>

## Connecting to a PostgreSQL DB

Configuration

1. Network & Security
- Select a security group
- Public accessibility should be `Yes`

Connect

Unix
```
psql ^
   --host=<DB instance endpoint> ^
   --port=<port> ^
   --username=<master user name> ^
   --password ^
   --dbname=<database name>
```

or

```
psql --host=mypostgresql.c6c8mwvfdgv0.us-west-2.rds.amazonaws.com --port=5432 --username=awsuser --password --dbname=mypgdb
```

References
- [Connecting to a DB Instance Running the PostgreSQL Database Engine](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_ConnectToPostgreSQLInstance.html)


text:
# Getting Started

The easiest way to install is by using [Composer](https://getcomposer.org):

```sh
$ composer require asyncphp/doorman
```

## Simple Tasks

You can run simple, synchronous tasks:

```php
use AsyncPHP\Doorman\Manager\SynchronousManager;
use AsyncPHP\Doorman\Task\CallbackTask;

$manager = new SynchronousManager();

$task1 = new CallbackTask(function () {
    print "in task 1";
});

$task2 = new CallbackTask(function () {
    print "in task 2";
});

$manager->addTask($task1);
$manager->addTask($task2);

while ($manager->tick()) {
    usleep(250);
}
```

Running `SynchronousManager->tick()` once is like working for a single processor cycle. All waiting tasks are started and completed tasks are removed. When there are no more waiting or running tasks then `tick()` will return false. This makes it ideal as a while loop condition. The loop will run until there manager has handled all tasks.

Running tasks synchronously isn't very useful. What we want is to be able to run tasks in parallel. for this, we need to use a different manager and task:

```php
use AsyncPHP\Doorman\Manager\ProcessManager;
use AsyncPHP\Doorman\Task\ProcessCallbackTask;

$manager = new ProcessManager();

$task1 = new ProcessCallbackTask(function () {
    print "in task 1";
});

$task2 = new ProcessCallbackTask(function () {
    print "in task 2";
});

$manager->addTask($task1);
$manager->addTask($task2);

while ($manager->tick()) {
    usleep(250);
}
```

You may wonder where the task output has disappeared to. `ProcessCallbackTasks` are run in separate processes, so their output is not sent to the same place as the process in which `ProcessManager` is running.

By default, this output is going to `/dev/null` but you can store it in log files:

```php
$manager = new ProcessManager();
$manager->setLogPath("path/to/log");
```

This will store any output in `path/to/log/stdout.log` and `path/to/log/stderr.log`. You may also want to change the path to the PHP binary or the worker script:

```php
$manager = new ProcessManager();
$manager->setBinary("path/to/php");
$manager->setWorker("path/to/worker.php");
```

If you do change the path to the worker script, you'll need to create the required handler for handling tasks. Check `bin/worker.php` to see how.

gha_language: PHP

gha_license_id: NOASSERTION


text:
# Automatically raise errors as tickets in Jira

This package will automatically create tickets in Jira or comment on existing tickets whenever an error has been caught within the Laravel application that it is installed in.

## Installation

To install this package via composer run:

`composer require "kaweb/laravel-jira:^1.0.0"`

The package will automatically register itself and will begin capturing errors automatically, although you will need to configure this for your Jira instance and project.

Publish the configuration file with:

`php artisan vendor:publish --provider="Kaweb\Jira\JiraServiceProvider" --tag="config"`

By default this library will raise 'Alert' tickets at a priority level of 'Critical' - you may need to check the setup in Jira to ensure that tickets will be created at the correct level for your installation.

repository: kaweb/laravel-jira

repo_name: kaweb/laravel-jira


text:
![CrowdStrike Falcon](https://raw.githubusercontent.com/CrowdStrike/falconpy/main/docs/asset/cs-logo.png)
[![Twitter URL](https://img.shields.io/twitter/url?label=Follow%20%40CrowdStrike&style=social&url=https%3A%2F%2Ftwitter.com%2FCrowdStrike)](https://twitter.com/CrowdStrike)

# Falcon Data Replicator
[![Bandit](https://github.com/CrowdStrike/FDR/actions/workflows/bandit.yml/badge.svg)](https://github.com/CrowdStrike/FDR/actions/workflows/bandit.yml)
[![Flake8](https://github.com/CrowdStrike/FDR/actions/workflows/linting.yml/badge.svg)](https://github.com/CrowdStrike/FDR/actions/workflows/linting.yml)
[![Python Lint](https://github.com/CrowdStrike/FDR/actions/workflows/pylint.yml/badge.svg)](https://github.com/CrowdStrike/FDR/actions/workflows/pylint.yml)
[![CodeQL](https://github.com/CrowdStrike/FDR/actions/workflows/codeql-analysis.yml/badge.svg)](https://github.com/CrowdStrike/FDR/actions/workflows/codeql-analysis.yml)

The Falcon Data Replicator replicates log data from your CrowdStrike environment to a stand-alone target. This target can be a location on the file system,
or a cloud storage bucket.
> Currently AWS is the only cloud provider implemented.
## Requirements
+ Python 3.6+
+ boto3
+ CrowdStrike Falcon FDR credentials
+ CrowdStrike Falcon FDR SQS queue URL
## Stand-alone solution
+ [falcon_data_replicator.ini](https://github.com/CrowdStrike/FDR/blob/main/falcon_data_replicator.ini) - Configuration file
+ [standalone/falcon_data_replicator.py](https://github.com/CrowdStrike/FDR/blob/main/standalone/falcon_data_replicator.py) - Stand-alone solution application file
### Configuration
The `falcon_data_replicator.ini` file contains all of the parameters necessary to configure the
solution for replication to the local file system and / or a storage bucket in AWS S3. After
retrieving the AWS credentials and SQS queue details from your Falcon console, edit this file
to reflect your environment.
#### Required parameters
The following parameters must be provided in order for the solution to operate.
+ `AWS_KEY` - AWS client ID provided to you by the CrowdStrike Falcon console
+ `AWS_SECRET` - AWS client secret provided to you by the CrowdStrike Falcon console
+ `QUEUE_URL` - AWS SQS queue URL provided to you by the CrowdStrike Falcon console
+ `OUTPUT_PATH` - File path where downloaded files will be stored, not used for in-memory transfers
+ `VISIBILITY_TIMEOUT` - Time in seconds before a message is returned back to the SQS queue
+ `REGION_NAME` - The name of the AWS region where your CrowdStrike SQS queue resides
+ `MESSAGE_DELAY` - The time in seconds to wait in between the processing of each message
+ `QUEUE_DELAY` - The time in seconds to wait before each check of the queue for more messages
+ `LOG_FILE` - The name and path of the the log file
#### Destination parameters
The following parameters configure our destination details. If not these parameters are not present,
upload to our bucket is skipped and the local files are retained after download.
+ `TARGET_BUCKET` - The name of the AWS bucket we will use for our target destination
+ `TARGET_REGION` - The name of the AWS region our target bucket resides within
+ `REMOVE_LOCAL_FILE` - Boolean representing whether or not to remove local files after they are uploaded
+ `IN_MEMORY_TRANSFER_ONLY` - Transfer the file from the source bucket to the destination bucket without storing the file on the local file system.
### Running the solution
After updating the configuration file to reflect your environment specifics, you can run this solution using:
```bash
python3 falcon_data_replicator.py
```
If your configuration file is not present in the same directory as the application file, you can reference
this path using the _-f_ or _--config_file_ command line parameters.
```bash
python3 falcon_data_replicator.py -f some_path/falcon_data_replicator.ini
```
## Container-based
_Coming soon_

license: Unlicense

repository: RakhithJK/FDR

branch_name: refs/heads/main

repo_name: RakhithJK/FDR


text:
perl
========================

[USAGE]
perl test.pl [confidence parameter] [mode] [mode parameter] [dimension of features]

[MODE]
available modes are below.
cw: confidence weighted. mode parameter is variance.
scw: soft confidence weighted (proposition 1). mode parameter is aggressiveness.
fscw: scw, but sigma has only diagonal elements.

[EXAMPLE]
$$ perl test.pl 0.7 cw 1 3 < colors.csv

repository: pombredanne/ConfidenceWeighted

repo_name: pombredanne/ConfidenceWeighted


text:
# **Actions**

**[Go back to main page](../../Documentation.md)**

## Strategic Point

The Strategic Point is an estimation of the optimal position for a robot to cooperate with its teammates effectively and have a good goalscoring position.
Since the ball has three basic states (in our team, in opponent's team and free) - therefore, a strategic point should be changed according to different situations.
An example scenario when this function is executed is presented in Figure 1.

__Figure 1__: Visualisation of the strategic point logic.

### Implementation

The decision process of selecting a strategic point is shown in Figure 2.

__Figure 2__: The algorithm decision process of strategic point function.

The strategic point logic is implemented as a static method ```def go_to_strategic_point(game_info, partner_id)```.

This function adjusts the velocity of both wheels according to the position we set so that the robot can go to the strategic point. For example, if one robot holds the ball, the other one will use ***go_to_strategic_point()*** to get a good position to wait for the ball, so they can work together effectively.

As shown in Figure 3 robot **No. 3** from the **Team 0** (blue team) goes to the strategic point. When its teammate (player **No. 2**) who has a ball is approached by an opponent, he passes the ball to robot **No. 3** that is already waiting in a strategic position.

__Figure 3__: Visualisation of going to the strategic point.

### Limitations:

Now we just consider a specific point as the strategic point and test it by using a fixed point relative to the other robot.
Although it works in most of the cases, in some scenarios, it does not make sense to go to that point.
For example, when the robot is very closed to the edge of the football field, there is no need for the other player to get to that place to cooperate with the robot.

Therefore, the strategic point should be defined with more parameters and more information. It should be more related to the team strategic point, not individual strategic point or the strategic point just for two members.

gha_language: Python


text:
# Calendar

![ScreenShot](/08_Calendar/ScreenShot.png?raw=true "Screenshot of Calendar")

A simple calendar created in JavaScript with CSS Grid.

## Future improvements
- [ ] Create an event system
- [ ] Add a dark mode

repository: mboultoureau/coding-challenges

repo_name: mboultoureau/coding-challenges


text:
---
schema: pacelf
title: Laboratory studies of Ochlerotatus samoanus in association with leaf axils of Freycinetia (Pandanaceae) in Samoa
organization: Uchida, K., Ichimori, K., Paulson, G.S., Cox, P.A., Sone, F., Samarawickrema, W.A.
notes: Three species of Freycinetia (Pandanaceae) (F. reineckei, F. storkii, and F. hombronii) were tested for oviposition preference of Ochlerotatus samoanus, a vector of filariasis in Samoa. Laboratory tests indicated that F. reineckei was preferred by this mosquito for oviposition. Eggs were preferentially deposited on a peeled or a moist dried leaf. The percentage hatch was highest when eggs were kept moist for longer than 4 days before submersion. Hatching was complete in less than 6 h. These studies allowed us to successfully rear Oc. samoanus in the laboratory, facilitating future studies on the biology and control of this important vector.
access: Open

resources:
- name: Laboratory studies of Ochlerotatus samoanus in association with leaf axils of Freycinetia (Pandanaceae) in Samoa
  url: 'N/A'
  format: Hardcopy
  access: Open
  pages: 81-85

category: Scientific Papers
access: Open
journal: Journal of the American Mosquito Control Association
publisher: N/A
language: English
hardcopy_location: JCU WHOCC Ichimori collection;JCU WHOCC
work_location: Samoa
year: 2002
decade: 2000
PacELF_ID: 1412
---

repository: DanielBaird/jkan

repo_name: DanielBaird/jkan


text:
<!-- Copyright 2017 the authors. See the 'Copyright and license' section of the
README.md file at the top-level directory of this repository.

Licensed under the Apache License, Version 2.0 (the LICENSE-APACHE file) or
the MIT license (the LICENSE-MIT file) at your option. This file may not be
copied, modified, or distributed except according to those terms. -->

elfc
====

This crate uses [`malloc-bind`](https://crates.io/crates/malloc-bind) to provide
an implementation of the C allocation API (`malloc`, `free`, etc) based on the
[`elfmalloc`](https://crates.io/crates/elfmalloc) allocator. It compiles to a
dynamic library (`.so` on Linux and `.dylib` on Mac) that can be loaded using
the `LD_PRELOAD` or `DYLD_INSERT_LIBRARIES` environment variables (on Linux or
Mac respectively) or using `dlopen`.

elfmalloc is still in early alpha, and some platforms are only minimally
supported. For details on what's working and what isn't, see the elfmalloc
README.

repository: cormacrelf/allocators-rs

repo_name: cormacrelf/allocators-rs


text:
---
ENTRYTYPE: inproceedings
abstract: The fourth version of the DIVINE model checker provides a modular platform for verification of real-world programs. It is built around an efficient
  interpreter of LLVM code which, together with a small, verification-oriented operating system and a set of runtime libraries, enables verification of
  code written in C and C++.
added: 2021-06-14
address: Cham
authors:
- Zuzana Baranová
- Jiří Barnat
- Katarína Kejstová
- Tadeáš Kučera
- Henrich Lauko
- Jan Mrázek
- Petr Ročkai
- Vladimír Štill
booktitle: Automated Technology for Verification and Analysis
editor: D'Souza, Deepak and Narayan Kumar, K.
isbn: 978-3-319-68167-2
layout: paper
pages: 201-207
publisher: Springer International Publishing
read: false
readings: []
title: Model checking of C and C++ with DIVINE 4
year: 2017
notes:
- model checking
papers:
---
{% include links.html %}

repository: alastairreid/RelatedWork

gha_language: TeX

repo_name: alastairreid/RelatedWork


text:
---
layout: post
title: "Solution to TUCTF 2017 The Neverending Crypto"
author: capitol
category: ctf
---
![CipherDisk](/images/CipherDisk.jpg)

##### name:
The Neverending Crypto

##### category:
crypto

##### points:
50

#### Writeup

We where presented with a server that encrypted strings with a substitution cipher.

You where also able to give up to twenty characters that the server gave the solution for.

The server didn't use the complete byte range and it was a hassle to find out what characters that was included in the substitution. The server leaked the plain texts from time to time, and the number of plain text strings that was encrypted was small, only nine different ones.

This meant that we could write some simple heuristics to decide which of the strings to send back, the same plain text character always encrypts to the same encrypted character, so we could look at what characters in the ecrypted text are equal to determine what plain text to send back.

Implemented like this:

```python
import socket
import re
import string

sobj = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
sobj.connect(("neverending.tuctf.com",12345))
sobj.recv(1024)

re_question = re.compile(r"is (?P<question>.*) decrypted")
re_match = re.compile(r"a encrypted is (?P<chr>.)")

def workit():
    sobj.send("a\n")

    hint =  sobj.recv(1024)
    print "hint", repr(hint)
    c = re_match.match(hint).groupdict()["chr"]

# What is :BB7RJBE>^R@BE8 decrypted?
    question = re_question.findall(hint)[0]
    print "Question is", question
    answer = ""
    if question[1] == question[10]:
        answer = "how many more??"
    if question[11] == question[13]:
        answer = "something here."
    if question[1] == question[5]:
        answer = "you got lucky.."
    if question[12] == question[13]:
        answer = "you have skills"
    if question[1] == question[2]:
        answer = "good work, more"
    if question[1] == question[9]:
        answer = "you crypto wiz!"
    if question[13] == question[14] and question[1] == question[10]:
        answer = "how many more??"
    if question[1] == question[13]:
        answer = "welcome, hacker"
    if question[1] == question[6] and question[1] == question[13] and question[3] == question[10]:
        answer = "dont forget to "
    if answer == "":
        print "I DO NOT KNOW"
        import sys
        sys.exit()
    print answer
    sobj.send(answer + "\n")

while True:
    workit()
    print sobj.recv(1024)
```

repository: hackeriet/blog

repo_name: hackeriet/blog