text:
---
layout: default
---

# 1997-07-28 - Re: "What is your strategy to avoid RSACi type systems?"

## Header Data

From: Tim May<EMAIL_ADDRESS>To: James Love<EMAIL_ADDRESS>Message Hash: 2ba3a30ea48e36891ff80db18e8b7a302bbd3e127f8d4f5243fb4e85c5b5a9e9

Message ID<EMAIL_ADDRESS>Reply To<EMAIL_ADDRESS>UTC Datetime: 1997-07-28 20:30:14 UTC

Raw Date: Tue, 29 Jul 1997 04:30:14 +0800

## Raw message

```
{% raw  %}From: Tim May<EMAIL_ADDRESS>Date: Tue, 29 Jul 1997 04:30:14 +0800
To: James Love<EMAIL_ADDRESS>Subject: Re: "What is your strategy to avoid RSACi type systems?"
In-Reply-To<EMAIL_ADDRESS>Message-ID<EMAIL_ADDRESS>MIME-Version: 1.0
Content-Type: text/plain

At 12:17 PM -0700 7/28/97, James Love wrote:

>   Tim, on the one hand, you seem to be saying that you have
>constitutional rights, which would make the government's enforcement of
>labeling systems illegal.  On the other hand, you seem to express
>concern that the government will succeed at making such labeling
>mandatory.  I'm not sure which case you believe to be true, or if you
>are still unsure how courts will rule on this issue down the road.

No contradiction. I believe many constitutionally protected things are
nevertheless violated by various laws, with the courts taking many years or
even decades, or never, to overturn these laws.

I don't believe any requirement to label one's writings, or one's other
works, will pass constitutional muster. This doesn't mean I will stand by
while PICS/RSAci systems which are drifting rapidly in the direction of
"mandatorily voluntary" (!) are being debated, even if I think the Supreme
Court will eventually overturn the law(s).

Same reason many of us opposed the CDA. And the same lack of contradiction
that it was unconstitutional.

(Your argument, applied to the CDA, would apparently be: ".. on the one
hand, you seem to be saying that you have constitutional rights, which
would make the government's enforcement of the CDA illegal.  On the other
hand, you seem to express concern that the government will succeed at
enforcing the CDA.  I'm not sure which case you believe to be true, or if
you are still unsure how courts will rule on this issue down the road." It
is possible, and often wise, to oppose legislation even if one is convinced
it is unconstitutional and will eventually be struck down by the Supreme
Court. And, of course, many severely unconstitutional laws have yet to be
struck down by the Court.)

>    I think that the cyber porn debate would be more of less ended if
>there was an agreement of the standard meta tag for adult material.

>    But I don't see this happening.  The debate is so polarized, and
>people are trying to prove so many different things, that it seems
>unlikely that there would be much of a constituency for what I am
>proposing.

At last we agree on something. There is no universally agreed upon standard.

I tried to use the Huck Finn example, because it's been a recurring and
easily understandable example. I suppose I'll have to use the "fisting and
pissing" example you yourself brought up.

Believe me, there are folks who _want_ children to see their writings and
whatnot on this topic.

Any non-mandatory labeling system will, perforce, run smack into this issue.

>    For one thing, I think there is a big difference between a simple
>rating=adult system, used on tiny number of porn sites, and the more
>ambitious RSACi or other PICS systems.  It seems to me that you think
>they are basically equivalent (trying not to put words in your mouth).

No, I have not attempted to compare the two. What I have consistently
argued is that for the ratings systems to successfully (though this is
arguable, too) shield little Suzie and Johnny from "fisting and pissing"
articles and sites, the ratings will be made mandatory. And external
standards will be imposed.

(Otherwise it's up to the personal opinion of those doing the rating, or
not.

Note again that I am not arguing for such ratings. Far from it. Just the
opposite. I am saying it is utterly disingenuous for folks like you and
other supporters of PICS/RSAci to claim that ratings can be completely
voluntary because there will be unaninous, universal, and unambiguous
agreement on what constitutes material suitable for children.

>    Could be that this whole debate is much ado about nothing, since
>nobody wants to to use the RSACi system, and maybe the incompetence of
>those who want to be rating bureaus will delay action on this for
>years.

Expect legislative action this year or next. Even if overturned in a year
or two, it's good for reelection prospects.

--Tim May

There's something wrong when I'm a felon under an increasing number of laws.
Only one response to the key grabbers is warranted: "Death to Tyrants!"
---------:---------:---------:---------:---------:---------:---------:----
Timothy C. May              | Crypto Anarchy: encryption, digital money,
<EMAIL_ADDRESS>408-728-0152 | anonymous networks, digital pseudonyms, zero
W.A.S.T.E.: Corralitos, CA  | knowledge, reputations, information markets,
Higher Power: 2^1398269     | black markets, collapse of governments.
"National borders aren't even speed bumps on the information superhighway."

{% endraw %}
```

## Thread

+ Return to [July 1997](/archive/1997/07)
+ Return to [August 1997](/archive/1997/08)

+ Return to "[? the Platypus {aka David Formosa} <dformosa@st.nepean.uws.edu.au>](/authors/_the_platypus_aka_david_formosa_dformosa_at_st_nepean_uws_edu_au_)"
+ Return to "[Adam Back <aba@dcs.ex.ac.uk>](/authors/adam_back_aba_at_dcs_ex_ac_uk_)"
+ Return to "[Alan <alan@ctrl-alt-del.com>](/authors/alan_alan_at_ctrlaltdel_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 "[James Love <love@cptech.org>](/authors/james_love_love_at_cptech_org_)"
+ Return to "[Kent Crispin <kent@songbird.com>](/authors/kent_crispin_kent_at_songbird_com_)"
+ Return to "[nospam-seesignature@ceddec.com](/authors/nospamseesignature_at_ceddec_com)"
+ Return to "[Paul Bradley <paul@fatmans.demon.co.uk>](/authors/paul_bradley_paul_at_fatmans_demon_co_uk_)"
+ Return to "[Ray Arachelian <sunder@brainlink.com>](/authors/ray_arachelian_sunder_at_brainlink_com_)"
+ Return to "[Robert Hettinga <rah@shipwright.com>](/authors/robert_hettinga_rah_at_shipwright_com_)"
+ Return to "[stonedog@ns1.net-gate.com](/authors/stonedog_at_ns1_netgate_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-07-25 (Sat, 26 Jul 1997 00:34:56 +0800) - [Yet another self-labeling system (do you remember -L18?)](/archive/1997/07/77a28377e94f71483ad169218958ba8b5c68edc5b1cbd02ab2d501c7b2a0ad06) - _Declan McCullagh<EMAIL_ADDRESS>  + 1997-07-25 (Sat, 26 Jul 1997 01:38:58 +0800) - [Re: Yet another self-labeling system (do you remember -L18?)](/archive/1997/07/e8469ad0f5729fd38cede2ea13c6d24c6b19f56e3de83a2f1f22760c07e252ba) - _Tim May<EMAIL_ADDRESS>    + 1997-07-25 (Sat, 26 Jul 1997 02:00:46 +0800) - [Re: Yet another self-labeling system (do you remember -L18?)](/archive/1997/07/ca27592e979cae2517bfc33e6bfbc97ffe4323495f6f00f97bc9f4dd9831e717) - _James Love<EMAIL_ADDRESS>      + 1997-07-25 (Fri, 25 Jul 1997 10:52:50 -0700 (PDT)) - [Re: Yet another self-labeling system (do you remember -L18?)](/archive/1997/07/0b205c4091e98f09101e6205d3787d1fdd15a7cb02ade04f694a3b6b57fb86ce) - _Declan McCullagh<EMAIL_ADDRESS>        + 1997-07-25 (Fri, 25 Jul 1997 11:41:12 -0700 (PDT)) - [Re: Yet another self-labeling system (do you remember -L18?)](/archive/1997/07/eeaeadc1adf589183a6916b9c7f50b5f0fac8e1a5c0b8f6c0c94e054d16195c4) - _James Love<EMAIL_ADDRESS>          + 1997-07-26 (Sat, 26 Jul 1997 15:20:55 +0800) - [Re: Yet another self-labeling system (do you remember -L18?)](/archive/1997/07/6afe4a278765312ffbc1410e970dca10cb530fd1cbb26a3e011eb268733aee66) - _"William H. Geiger III"<EMAIL_ADDRESS>            + 1997-07-26 (Sat, 26 Jul 1997 16:23:02 +0800) - [Re: Yet another self-labeling system (do you remember -L18?)](/archive/1997/07/2b2cfc3876226715db778cd1664ff0571fb4a1efd4eb865830ccc9cce2514c2a) - _? the Platypus {aka David Formosa}<EMAIL_ADDRESS>            + 1997-07-26 (Sun, 27 Jul 1997 02:19:41 +0800) - [Re: Yet another self-labeling system (do you remember -L18?)](/archive/1997/07/29ffa71653cd11d8a97a9b53fdabf965f99252e09dce8bebd59ede9b36cab6a5) - _James Love<EMAIL_ADDRESS>            + 1997-07-26 (Sun, 27 Jul 1997 02:42:59 +0800) - [Re: Yet another self-labeling system (do you remember -L18?)](/archive/1997/07/a517c3012154c526b60006b4f47aa124010eea194a958a35535efca326c36ffb) - _Tim May<EMAIL_ADDRESS>              + 1997-07-28 (Tue, 29 Jul 1997 00:05:59 +0800) - [Re: Yet another self-labeling system (do you remember -L18?)](/archive/1997/07/3c6deef8cc253159ede40f06763af4f3ce61010b1316afc2273cfedae022647b) - _Ray Arachelian<EMAIL_ADDRESS>                + 1997-07-29 (Tue, 29 Jul 1997 09:09:23 +0800) - [Re: Yet another self-labeling system (do you remember -L18?)](/archive/1997/07/e4dcd176d7dce3abb885f73b93bb36b8c5c5be4b597c640cc68d87d1c1f51efc) -<EMAIL_ADDRESS>(Dr.Dimitri Vulis KOTM)_
            + 1997-07-28 (Mon, 28 Jul 1997 23:07:51 +0800) - [Re: Yet another self-labeling system (do you remember -L18?)](/archive/1997/07/026c64b2e8a9da3610ba9daea1c9c68e406fd7245ab6492532c6d3ffe577db54) - _James Love<EMAIL_ADDRESS>              + 1997-07-28 (Tue, 29 Jul 1997 00:21:22 +0800) - [Re: Yet another self-labeling system (do you remember -L18?)](/archive/1997/07/026ad5a02e7e58d207d50b15ca6741d3085d8b127c303f8f547688f29423dd46) - _"William H. Geiger III"<EMAIL_ADDRESS>              + 1997-07-28 (Tue, 29 Jul 1997 03:52:20 +0800) - [Thomases (Re: Yet another self-labeling system (do you remember -L18?))](/archive/1997/07/667863022c7aebd865561c472e9c08524c70ce58ad3456a9c020c4a885adaca9) - _Adam Back<EMAIL_ADDRESS>                + 1997-07-29 (Tue, 29 Jul 1997 09:11:02 +0800) - [Re: Thomases (Re: Yet another self-labeling system (do you remember -](/archive/1997/07/b73938cd78ae7dd434d620d166d078b95834cb10223b94fa32b0a9b6f2bf2935) -<EMAIL_ADDRESS>(Dr.Dimitri Vulis KOTM)_
              + 1997-07-28 (Tue, 29 Jul 1997 04:41:07 +0800) - [Re: "What is your strategy to avoid RSACi type systems?"](/archive/1997/07/4eac861f1502b4c10abc297498c393161e919c83641234f3f12244968764a80f) - _Robert Hettinga<EMAIL_ADDRESS>                + 1997-07-29 (Tue, 29 Jul 1997 13:07:50 +0800) - [Re: "What is your strategy to avoid RSACi type systems?"](/archive/1997/07/8eea9e6812c28f6fcf24ba0b00dc0358f14da87d481b3487f1ef6ac2c1cbacdd) - _Declan McCullagh<EMAIL_ADDRESS>              + 1997-07-28 (Tue, 29 Jul 1997 04:43:26 +0800) - [Re: "What is your strategy to avoid RSACi type systems?"](/archive/1997/07/874382b543e56e8b4b430eee9bae8f952123aa10a4560d3026602950563af33d) - _Duncan Frissell<EMAIL_ADDRESS>              + 1997-07-30 (Thu, 31 Jul 1997 02:09:16 +0800) - [Re: Yet another self-labeling system (do you remember -L18?)](/archive/1997/07/c3501273a5a4eb689209a424ca197aded3d5c82ce47988227837a0b1f12237c4) - _Paul Bradley<EMAIL_ADDRESS>                + 1997-07-30 (Thu, 31 Jul 1997 02:12:01 +0800) - [Re: Yet another self-labeling system (do you remember -L18?)](/archive/1997/07/a7b85290c1548794fd5e7ee415746907997ef535a399f0ce1eb4f2f12c95e26a) - _James Love<EMAIL_ADDRESS>                  + 1997-07-30 (Thu, 31 Jul 1997 03:29:05 +0800) - [Re: Yet another self-labeling system (do you remember -L18?)](/archive/1997/07/63e1c63c22c220c241beb9385110cb2d3e0c9872e7cc19011b31537a7a12b718) - _Alan<EMAIL_ADDRESS>                  + 1997-07-30 (Thu, 31 Jul 1997 03:31:14 +0800) - [Re: Yet another self-labeling system (do you remember -L18?)](/archive/1997/07/56498a5449cfcf2b96aab9224c78708ab47d72c444e8c833fa7f5be803076156) - _Declan McCullagh<EMAIL_ADDRESS>                    + 1997-08-02 (Sat, 2 Aug 1997 22:21:21 +0800) - [Re: Yet another self-labeling system (do you remember -L18?)](/archive/1997/08/b4deec232c80f41d6b9f64561e195680da073f342bfea111bc3c930a620a5e7d) - _Paul Bradley<EMAIL_ADDRESS>                  + 1997-07-30 (Thu, 31 Jul 1997 05:53:10 +0800) - [Re: Yet another self-labeling system (do you remember -L18?)](/archive/1997/07/76396f62b4452370c8f429da7c8a7ef4b782a0ecaf4fa9a9258029eba7eebdad) - _Kent Crispin<EMAIL_ADDRESS>                  + 1997-08-02 (Sat, 2 Aug 1997 22:08:10 +0800) - [Re: Yet another self-labeling system (do you remember -L18?)](/archive/1997/08/6b9ef85cb8db243f0cd99a620691bfea8e9ea2b516d433d647a4b782e0a518be) - _Paul Bradley<EMAIL_ADDRESS>            + 1997-07-28 (Tue, 29 Jul 1997 01:56:46 +0800) - ["What is your strategy to avoid RSACi type systems?"](/archive/1997/07/15c412c98a68c4ee999bd9368d2235b9736e989037d5ab6fcdf66e9ac1c30ab8) - _Tim May<EMAIL_ADDRESS>            + 1997-07-28 (Tue, 29 Jul 1997 03:23:13 +0800) - [Re: "What is your strategy to avoid RSACi type systems?"](/archive/1997/07/57faece1910ac75c9def54ba874121df2615d85b9b34f3dbbd70bc1df43602f4) - _James Love<EMAIL_ADDRESS>              + 1997-07-28 (Tue, 29 Jul 1997 03:45:31 +0800) - [Re: "What is your strategy to avoid RSACi type systems?"](/archive/1997/07/931483ea0dac93ae3285fb0a282e4ca2378d8aa9c64c1ebfd795ad99db33bbc7) -<EMAIL_ADDRESS>              + 1997-07-28 (Tue, 29 Jul 1997 05:24:22 +0800) - [Re: "What is your strategy to avoid RSACi type systems?"](/archive/1997/07/43c7d5fa320687bb786ca7d18240df5f6ef30ec5b91a326dcf1cd89964e07ec1) - _Adam Back<EMAIL_ADDRESS>            + 1997-07-28 (Tue, 29 Jul 1997 04:30:14 +0800) - Re: "What is your strategy to avoid RSACi type systems?" - _Tim May<EMAIL_ADDRESS>      + 1997-07-25 (Fri, 25 Jul 1997 11:12:24 -0700 (PDT)) - [Re: Yet another self-labeling system (do you remember -L18?)](/archive/1997/07/2bd1a0d271cca1bea6c254b8a00ab22cff3371223f68b4979fd48a365a35468e) - _Tim May<EMAIL_ADDRESS>      + 1997-07-27 (Sun, 27 Jul 1997 11:02:07 -0700 (PDT)) - [Re: Yet another self-labeling system (do you remember -L18?)](/archive/1997/07/203c5f14c77bad39d3a858860f4a5866ff6f9f51b38ee07c808fbe6d8fe9af75) - _Paul Bradley<EMAIL_ADDRESS>        + 1997-07-28 (Mon, 28 Jul 1997 07:02:03 -0700 (PDT)) - [Re: Yet another self-labeling system (do you remember -L18?)](/archive/1997/07/84028aeac168492fe406821571f010cdcf31adfdfd89513a4107316a52542635) - _James Love<EMAIL_ADDRESS>          + 1997-07-29 (Tue, 29 Jul 1997 09:05:46 +0800) - [Re: Yet another self-labeling system (do you remember -L18?)](/archive/1997/07/1183c1888ec5fd86f4cef177d5ccf03e27aa43e1c947fb921e1ecb04c260aadd) -<EMAIL_ADDRESS>(Dr.Dimitri Vulis KOTM)_
          + 1997-07-30 (Thu, 31 Jul 1997 03:09:35 +0800) - [Re: Yet another self-labeling system (do you remember -L18?)](/archive/1997/07/655adda835366fb41d6035891a76e1e1350adb2ba1c84554a16b888dc39da3ef) - _Paul Bradley<EMAIL_ADDRESS>            + 1997-07-30 (Thu, 31 Jul 1997 03:36:42 +0800) - [Re: Yet another self-labeling system (do you remember -L18?)](/archive/1997/07/f91335503ff2812a517d495b213e19bea9375ea53ace1da93111e0fd23f2dcb5) - _James Love<EMAIL_ADDRESS>              + 1997-07-31 (Thu, 31 Jul 1997 09:10:32 +0800) - [Third party rating services NOT self-rating (was Re: Yet another self-labeling system (do you remember -L18?))](/archive/1997/07/8342ecde901932746200961567dcbfe1d71520e0282fefdaf948500ff528d41a) - _Adam Back<EMAIL_ADDRESS>                + 1997-07-31 (Thu, 31 Jul 1997 20:54:20 +0800) - [Re: Third party rating services NOT self-rating (was Re: Yet another](/archive/1997/07/2b148b9dbcc65a42422b9486ec6f29190e2529100b236eb8cf1485b9f928c3f8) -<EMAIL_ADDRESS>(Dr.Dimitri Vulis KOTM)_
              + 1997-07-31 (Fri, 1 Aug 1997 00:40:01 +0800) - [Re: Third party rating services NOT self-rating (was Re: Yet another self-labeling system (do you remember -L18?))](/archive/1997/07/24b62c884cf2af8f49e5b2a962accb19aaa2a0645ca1071d245117986178742d) - _Kent Crispin<EMAIL_ADDRESS>                + 1997-07-31 (Fri, 1 Aug 1997 05:06:13 +0800) - [Re: Third party rating services NOT self-rating (was Re: Yet another self-labeling system (do you remember -L18?))](/archive/1997/07/7c5d3bffefd36e422a5f13c38693138f07e077fcc8f2ed0d560efa5f3edbb931) - _Adam Back<EMAIL_ADDRESS>            + 1997-07-30 (Thu, 31 Jul 1997 03:50:49 +0800) - [Re: Yet another self-labeling system (do you remember -L18?)](/archive/1997/07/475a33b75a6d1943a74a6476d745176be30c2ed9e2d05c2f824f6ffc9665b223) - _Tim May<EMAIL_ADDRESS>    + 1997-07-25 (Sat, 26 Jul 1997 02:14:24 +0800) - [Re: Yet another self-labeling system (do you remember -L18?)](/archive/1997/07/1ca6aebf5e9d747662d0b3bb520edc6a48c3c741327029c18a13053b06d2f71d) - _Tim May<EMAIL_ADDRESS>      + 1997-07-25 (Sat, 26 Jul 1997 05:21:32 +0800) - [Re: Yet another self-labeling system (do you remember -L18?)](/archive/1997/07/1d5d47de94082adf723c52cda7dae02ae4ec92366e04e348698611996ad0e30e) -<EMAIL_ADDRESS>      + 1997-07-25 (Sat, 26 Jul 1997 05:42:44 +0800) - [Re: Yet another self-labeling system (do you remember -L18?)](/archive/1997/07/cdff31b031cf82694c2714f187efecee8b9e0017f64188c5ea1140d44048ec09) - _Tim May<EMAIL_ADDRESS>


text:
### Environments and Configuration

Like other frameworks, SocketStream supports running your code in multiple environments.

SocketStream runs in __development__ mode by default, outputting all incoming and outgoing requests to the terminal, displaying all server-side exceptions in the browser console, and compiling all client assets on the fly in order to aid debugging.

Two other 'preset' environments are available: __staging__ and __production__. Both will load SocketStream with sensible defaults for their intended use.

Preset variables can be overwritten and augmented by two optional files if required: an application-wide config file placed in /config/app.coffee, and an environment-specific file placed in /config/environments/<SS_ENV>.coffee (e.g. /config/environments/development.coffee) which will override any values in app.coffee.

Use the SS_ENV environment variable to start SocketStream in a different environment. E.g:

    SS_ENV=staging socketstream start

An unlimited number of new environments may also be added. You can easily tell which environment you're running in by typing `SS.env` in the server or client console.

Our forthcoming website will detail the full list of configurable params, but for now these can be viewed (and hence overridden in the config file), by typing `SS.config` in the SocketStream console.

#### How configuration files work

Throughout this README you'll see repeated references to config variables which look something like this:

    SS.config.limiter.enabled = true

In this case, you could change the value of the variable by adding the following to your config file:

``` coffee-script
exports.config =
  limiter:
    enabled: true
```

#### Configuring Socket.IO

You may wish to configure Socket.IO 0.8 directly using the optional configure() function within /app/config.coffee

For example:

``` coffee-script
  socketio:
    configure: (io) ->
      io.set 'log level', 5
      io.set 'transports', ['websocket', 'flashsocket', 'xhr-polling']

license: MIT

repository: samvj/socketstream

branch_name: refs/heads/master

extension: md

license_type: permissive

repo_name: samvj/socketstream


text:
![webxcel logo](images/logo.png)

[![license](https://img.shields.io/github/license/michaelneu/webxcel.svg)](https://github.com/michaelneu/webxcel)
[![GitHub tag](https://img.shields.io/github/tag/michaelneu/webxcel.svg)](https://github.com/michaelneu/webxcel)
[![Github All Releases](https://img.shields.io/github/downloads/michaelneu/webxcel/total.svg)](https://github.com/michaelneu/webxcel)
[![GitHub issues](https://img.shields.io/github/issues/michaelneu/webxcel.svg)](https://github.com/michaelneu/webxcel)
[![GitHub pull requests](https://img.shields.io/github/issues-pr/michaelneu/webxcel.svg)](https://github.com/michaelneu/webxcel)
[![FOSSA Status](https://app.fossa.io/api/projects/git%2Bgithub.com%2Fmichaelneu%2Fwebxcel.svg?type=shield)](https://app.fossa.io/projects/git%2Bgithub.com%2Fmichaelneu%2Fwebxcel?ref=badge_shield)

Webxcel creates a full-fledged RESTful web backend from your Microsoft Excel workbooks. It is written in 100% plain Visual Basic macros and comes with a lot of handy tools to help you build the next big thing.

## Features

#### Rapid prototyping

Build your web applications using the autogenerated RESTful CRUD endpoints and the static file server. Webxcel even supports mapping worksheet relationships, so you can model your table schema as flexible as you wish.

To configure a new table, simply insert your column names in the first row of an empty sheet and make the cell of your primary key **bold**. References to other tables can be introduced using `fk_<table>` columns and foreign keys:

![worksheet relationship mapping](images/wrm-schema.png)

When accessing `GET /workbook/cities`, webxcel will return a fully mapped JSON object (response formatted for better readability):

```http
HTTP/1.1 200 OK
Content-Type: application/json
Server: Microsoft Excel/16.0
Content-Length: 200
Connection: close

[
  {
    "id": "1",
    "city": "Seattle",
    "states": {
      "short_name": "WA",
      "full_name": "Washington"
    }
  },
  {
    "id": "2",
    "city": "Springfield",
    "states": null
  }
]
```

#### Batteries already included

No need to spin up a cloud server or function-as-a-service provider, implement rich server side logic right in Microsoft Excel using the built-in tools you already know and love. Using Microsoft Excel's immersive charting, you can gather even deeper insights from your data.

#### Scalable

Webxcel supports scaling from a mere 10% to 400% for extreme detailed data insights. This makes it a perfect fit for small startups to global corporations. By default, webxcel projects are scaled 100%, but you can adjust this setting in the lower right corner of Microsoft Excel to fit your needs.

#### Ready for deployment

Many new devices come with Microsoft Office preinstalled, most of the time you won't have to do any setup at all. Deploying a project is as easy as dropping the file on the server and starting webxcel. Also backup is a no-brainer, simply copy and paste the project file to your backup location (e.g. a flash drive) and you're all set.

#### Future proof with compatibility in mind

Webxcel is built on Windows Sockets 2 and runs on any Microsoft Excel version starting from Microsoft Office 2007, but should work on any macro enabled setup.

#### Hassle-free PHP

Everybody hates PHP configurations. That's why webxcel ships with a PHP plugin that just works, no configuration needed. It's like serverless but better!

#### Missing something?

Check out the [features project](https://github.com/michaelneu/webxcel/projects/2) to get the latest news and ideas for webxcel, or file a [new issue](https://github.com/michaelneu/webxcel/issues/new).

## Getting started

To quickstart development, check out the [example folder](example) for a simple todo app using React and webxcel.

#### Creating new projects

The `build.ps1` PowerShell script creates an empty webxcel project in `build/webxcel.xlsm`, which you can alter to create your table schema. You can also import the classes and modules by hand, but this will consume considerably more time since the import dialog only allows you to select one file at a time.

In order for the build script to succeed, you may have to make a few changes to your Excel settings. Open the Trust Center in the options menu, select Macro Settings and check the following options:
- Enable all macros
- Trust access to the VBA project object model

If you can't run the build script at all, use the following command to temporarily enable PowerShell scripts for the duration of your [PowerShell session](https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.security/set-executionpolicy?view=powershell-6#notes):
```powershell
Set-ExecutionPolicy -ExecutionPolicy Unrestricted -Scope Process
```

#### Running webxcel

Webxcel can be started using either the `Main` sub through the developer ribbon or by assigning it to an interactive component like a button. Once started, webxcel will serve all static files located in the same directory as your project's `.xlsm`.

During webxcel's runtime, Microsoft Excel will not respond. This is due to Visual Basic being executed on the main UI thread. As this is a known issue, webxcel creates a lockfile `<project>.xlsm.lock`, which you can delete to gracefully shut down the server. You also could force-quit Microsoft Excel, but this might result in the port being blocked from further usage until a reboot (webxcel will raise the error [`ErrorSocketBind`](src/Modules/StatusCode.bas) whenever it can't bind to a specific port).

## Contributing

To contribute, clone the repository, build an empty webxcel project and start hacking in the Visual Basic editor (Alt + F11). Once you've finished your contribution, export your classes or modules and create a [pull request](https://github.com/michaelneu/webxcel/compare). As Visual Basic is case-insensitive, please check your exported classes to minimize renaming commits (e.g. after introducing a new variable `Dim name` and the editor globally renamed `Name` to `name`).

## Is it any good?

[Yes](https://news.ycombinator.com/item?id=3067434).

## License

Webxcel is released under the [MIT license](LICENSE).

repository: tquentin/webxcel

repo_name: tquentin/webxcel


text:
---
title: Jupyter Or Julia?
categories: article
tags: open-source
author: Gao Ruipeng
image: "/assets/img/2019-02-23-jupyter-or-julia-preview.png"
---
## Introduction to Jupyter

![][image-1]

Project Jupyter is a nonprofit organisation created to develop open-source software, open-standards, and services for interactive computing across dozens of programming languages.
Users are able to code and share their work on this platform for free~

### The history behind this fascinating notebook…

In 2014, **Fernando Pérez** (software developer/ free software advocate) created something called “IPython”, and later he announced a spin-off project from IPython called Project Jupyter. At the same time, IPython did not disappear, instead, it continued to exist as a Python shell and a kernel for Jupyter.

![*the above-mentioned programming languages are not exhaustive*][image-2]

### An important concept: Open-source Software

It is a type of computer software in which source code is released under a license in which the copyright holder grants users the rights to study, change, and distribute the software to anyone and for any purpose. And according to Jupyter website:

> Jupyter will always be 100% open-source software, free for all to use and released under the liberal terms of the modified BSD license.

### How to access Jupyter ???

There are 3 ways to access Jupyter Notebook :
1. Directly through your browser
2. Microsoft Azure Notebook
3. Install Jupyter on your laptop

### How to contribute ???

You can contribute by checking out the Jupyter Contributing guide. This contains information about the different projects in the Jupyter ecosystem.

### Is Jupyter and Julia related?

Jupyter is a platform for users to write and share their codes, while Julia is actually a high-level general-purpose dynamic programming language, it is supported on the Jupyter notebook.

## Then, what is Julia?

Julia is designed to address the needs of high-performance numerical analysis and computational science. Started in 2009, Jeff Bezanson, Stefan Karpinski, Viral B. Shah, and Alan Edelman created a free language that was both high-level and fast. In 2012, the team launched a website with a blog post explaining the language's mission. Karpinski said of the name "Julia":

> There's no good reason, really. It just seemed like a pretty name.

Julia has attracted some high-profile clients, e.g. from investment manager BlackRock to the British insurer Aviva.

-In August 2018, the number of downloads had reached 2,000,000.-

[image-1]: {{ "/assets/img/2019-02-23-jupyter-or-julia-1.png" | absolute_url }}
[image-2]: {{ "/assets/img/2019-02-23-jupyter-or-julia-2.png" | absolute_url }}

repository: dunmanhigh/smarticc

branch_name: refs/heads/gh-pages

gha_language: HTML

gha_license_id: MIT

repo_name: dunmanhigh/smarticc


text:
#She said

"Rachel said"

#See

This adds emphasis to what Rachel says next. AT: "Listen" or "Pay attention to what I am about to tell you"

#there is my servant Bilhah ... I will have children by her

At that time, this was an acceptable way for a barren woman to have children that would legally belong to her. (See: [[:en:ta:vol1:translate:figs_explicit]])

#Bilhah

This is the name of Rachel's female servant. See how you translated this name in [[:en:bible:notes:gen:29:28|29:29]].

#on my knees

This is a way of saying that the child that Bilhah gives birth to will belong to Rachel. AT: "for me" (See: [[:en:ta:vol1:translate:figs_idiom]])

#I will have children by her

"and in this way she will cause me to have children"


text:
---
layout: page
location: "pages/coding/infra/cmd/leaf"
permalink: /pages/coding/infra/cmd/Linux
---

## Misc

  - To find out which version of CentOS: **cat /etc/centos-release**

  - Single unified file system, with disks mounted on that file system
    at different mount points

  - dev is a special bit of the file system for devices

      - You can interact directly with devices using those iles

      - If you run the df command on a linux box you’ll often see hard
        drives called sd or md,

          - eg you might see sda1, sda2, , sdb1, sdb2 where 1 and 2
            represents partitions and a and b are different disks.

          - sd is something like satyrd disk, md is software RAID – sd
            is more modern

          - if it’s md you’ll just get multiple partitions, not multiple
            disks (or something)

          - If you specify the root, you’ll only get one result per host
            when you run **df /**

  - Use **yum provides python3** to find which package will give us
    python3

      - We want python 3.7 for Alex’s script - gives really good string
        interpolation. **yum** only has Python 3.4

      - **yum** is locked down in CentOS, everything super secure, so
        doesn’t have stuff as up to date as **brew** does (eg python3)

  - Kernel always starts first, but can’t do much, so the next thing to
    start is the first process

      - Old school way of killing Linus = **kill 1** – ie kill the
        process which is numbered 1

          - So for instance if you run a docker container with ES where
            ES is process Id 1, then if you kill ES you will kill the
            whole docker container

          - Effectively the container is the process if there is only
            one process

      - Process 1 is your user space

      - Each user space is completely separate therefore low overhead

## Systemctl + SystemD

  - Systemctl – facility for interacting with systemD – An init system
    used for CentOS 7 and most newer Linux distribs

      - An init system controls what processes start up at system
        startup – you can use it to control processes like starting,
        stopping, restarting etc

  - Can be used to do stuff with services, eg start / stop services, eg
    ElasticSearch

  - For instance get status of ES: **systemctl status elasticsearch1**

  - SystemD handles processes

      - There isn’t much great documentation - best bet is to Google
        “systemd unit file”

  - Systemd unit files:

      - Every service / process will have its own unit file - eg (on
        nagios01)/usr/lib/systemd/system/nsca.service for the NSCA
        process

      - If you have a look at that unit file, you’ll see it has actions
        defined for ExecStart and ExecReload - often don’t need anything
        for Stop cos you just use kill for that.

      - The paths you’ll see are root paths, so using system commands
        like /bin/kill to kill the process which has its own PID defined
        (the PID is what you see when you do **ps -aux**)

      - NSCA has type=forking, which means that when it starts, it will
        create a new process but will then fork another process from
        that one. This can happen when it needs elevated privileges to
        get things started but then creates a new forked process with
        lower privileges, and kills the parent one (although sometimes
        parent processes are kept around for whatever reason).

  - Systemctl commands:

      - Cmd: **systemctl** **list-unit-files**

      - Cmd: **systemctl status \[service name\]**

      - Cmd: **systemctl restart \[service name\]**

      - Cmd: **systemctl start \[service name\]**

      - Cmd: **systemctl stop \[service name\]**

      - Cmd: **systemctl disable \[service name\]**

      - Cmd: **systemctl** **journal -u \[service name\]**: get logs

          - Or try **journalctl -u \[service name\]**

          - We once got the following error on thingelkarchive15
            (7/8/19, investigating THING-142657) when running
            journalctl: “Error was encountered while opening journal
            files: Input/output error”

          - Tera fixed this by manually removing the journald logs and
            restarting systemd-journald

      - Cmd: **systemctl reset-failed** when you want to restart a
        failed service

          - **systemd** manages the restart of services when they fail

          - but if a service fails too many times, too quickly, it will
            stop trying to restart the service and will instead mark the
            service as failed

          - if a service is marked as failed by systemd then it ignores
            new commands to start it back up

          - there is a command **systemctl reset-failed** that clears
            the failure flag from the service and lets one restart the
            service again the normal way

## Syslog

  - Syslog is a Unix standard

  - Any Linux based server will be running syslog to do its host based
    logging

  - Eg audit logs, kernel logs all go through syslog

  - They use Syslog NG (Next Generation?)

  - There are different binaries you can slot in to fulfil the Syslog
    role

  - They all use the same protocol

  - Although originally designed for system events, is also used here
    for application logs

  - Syslog-ng is running to get data from servers to loghosts

      - Loghosts keep copies of all logs

      - Syslog-ng has client and server versions - running on clients to
        send data and on loghosts as server - has an open port that you
        send the data to, then stores the data on disk

## Unix

  - Linux is a flavour of unix

  - There are some commands the same

  - Most of the time the difference doesn’t really matter

  - But some commands in unix have different behaviour to Macs (OSX is
    based on unix)

  - Windows cmd prompt (DOS???) has a lot of differences

  - Normally if you’re struggling in the terminal, you’ll want to look
    up unix commands

## Windows

- If you want to run Linux on Windows, you need [WSL](/pages/coding/dotnet/Windows-Subsystem-for-Linux---WSL).

## Yum

  - Yum is the package manager used in CentOs Linux

  - Yum is locked down in CentOS, everything super secure, so doesn’t
    have stuff as up to date as **brew** does (eg python3)

      - Apparently (according to Ben Smith) you can manually add the
        newer python repo for yum on the command line - but you have to
        accept the keys for the repo not shipped with the distribution

  - Use **yum provides python3** to find which package will give us
    python3

  - Use **yum repolist** or **yum repolist -v** to see list of current
    repos

      - \-v means verbose

  - Repos are also visible here: **cd /etc/yum.repos.d**

      - (In those .repo files, set enabled=0 to disable a repo)

## Crons / Cron jobs

  - Jobs which run periodically

  - There’s a format which specifies how regularly they run

  - Eg Might contain an asterisk which is a wildcard

  - Cmd: **crontab -l** – gives you a list of cron jobs for current user

  - Cmd: **sudo** **crontab -l** – lists all cron jobs for root

## Find default .bashrc in Ubuntu

It's here: `/etc/skel/.bashrc`

repository: claresudbery/clare-wiki-ably

gha_language: Shell

gha_license_id: NOASSERTION

repo_name: claresudbery/clare-wiki-ably


text:
### 0.1.0 (2015-10-13)

## BREAKING CHANGE
This release changes the semantics of navigating to a parent state of a sticky state.  A sticky state tree is now *always exited* if its parent state is directly activated.  This provides a consistent rule and addresses issue #212.

Previously, navigating from a sticky state tree to the parent of the sticky state tree would not exit the children.  However, if the sticky state tree was inactivated, navigating from elsewhere to the parent of the sticky state tree *would* exit the children.

Example:
Given states A, A.1 (sticky) and A.2

The previous behavior:
 - If A.1 is active and you transition to A, A.1 was inactivated
 - If A.1 is inactive, A.2 is active, and you transition to A, A.1 was exited

The new behavior:
 - If A.1 is active and you transition to A, A.1 is exited
 - If A.1 is inactive and A.2 is active, if you transition to A, A.1 is exited

#### Bug Fixes

* **sticky:**
  * BC-BREAK always orphan inactive children of the toState ([990e73ee](https://github.com/christopherthielen/ui-router-extras/commit/990e73ee1000f2811728b273236859c1a3f22228), closes [#212](https://github.com/christopherthielen/ui-router-extras/issues/212))
  * Exit all orphaned inactive states. ([72a6ce51](https://github.com/christopherthielen/ui-router-extras/commit/72a6ce51a996f9a002ba0db62b42bc11f25fb516), closes [#217](https://github.com/christopherthielen/ui-router-extras/issues/217))
  * Properly support Typed Parameters (object params) by using $$equals() (if ui-router 0.2.12+) to determine if params are equal ([5d5ce6de](https://github.com/christopherthielen/ui-router-extras/commit/5d5ce6de313208ae3123d02a19e75ed5efb72a79), closes [#239](https://github.com/christopherthielen/ui-router-extras/issues/239))
* **transition:** mitigate angular-permissions causing exceptions. ([5fbd478c](https://github.com/christopherthielen/ui-router-extras/commit/5fbd478cdd14c36b439a8f138419fd02edea3819))

* **package.json:** remove engines declaration allowing any version of node ([4a575e41](https://github.com/christopherthielen/ui-router-extras/commit/4a575e4102c8589fb89172610a7454f96ee72c13))

#### Features

* **previous:** reject $previousState.go if unassigned memo is passed in ([48affbc1](https://github.com/christopherthielen/ui-router-extras/commit/48affbc19c1a2c6d13e51beb796c0a0ca127de81))
* **dsr:** Added getRedirect() to $deepStateRedirect ([45c535af59b4](https://github.com/christopherthielen/ui-router-extras/commit/45c535af59b4344fda854dd1c88cd155f8ad241a)), closes [#184](https://github.com/christopherthielen/ui-router-extras/issues/184)

### 0.0.14 (2015-06-18)

#### Bug Fixes

* **dsr:** Use state.includes instead of state.name.indexOf to determine if a dsr state is  ([89565f4d](https://github.com/christopherthielen/ui-router-extras/commit/89565f4d0dfdca1b8e75d586fa8f85adcda0f880), closes [#208](https://github.com/christopherthielen/ui-router-extras/issues/208))
* **future:**
  * commented out debug code ([b53c1ef7](https://github.com/christopherthielen/ui-router-extras/commit/b53c1ef73cad583df705fa65d82d2be2d4b1d9c5), closes [#156](https://github.com/christopherthielen/ui-router-extras/issues/156))
  * Fixed double-urlRouter.sync() because of future state retry ([f22c5439](https://github.com/christopherthielen/ui-router-extras/commit/f22c543968750a97346e3938e7c75b02422d69c9), closes [#138](https://github.com/christopherthielen/ui-router-extras/issues/138))
  * Allow future state to be child of url-less abstract state Manually merged in pul ([3a2419a7](https://github.com/christopherthielen/ui-router-extras/commit/3a2419a7a55715661bf38135b041928bc655f804))
* **previous:** Allow previous state to track states without URLs. ([9c4be9f3](https://github.com/christopherthielen/ui-router-extras/commit/9c4be9f3e73c9229dc371af70a3a2ade3980a75a), closes [#175](https://github.com/christopherthielen/ui-router-extras/issues/175))
* **sticky:**
  * Fixed non-strict references to 'forEach' ([710e1d77](https://github.com/christopherthielen/ui-router-extras/commit/710e1d776b9a85ead2b6262e3b37eb4971c74f65))
  * prevent error on reseting missing state PR #206 ([44edae43](https://github.com/christopherthielen/ui-router-extras/commit/44edae43d680550af030d3404d6ee730da03d43d))
  * Refactored logic to better calculate exit/enter/(in|re)activations ([43be5d9d](https://github.com/christopherthielen/ui-router-extras/commit/43be5d9d064cfda547dc50f65c28ae045badeb19), closes [#131](https://github.com/christopherthielen/ui-router-extras/issues/131))
* **extras:** restore ie8 compatibility due to reserved words ([c25346d1](https://github.com/christopherthielen/ui-router-extras/commit/c25346d172fccadebcbf88abb3b7cf5153ab5efd))
* **karma:** fixes "lodash" reference ([4cfc3bbd](https://github.com/christopherthielen/ui-router-extras/commit/4cfc3bbdcc0e53a350858b78089fc375335c74ec))

#### Features

* **dsr:** Added getRedirect() to $deepStateRedirect ([45c535af](https://github.com/christopherthielen/ui-router-extras/commit/45c535af59b4344fda854dd1c88cd155f8ad241a), closes [#184](https://github.com/christopherthielen/ui-router-extras/issues/184))
* **future:** Allow future states to be retried after a failed lazy load attempt ([6e6f3ece](https://github.com/christopherthielen/ui-router-extras/commit/6e6f3ece5034dfcb1c5c23cf8e47405c12c55595), closes [#196](https://github.com/christopherthielen/ui-router-extras/issues/196))
* **sticky:** added $stickyState.reset("*") ([3656835d](https://github.com/christopherthielen/ui-router-extras/commit/3656835ddb949c53b6b99ca69237be917dc1ea85), closes [#162](https://github.com/christopherthielen/ui-router-extras/issues/162))

### 0.0.13 (2015-02-02)

This release comes 2 days after 0.0.12 and fixes a couple of bugs

#### Bug Fixes

* **future:** fix modular build of futurestates ([abfdc34d](https://github.com/christopherthielen/ui-router-extras/commit/abfdc34d41afea34ca8cccd3db5f81bb3a856eb4), closes [#151](https://github.com/christopherthielen/ui-router-extras/issues/151))
* **statevis:** add dep from statevis to sticky ([1a488d84](https://github.com/christopherthielen/ui-router-extras/commit/1a488d84257060868f3c70b6ef7305f4936212eb), closes [#153](https://github.com/christopherthielen/ui-router-extras/issues/153))
* **sticky:** Fix modular sticky states build ([21d1d129](https://github.com/christopherthielen/ui-router-extras/commit/21d1d129963b8bfc724823f93ca0efc32868ec77), closes [#154](https://github.com/christopherthielen/ui-router-extras/issues/154))
* **transition:** transition promise now resolved correctly ([598452ed](https://github.com/christopherthielen/ui-router-extras/commit/598452ed5bae76b8add8707794740993d3242011), closes [#152](https://github.com/christopherthielen/ui-router-extras/issues/152))

### 0.0.12 (2015-01-31)

View issues tagged with 0.0.12

#### Bug Fixes

* **$futureState:**
  * Better logic for failed lazy load of future state chore($futureState): clean up  ([4f541906](https://github.com/christopherthielen/ui-router-extras/commit/4f541906a620c582ef33c5aab26d8259777ca70a))
  * handle .otherwise() when the typed url matches a future state url + ".*" ([2bdf864e](https://github.com/christopherthielen/ui-router-extras/commit/2bdf864e7c9f8198614d8b24d327cd3599ce6711), closes [#124](https://github.com/christopherthielen/ui-router-extras/issues/124))
  * Fixed url.concat to use parentState.url, or parentState.navigable.url. ([31ca73bd](https://github.com/christopherthielen/ui-router-extras/commit/31ca73bdc07ac80b53e9ec76f7f4eca268461fa2))
* **$stickyState:** Made equalForKeys compatible with state.ownParams breaking change in UI-Router 0 ([5aba1345](https://github.com/christopherthielen/ui-router-extras/commit/5aba1345152f589d6cf913d26b5b00c6ee0f1884), closes [#112](https://github.com/christopherthielen/ui-router-extras/issues/112))
* **dsr:** Allow default substates and parameters for deep state redirect. ([20fade74](https://github.com/christopherthielen/ui-router-extras/commit/20fade743e46bbb68158f251d0880905391ed806), closes [#150](https://github.com/christopherthielen/ui-router-extras/issues/150))
* **previous:**
  * Future states URL is now optional ([9233ea90](https://github.com/christopherthielen/ui-router-extras/commit/9233ea903bfeadfdd24039ea3ceb21359c1a9017), closes [#129](https://github.com/christopherthielen/ui-router-extras/issues/129))
  * Previous state no longer tracks abstract from-states (e.g., root) ([b0431d68](https://github.com/christopherthielen/ui-router-extras/commit/b0431d6884d335208161be1e562d3682da168d9d), closes [#123](https://github.com/christopherthielen/ui-router-extras/issues/123))
  * Previous state now tracked using $transition$ promise ([1127ef62](https://github.com/christopherthielen/ui-router-extras/commit/1127ef62274bc4561370bbc3da6a4d9b5ba1c6d4), closes [#120](https://github.com/christopherthielen/ui-router-extras/issues/120))
* **sticky:**
  * fixed reload: true for ui-router 0.2.8 ([82783374](https://github.com/christopherthielen/ui-router-extras/commit/82783374ae07b7b7f07b597a712fbc89a00ca457))
  * Fixed unexpected exit/reload of inactive state. ([c8eff13d](https://github.com/christopherthielen/ui-router-extras/commit/c8eff13d32216070e743fe772325f8b81b959a17), closes [#131](https://github.com/christopherthielen/ui-router-extras/issues/131))
  * fix sticky state registration ([d84311eb](https://github.com/christopherthielen/ui-router-extras/commit/d84311eb78d0da66911216b0250bc197619cd1d4))

#### Features

* **$futureState:** Added $stateAdded event ([b6da3998](https://github.com/christopherthielen/ui-router-extras/commit/b6da3998dc903eb54f4f74d6eabe776c63260a04))
* **previous:** forget can now forget the previous state ([992b88bd](https://github.com/christopherthielen/ui-router-extras/commit/992b88bd2f716e4bd8637cc6429f7670bf0a5e88), closes [#145](https://github.com/christopherthielen/ui-router-extras/issues/145))
* **sticky:** Allow reloading of partial state tree ([27d6c8c5](https://github.com/christopherthielen/ui-router-extras/commit/27d6c8c5adbf7ffff059d6e66b9ec1b0e4963408), closes [#139](https://github.com/christopherthielen/ui-router-extras/issues/139))
* **uiRouterExtras:** modularize the code base and build system. switched to gulp ([aebf936d](https://github.com/christopherthielen/ui-router-extras/commit/aebf936db9cd4c7dc8f2b813f20572ba3b07bea6))

### 0.0.11 (2014-11-21)

This release focuses on improvements to Future States.

#### Bug Fixes

* load  in lazyLoadState ((32fcf169))
* **$futureState:**
  * when concatting with parent url, use parent.navigable.url ((63ec61bf), closes (#69))
  * fix top-level future states (root state is parent) ((e5847356), closes (#98))
  * also register parent future states returned from factory fn ((48995fb3), closes (#99))
  * fix transition to future state using .relative sref ((e953de61), closes (#3))
  * unregister lazyloaded future states closes #2 ((67ad0d47))
  * allow state lookup by object reference, or by state name ((6ca316cd))
* **$stickyState:** Make sticky state compatible with UI-Router 0.2.12 ((751db8e1), closes (#88))
* **ie:** added ['finally'] method invocation on ((095e5675))

#### Features

* **$futureState:**
  * use UrlMatcher for future url ((f1b0fe57), closes (#54), (#82))
  * allow regexp matching in urlPrefix ((15c150d1))
  * future states may now have parent futurestate ((8e11a7c6), closes (#63))
  * support $urlRouterProvider.otherwise() ((748f2f1f))

* **$previousState:** Add support for default previous state/params ((1c08ed7c))
* **$stickyState:** Added $stickyState.reset() function ((af427116), closes (#48))
* **$deepStateRedirect:**
  * add support for DSR only when params match. ((ed16ae4c))
  * add service function to reset DSR ((c17e27f0), closes (#87))
  * provide state dsr function with to and redirect info. ((c46fd283), closes (#91))

#### Breaking Changes

* use FutureState.name instead of FutureState.stateName to be consistent with UI-Router (backwards compat attempted, but not guaranteed)
- BREAKING CHANGE: use FutureState.url instead of FutureState.urlPrefix to be consistent with UI-Router (backwards compat attempted, but not guaranteed)
- FutureState.url is now processed using UI-Router's UrlMatcher code.
- FutureState.url is concat'd with the parent state's url to create the UrlMatcher/regexp.
- FutureState.url has a wildcard added to the end to match anything extra (.*)
- Changed example iframe factory to use .name and .url and .parent
- internalStates map now gets root internal state

Fixes #54
Closes #82 (PR)
 ((f1b0fe57))

### 0.0.11 (2014-11-21)

#### Bug Fixes

* load  in lazyLoadState ((32fcf169))
* **$deepStateRedirect:** provide state dsr function with to and redirect info. ((c46fd283), closes (#91))
* **$futureState:**
  * when concatting with parent url, use parent.navigable.url ((63ec61bf), closes (#69))
  * fix top-level future states (root state is parent) ((e5847356), closes (#98))
  * also register parent future states returned from factory fn ((48995fb3), closes (#99))
* **ie:** added ['finally'] method invocation on ((095e5675))

### 0.0.11 (2014-11-03)

#### Bug Fixes

* allow regexp matching in urlPrefix ((15c150d1))
* **$deepStateRedirect:**
  * add service function to reset DSR ((c17e27f0), closes (#87))
  * add support for DSR only when params match. ((ed16ae4c))
* **$futureState:**
  * future states may now have parent futurestate ((8e11a7c6), closes (#63))
  * fix transition to future state using .relative sref ((e953de61), closes (#3))
  * use UrlMatcher for future url ((f1b0fe57), closes (#54), (#82))
  * support $urlRouterProvider.otherwise() ((748f2f1f))
  * unregister lazyloaded future states closes #2 ((67ad0d47))
  * allow state lookup by object reference, or by state name ((6ca316cd))
* **$stickyState:**
  * Added $stickyState.reset() function ((af427116), closes (#48))
  * Make sticky state compatible with UI-Router 0.2.12 ((751db8e1), closes (#88))

#### Features

* **$previousState:** Add support for default previous state/params ((1c08ed7c))

#### Breaking Changes

* use FutureState.name instead of FutureState.stateName to be consistent with UI-Router (backwards compat attempted, but not guaranteed)
* use FutureState.url instead of FutureState.urlPrefix to be consistent with UI-Router (backwards compat attempted, but not guaranteed)

### 0.0.10 (2014-08-27)

#### Bug Fixes

* Proper filename casing for case-sensitive filesystems #47 from theomy ((9b5a62b2))
* **$stickyState:**
  * Fix states not exiting when the state parent attribute is used ((a3f0f9db))

(instead of the fully qualified dotted notation)
  * Fixed the decorated $state.transitionTo promise result. ((873e9a79))

When it should have been returning a rejected promise, it was instead returning a resolved promise with the error as the value. closes #42
  * Made root.locals inherit from __inactives.locals. ((02c804c0))

Removed resolve and globals from __inactives. closes #37
  * Sticky States needs access to the root state. ((f3cf772c))

It can now access it even if no user-defined states have been decorated. closes #36
  * Proper filename casing for case-sensitive filesystems - renamed stickystate.js to stickyState.js

#### Features
* **DSR:**
  * state.deepStateRedirect may now be a function. closes #44 ((d37442e))
* **$transition$:**
  * new injectable promise object $transition$ ... docs pending

#### Other
  * Add injection annotations so other people can minify correctly.  closes #38 ((68105836))
  * Reformatted code

# 0.0.9
## Features

- fix(build): Add versioned header to release files. closes #33

## Bug Fixes

- fix($futureState) Fixed double resolve on initial app load.  Closes #28  Closes #32
- fix($deepStateRedirect): DSR state is now remembered correctly when using { ignoreDsr: true } to transition directly to DSR state.  Closes #31
- fix($previousState): Added options parameter to $previousState.go().  Closes #30

# 0.0.8
## Features
- chore($stickyState) Technical documentation of Sticky State internal implementation.  closes #23
- Added an transitionTo option, { ignoreDsr: true } to transition directly to a DSR state.  closes #25

## Bug Fixes

- fix(stickyState) Allow transitionTo without options specified.  fixes #21
- fix($stickyState): Fixed sticky-state triggers unnecessary re-resolves. closes #22
- fix($stickyState): Fixed state params inheritance not accounted for when processing the transitions causing sticky transitions to fail when parent state has a parameter.  closes #24
- fix($deepStateRedirect): Added ignoreDsr option for $state.transitionTo. closes #25
- fix($futureState): Delay initial re-sync using $timeout.  This stops the standard ui-router sync from superseding the futureStates resync.  I think this fixes #28
- fix($deepStateRedirect): $q not defined (when a transition is aborted or fails).  closes #27
- fix($stickyState): Fixed bug introduced in 0.0.7 refactor which caused sticky states to fail completely.  Now, I made root.locals prototype inherit from __inactives.locals so views can be located by the ui-views.  fixes #29

## Other Stuff
- Removed UI-Router 0.2.6 from the grunt test runner.  See issue #26
- chore($stickyState) Refactored sticky state internals from inserting __inactives into each state's path to prepending __inactives as a parent to root ("")
- test($stickyState): Added unit test for controller not re-invoked on state reactivation.  closes #24 again.
- test($stickyState): Added unit tests for root locals prototypally inheriting from __inactives.locals to test for the scenario in issue #29

# 0.0.6
## Features
- Added tests for $previousState.  closes #13
- Compatible with UI-Router HEAD (will probably be released as UI-Router 0.2.11 or 0.3.0). Closes #17
- Removed last usage of UnderscoreJS. closes #8
- Cleaned up bower release files. closes #15

## Bug Fixes
- Fixed minification bug. closes #18
- Added array notation to deepStateRedirect.js initialization.  closes #18
- No longer setting a different state.self object on the surrogate states.  closes #1 , closes #16
- Reorganized karma tests to run against multiple versions (0.2.5, 0.2.6, 0.2.7, 0.2.8, 0.2.10, HEAD) of ui-router and minified ct-ui-router-extras.  closes #19
- Fixed DSR Spec so its getStates function doesn't conflict with other spec function.

## Other stuff
- Moved pathFrom() into testUtil.js
- Added uiRouterVersion() parser to testUtil.js
- Reorganized files.js layout (this needs a makeover, i do not like)

# 0.0.5
## Features
- Added state locals/view debugging output when $stickyStateProvider.enableDebug(true);
- Added Previous State service for returning to a workflows entry point issue #10

## Bug Fixes
- Added karma runner for UI-Router versions 0.2.0, 0.2.8, 0.2.10, HEAD@2014-07-05 issue #12
- Removed runtime dependency on underscoreJS. issue #8
- Sticky transitions lose locals (cached views) when pivoting over root state issue #9
- Wrap release ct-ui-router-extras.js in IIFE (function(){})() issue #6
- Clean up grunt warnings issue #5
- Remove sticky state debugging output issue #4

## Breaking Changes
- example state factories are now hidden inside the IIFE.

# 0.0.4-preview
## Features
- Sticky states
- Deep State Redirect
Future States

## Bug Fixes

## Breaking Changes

repository: mazehall/eintopf

gha_language: CoffeeScript

repo_name: mazehall/eintopf


text:
# cantools
A collection of CLI tools for receiving and transmitting CAN frames using Linux SocketCAN

Description
---
These tools can be used - and were developed - using a Raspberry Pi 3 with a PiCAN2 HAT.
* __cantx__: one-time or cyclic transmission of a single frame
* __canprint__: printing frames into the console
* __cangw__: routing frames between CAN and UDP

Build
---
Use `make` to build all tools or `make cangw` etc.

Usage
---
| Tool | Options | Short | Required | Default | Description |
| ---- | ------- | :---: | :------: | ------- | ----------- |
| cantx | device
id
payload
cycle
realtime | `-d`
`-i`
`-p`
`-c`
`-r` |
✓

 | can0

00
-1 (send once)
false | CAN device
Frame ID
Hex data string
Repetition time in ms
Enable realtime scheduling policy |
| canprint | device | `-d` | | can0 | CAN device |
| cangw | listen
send
realtime
timestamp
device
ip
port | `-l`
`-s`
`-r`
`-t`
`-d`
`-i`
`-p` | `-l` ∨ `-s`
`-l` ∨ `-s`

✓
✓ |

false
false
can0

 | Route frames from CAN to UDP
Route frames from UDP to CAN
Enable realtime scheduling policy
Prefix payload with 8-byte timestamp (ms)
CAN device
IP of remote device
UDP port |

Examples:
```bash
# Send frame each 100 ms
$ ./cantx --device=can0 --id=42 --data=0807060504030201 --cycle=100

# Route frames from CAN to UDP
$ ./cangw --listen --ip=<IP_ADDRESS> --port=30001

# Same but using short options
$ ./cangw -li <IP_ADDRESS> -p 30001

# Route frames between interfaces and add timestamps to UDP payload
$ ./cangw -lsti <IP_ADDRESS> -p 30001
```

Acknowledgements
---
[cxxopts](https://github.com/jarro2783/cxxopts) for parsing command line options

repository: YajunQi/cantools

repo_name: YajunQi/cantools


text:
---
layout: post
title: Kali, Postgres, GVM, and Troubleshooting
gh-repo: 4D5A
gh-badge: [follow]
categories: [blog]
tags: [Kali Linux, Cybersecurity, InfoSec]
after-content: [disclaimer-notice.html]
---

Everything was working well, that is until you decided to install a newer version of Postgres, right?

## Configuring Postgres

First, you need to make sure that your new version of Postgres is running on port 5432.1

For example, if the new version of Postgres is version 14, then you would need to open /etc/postgres/14/main/postgresql.conf and see what port it is using.2

If it is not using port 5432, then you will need to either change the port numbers your other versions of Postgres are using so you can configure the new version of Postgres to use port 5432, or you will need to uninstall the other versions of Postgres (which may break other programs unless you make sure they are all using the new version of Postgres and upgrade their Postgres clusters as well.3

Once you have the new version of Postgres listening on port 5432, you need to upgrade the GVM Postgres cluster from the old version of Postgres to the new version of Postgres.

In the following example, I assume that you have just installed Postgres version 14, that you have restarted your computer, and that you do not have any data being stored in any Postgres version 14 databases, because there aren’t any yet. If you already have data stored in any Postgres version 14 databases, then don’t drop the cluster unless you are willing to loose all of the data stored there.

For example, if the old version of Postgres is version 13 and the new version of Postgres is version 14, you would run the following commands:4

First we should stop the Postgres version 14 cluster. We need to do this, because we need to upgrade the Postgres version 13 cluster to Postgres version 14 but when we installed Postgres version 14, it created a cluster that is not being used and if we leave it there, will cause the upgrade of the cluster from the older version of Postgres to fail.

~~~
sudo pg_dropcluster --stop 14 main
~~~

Now we can upgrade the Postgres version 13 cluster.

~~~
sudo pg_upgradecluster 13 main
~~~

Next, you should restart your Postgres service. To restart the Postgres service, you can run this command:

~~~
sudo systemctl restart postgresql
~~~

## Installing GVM

If you do not already have GVM installed, you can do that now. This assumes you have already checked for kali updates, installed them, and restarted your computer. You will want to run the following command:

~~~
sudo apt install gvm
~~~

After you install GVM, you need to run the Kali GVM setup script. Please notice, gvm-setup is a Kali maintained script and is not created, maintained, or supported by Greenbone.5

## Using gvm-setup

If you experience a problem running gvm-setup, you can try these steps or search Kali’s forums [https://forums.kali.org/](https://forums.kali.org/). While the Greenbone staff are very helpful and often reply to questions on the Greenbone forums, they did not create, do not maintain, and do not support the gvm-setup script. The gvm-setup script was created by and is maintained by Kali.

If you run gvm-setup and it tells you that it cannot connect to the database, stop the process because the setup is not going to store the information in Postgres. You need to fix the Postgres problem(s) first and then re-run gvm-setup.

## If you can’t login to GVM

If you are having a problem logging into GVM, then first see if the account is stored in the Postgres database _gvm with this command6:

~~~
sudo runuser -u _gvm -- gvmd --get-users
~~~

If you see your account but you cannot login, you can run this command to reset the password7:

~~~
sudo runuser -u _gvm -- gvmd --user=admin --new-password=NEWPASSWORD
~~~

If you cannot login after you reset the password, you can try restarting the gvm service by running the following command:

~~~
sudo systemctl restart gvmd
~~~

You can also create a new GVM user but running the following command8:

~~~
sudo runuser -u _gvm -- gvmd --create-user=USER --new-password=NEWPASSWORD
~~~

To delete a GVM user, you can run the following command:

~~~
sudo runuser -u _gvm -- gvmd --delete-user=USER
~~~

[1] [https://community.greenbone.net/t/gvm-install-setting-on-kali-linux-2020-3/7298/6](https://community.greenbone.net/t/gvm-install-setting-on-kali-linux-2020-3/7298/6)

[2] [https://forums.kali.org/showthread.php?50523-GVM-installation-problems&p=107032#post107032](https://forums.kali.org/showthread.php?50523-GVM-installation-problems&p=107032#post107032)

[3] [https://forums.kali.org/showthread.php?50523-GVM-installation-problems&p=107032#post107032](https://forums.kali.org/showthread.php?50523-GVM-installation-problems&p=107032#post107032)

[4] [https://bugs.kali.org/view.php?id=6764](https://bugs.kali.org/view.php?id=6764)

[5] [https://community.greenbone.net/t/gvm-install-setting-on-kali-linux-2020-3/7298/5](https://community.greenbone.net/t/gvm-install-setting-on-kali-linux-2020-3/7298/5)

[6] [https://community.greenbone.net/t/cant-login-to-openvas-web/9397/3](https://community.greenbone.net/t/cant-login-to-openvas-web/9397/3)

[7] [https://community.greenbone.net/t/cant-login-to-openvas-web/9397/3](https://community.greenbone.net/t/cant-login-to-openvas-web/9397/3)

[8] [https://community.greenbone.net/t/greenbone-security-assistant-20-08-1-admin-password-reset/8544](https://community.greenbone.net/t/greenbone-security-assistant-20-08-1-admin-password-reset/8544)

branch_name: refs/heads/main


text:
# 3. Longest Substring Without Repeating Characters

[LINK TO THE PROBLEM](https://leetcode.com/problems/longest-substring-without-repeating-characters/)

path: /LeetCode_problems/Longest Substring Without Repeating Characters/Problem.md


text:
niolex-common-utils
===================

`Common Utils` is a pure Java utility project for faster Java development.

* commons-core Common utilities, including codec collection compress concurrent config file event net stream etc...
* commons-demo Useless, please skip.
* commons-framework Currenty only contain the SEDA framework.
* commons-notify The notify framework based on Zookeeper.
* commons-remote A remote server for developers to look inside the JVM and change the status etc...
* commons-seri Utilities for faster usage of Json Smile Kryo protocol_buffer protocol_stuff
* commons-spring Currently useless, only a email sender helper.
* commons-storage Under development.

Very Common, Very Base
======================
For now, commons-core(current 3.X), commons-seri(current 3.X), commons-remote(current 3.X), commons-framework(current 1.X) and commons-notify(current 1.X) are ready for use!!!

Search them in -> [maven central](http://search.maven.org/#search%7Cga%7C1%7Cg%3A%22io.github.pftx%22%20) <- for the newest version.

Other projects are still stabilizing...

## commons-core(current 3.X)

The commons-core project contains so many utilities, so we can not list them one by one. We will list some useful ones here:

### org.apache.niolex.commons.bean
* BeanUtil - Convert Java Bean from and to byte array, and merge the details of one Java Bean into another Java bean etc...
* MutableOne, One, Pair, Triple - Java Bean container, mostly for store temporary references as function return value.

### org.apache.niolex.commons.codec
* Base16Util - Encode data from and to Base16(Hex) string.
* Base64Util - Encode data from and to Base64(MINE encoding, the default and URL safe format) string.
* IntegerUtil - Encode integer from and to 8, 4, 3, 2 bytes.
* KVBase64Util - Encode a pair of key value data into one Base64(URL safe format) string.
* MD5Util - Calculate MD5 signature and check MD5 signature.
* RSAUtil - Use the RSA algorithm to encode, decode, sign and verify data.
* StringUtil - Encode string to and from bytes as ASCII, UTF8, GBK; join and split string; other related utilities.

### org.apache.niolex.commons.coder
* AESCoder - Support encode and decode with the AES algorithm.
* Blowfish2Coder, DESCoder, RC2Coder, TripleDESCoder - Support encode and decode with the corresponding algorithm.

### org.apache.niolex.commons.collection
* Cache - The in-memory cache implementation, currently we have ConcurrentLRUCache, LRUHashMap, MapAsCache, SegmentLFUCache.
* CircularList - Store values round-robin. After the list is full, we rewind the pointer to the fist element and replace it and so on.
* CollectionUtil - Utility methods to help operate collections, for example: concat, copy, intersection, isEmpty, isSingle ...
* CyclicIntArray - This class encapsulate an int array, one can get the head and tail at any time. When there are more data than the capacity, we override the eldest element.

### org.apache.niolex.commons.compress
* Compressor - Compress and decompress object, byte array, string. Currently we have GZiper and ZLiber.
* JacksonUtil - Using Jackson library to serialize object to JSON and vice-versa.

### org.apache.niolex.commons.concurrent
* Blocker - This is a waiting utility for clients to wait for the response and in the mean time hold the thread.
* BlockThread - The start method will only return if the new thread is running.
* ConcurrentUtil - Init ConcurrentMap and shutdownAndAwaitTermination for ExecutorService.
* InvokableExecutorService - Wrap a standard ExecutorService and can invoke any method on any host object inside the thread pool.
* SimpleFuture - A simple future implementation.
* Syncer - The Syncer is a utility to decorate an object into synchronized object for concurrent use in multiple threads environment.
* ThreadUtil - ThreadGroup related functions, sleep, join, wait related functions.

### org.apache.niolex.commons.config
* PropertiesWrapper - Wrap Java standard Properties, provides convenient methods for accessing trimmed string, int, boolean, long and double values.
* ReloadablePropertiesWrapper - Monitor the changes of the properties file, and reload it.

### org.apache.niolex.commons.control
* FrequencyCheck - Controls the invoke frequency in batch.
* TimeControler - This class control the invoke frequency by time and maximum invoke count.

### org.apache.niolex.commons.event
* ConcurrentEventDispatcher - Dispatch events across multiple threads.

### org.apache.niolex.commons.file
* FileUtil - Get(Set) file contents from(to) local disk.
* DirUtil - Directory related operations.
* FileChannelUtil - Read data from file channel and write into file channel.
* FileMonitor - Monitoring the file changes from the file system and notify users.
* DirMonitor - Monitoring the directory changes from the file system and notify users.

### org.apache.niolex.commons.hash
* ConsistentHash - The implementation of consistent hash.
* DoubleHash - The DoubleHash is to replace the ConsistentHash in some conditions.

### org.apache.niolex.commons.net
* DownloadUtil - Download file from HTTP, FTP URL.
* NetUtil - Internet related utilities.
* HTTPUtil - This is a simple HTTP utility for GET and POST requests.
* HTTPClient - This HTTP client class is used to help user control cookie and authentication. It is backed by HTTPUtil.
* RESTClient - A convenient tool class to help you invoke the RESTful API.

### org.apache.niolex.commons.reflect
* FastFieldUtil, FastMethodUtil, FastNewInstance - Using Reflect ASM to operate on Java bean to achieve high speed.
* FieldUtil, MethodUtil, ProxyUtil - Using Java's Reflection API to operate on Java bean.
* TypeUtil - Functions for type casting, type matching.

### org.apache.niolex.commons.stream
* LimitRateInputStream - Restrict the input rate.
* StreamUtil - Some common function for input and output streams.

### org.apache.niolex.commons.test
* OrderedRunner - Run all the test cases marked by this runner in alphabetical order.
* AnnotationOrderedRunner - Run all the test cases marked by this runner in the order specified by the annotation value.
* MappingGenerator - Generate the mapping between DB column name and java field name.
* SQLGenerator - Generate SQL by the corresponding Java entity class.
* Tester - Help check the value equals and between the range.
* TidyUtil - The utility to tidy string, generate formatted string table, etc.

### org.apache.niolex.commons.util
* DateTimeUtil - Translate between string and the java.util.Date.
* MathUtil - calculate max, min, sum, avg, Standard Deviation etc.
* Runner - Run a method in a newly created thread.
* SystemUtil - System Environment and JVM related utility class.
* ThrowableUtil - Get the first root cause, translate the throwable into string and vice-versa.
* CommonStatistics - Calculate the commonly used statistics for a given data set and a given percentile.

## commons-seri(current 3.X)

The commons-seri project contains tools to serialize Java Beans.

### org.apache.niolex.commons.seri
* ProtobufUtil - Serialize Java Beans by Google(R) protocol buffer.
* ProtoStuffUtil - Serialize Java Beans by protocol stuff protocol.
* SmileUtil - Use Jackson Smile as the binary format to serialize objects.

### org.apache.niolex.commons.stream
* JsonProxy - This is the proxy for read multiple objects from one input stream.
* KryoInstream, KryoOutstream - The encapsulation of the Kryo serialization algorithm.
* SmileProxy - This is the proxy for read multiple objects from one input stream.

## commons-remote(current 3.X)

The commons-remote project contains a remote server for developers to look inside the JVM and change the status etc...
* BeanServer - This class will export beans to remote telnet, you can get, list and set properties.
* Invokable - Implement this interface then your code can be invoked from Bean Server.
* Monitor - Monitor the system internal status.

## commons-framework(current 1.X)

Currently only contains the SEDA framework implementation.

## commons-notify(current 1.X)

The notify framework based on Zookeeper.

### org.apache.niolex.election
* Elector - This Elector is for P2P nodes elect one leader.

### org.apache.niolex.lock
* ZKLock - The DistributedLock powered by Zookeeper.

### org.apache.niolex.notify
* Notify - Watch the changes of node data and node properties.

### org.apache.niolex.queue
* ZKBlockingQueue - The distributed blocking queue implementation powered by Zookeeper.

***

License
==================================
This project is under the Apache License, version 2.0
http://www.apache.org/licenses/LICENSE-2.0

repository: pftx/niolex-common-utils

gha_language: Java

repo_name: pftx/niolex-common-utils


text:
# Q&A

### Q: Can you give me a few more details about how this works?

A: Maven plugins are used to copy all the project dependencies into a folder, generate a slimmed-down JVM, and then
generate a platform-specific installer.
The [pom.xml](https://github.com/wiverson/maven-jpackage-template/blob/main/pom.xml)
is heavily commented!

### Q: What are all the folders in the target directory?

A: Here are the folders unique to this project:

- `dependency` - all of the jar files declared by your Maven project, including the jar containing your code
- `installer-work` - the platform specific working files generated by jpackage.
    - [Wix Toolset](https://wixtoolset.org) files on Windows
    - [Script Editor](https://support.apple.com/guide/script-editor/welcome/mac) on macOS.
- `jvm-image` - Platform-specific, trimmed down JVM.
- `packaging` - Platform-specific commands, filtered by Maven and fed to jpackage.

Standard Maven folders:

- `classes` - generated by the javac compiler, contains your compiled code.
- `generated-sources` - side-effect of the javac compiler
- `maven-archiver` - side-effect of Maven execution.
- `maven-status` - side-effect of Maven compiler

### Q: Any Tips for Windows?

A: First, make sure you **set a custom Windows installer UUID for your project**, as described in
the [pom.xml](https://github.com/wiverson/maven-jpackage-template/blob/main/pom.xml)!

This UUID is used to uniquely identify the app as YOUR app by the Windows installer system, and is critical for allowing
users to seamlessly upgrade. You can quickly [grab a UUID of your own](https://www.uuidgenerator.net/) and pop that
value in instead. By default jpackage will generate a UUID automatically, but this automatic UUID is easily regenerated
with minor changes to your application, breaking the Windows installer upgrade chain.

The [Windows GitHub workflow](https://github.com/wiverson/maven-jpackage-template/blob/main/.github/workflows/maven-build-installer-windows.yml)
for this project downloads the Wix Installer toolkit and adds it to the path to automatically build the Windows
installer. On your local dev machine just install [WiX Toolset](https://wixtoolset.org/)
locally instead - it'll be a lot faster.

### Q: I'm getting errors when I'm trying to use javafx.web?

A: GitHub won't allow cloning a template if the source has files over 10mb in size. The javafx.web components basically
bundle a full native web browser under the covers. As of JavaFX 15 the javafx.web.jmod is roughly 25mb in size. If you
need it, you can [download it](https://gluonhq.com/products/javafx/) and install it in the JavaFX projects in your local
project.

If you are delivering a project that essentially amounts to a Java web application bundled as a web application, instead
of bundling JavaFX and a WebKit browser, I would suggest creating a small preferences UI using Swing and
the [System Tray API](https://docs.oracle.com/javase/tutorial/uiswing/misc/systemtray.html). With a nice modern look and
feel such as [FlatLaf](https://www.formdev.com/flatlaf/), you can create a very nice preferences panel and then use the
standard Java [Desktop API](https://docs.oracle.com/javase/9/docs/api/java/awt/Desktop.html) to just launch the user's
browser to the local URL.

If you drop me a note that this is something you are interested in, I may go ahead and create a template for this... :)

### Q: Tell me a bit about the Linux version?

A: The current GitHub Workflow for the Linux build runs on a GitHub Ubuntu instance, and by default it generates a
amd64.deb file. jpackage supports other distribution formats, including rpm, so if you want a different packaging format
you can tweak the
[GitHub Action for the Ubuntu build](https://github.com/wiverson/maven-jpackage-template/blob/main/.github/workflows/maven-build-installer-unix.yml)
and
the [jpackage command for Unix](https://github.com/wiverson/maven-jpackage-template/blob/main/src/packaging/unix-jpackage.txt)
to generate whatever you need. As long as you can find the right combination of configuration flags for
[jpackage](https://docs.oracle.com/en/java/javase/15/docs/specs/man/jpackage.html) and can set up the GitHub Actions
runner to match, you can generate whatever packaging you might need. If you need, you could set up several combinations
of Maven profile and GitHub Action to generate as many different builds as you wish to support. For example, you could
support generating macOS .dmg and .pkg files, Windows .msi and .exe, Linux .deb and .rpm in several different binary
formats.

### Q: What about macOS Signing?

A: You will likely need to add additional options to ship properly on macOS - most notably, you will want to sign and
notarize your app for macOS to make everything work without end user warnings. Check out tools such
as [Gon](https://github.com/nordcloud/gon)
or [this command-line signing tutorial](https://blog.dgunia.de/2020/02/12/signed-macos-programs-with-java-14/).

### Q: Can I generate macOS installers on Windows, or Windows installers on macOS? Or macOS/Windows on Linux?

A: [No](https://openjdk.java.net/jeps/392), but this project uses GitHub workflows to generate
[macOS](https://github.com/wiverson/maven-jpackage-template/blob/main/.github/workflows/maven-build-installer.yml)
and
[Windows](https://github.com/wiverson/maven-jpackage-template/blob/main/.github/workflows/maven-build-installer-windows.yml) (
and Linux)
installers automatically, regardless of your development platform. This means that (for example)
you could do your dev work on Linux and rely on the GitHub Actions to generate macOS and Windows builds. If you need
help, reach out to [ChangeNode.com](https://changenode.com/).

You still should (of course) do platform specific testing on your apps, but that's a different topic.

### Q: Does this support auto-updating, crash reporting, or analytics?

A: No... for that, you should check out [ChangeNode.com](https://changenode.com/)!

### Q: I'd rather use shell scripts.

A: Ok. Check out [JPackageScriptFX](https://github.com/dlemmermann/JPackageScriptFX) - the original shell scripts used
as a reference when I initially started work on this project.

### Q: I didn't realize JavaFX was so cool - any pointers?

Sure - here's
my [personal list of cool JavaFX resources](https://gist.github.com/wiverson/6c7f49819016cece906f0e8cea195ea2), which
includes links to a few other big lists of resources.

### Q: Any Maven tips?

If you are not familiar with the standard Maven build lifecycle, you are highly encouraged to review the documentation
["Introduction to the Build Lifecycle"](https://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html)
to understand how Maven builds work.

The project also uses os-activated, platform-specific
[profiles](https://maven.apache.org/guides/introduction/introduction-to-profiles.html) for configuration - really cool
for setting up platform-specific stuff.

### Q: Wait, didn't this project use to try to completely modularize the application first?

A: Correct.

There were two previous versions of this template, and both strategies were discarded as impractical in the real world.

The first approach was to **try to create a shaded jar** (a single jar containing all of the project dependencies) and
then use jdeps to create a module-info.java and add it to the shaded jar. This failed to account for things like
multi-release jars and jars with service declarations. While it worked for trivial applications, it fell apart with more
complex real world usage. In particular, attempting to integrate Spring Boot into the application caused many issues to
appear.

The second attempt took a more sophisticated approach - **using jdeps to automatically modularize all of the project
dependencies.**
A new [`collect-modules` goal](https://github.com/wiverson/jtoolprovider-plugin/blob/main/collect-modules-doc.md)
was added. In brief, the plugin would walk through the entire Maven dependency tree and sort all of the declared
dependencies into folders. The dependencies that already were modularized (both basic and multi-release jars) went into
one folder, and ordinary non-modularized jars went into another. The plugin would then attempt to use jdeps to
automatically generate module-info.java and add the compiled module-info.classes into each jar.

Unfortunately, this also failed. There were numerous errors, such a circular references between libraries (e.g. slf4j
and logback). Some jars would only work when jdeps generated open module-info.java files, and others would only work
when jdeps generated module-info.java files with package level exports. Many, many jars would have large numbers of
packages exposed, which mean that the resulting module-info.java files contained many, many entries. The error messages
and the resolution for these messages were very, very confusing. The terminology around modules is unfortunately very
inaccessible to a typical Java developer - for example, a "static" declaration in a Java module-info.java is used to
denote a concept similar to the Maven notion of "provided" - but unfortunately jdeps fails to run if a needed module is
declared as a transitive reference. Even if it's optional.

In the end, even with the plugin, the error messages and the resolution of those messages is just simply not something a
typical Java developer can be expected to understand or fix.

Which brings us back to this project. The end result is effective the same - just change
the `<jvm.modules>javafx.media,javafx.controls,javafx.fxml,java.logging</jvm.modules>` declaration in the pom.xml to
specify the JVM modules you need and just skip all trying to modularize your app.

For now, I would consider the creation and use of module-info.java to effective be a system programming interface for
the JDK itself and system-level modules such as JavaFX itself, where the entire dependency tree is very carefully
enforced - and likely includes native code. For ordinary developers, just enjoy the benefits of a trimmed down custom
JVM and don't worry about it. After all the challenges working with
[(incorrectly written!) module-info.java files](https://github.com/sormuras/modules/tree/main/doc/suspicious)
I found just in the Spring Boot dependency graph, I would highly suggest that maintainers for ordinary, non-native Java
libraries remove their existing module-info.java files.

It's a pity, as I think that if jdeps, jlink, and jpackage were set up to me more user-friendly, I think it would be a
very interesting system that might lead to slimmed down, cloud-friendly applications. For me, the acid test for Java
module adoption is probably Spring Boot. It's very, very popular. From a technical standpoint, it uses technologies such
as reflection that are often notoriously tricky when working with static compilation heavily. An end user should be able
to simply start working with Spring Boot and at at most a few commands to their build process. Clearly projects such
as [Spring Native](https://github.com/spring-projects-experimental/spring-native)
shows there is an interest in this space.

repository: baali-boudjemaa/maven-jpackage-template

repo_name: baali-boudjemaa/maven-jpackage-template


text:
  TypeScript, the beginning

This project is just for testing and learning some typescript features and how to integrate a backend to a frontend in react.

## ✋🏻 technologies

- [Node.js](https://nodejs.org/en/)
- [Yarn](https://yarnpkg.com/pt-BR/docs/install)
- [TypeScript](https://www.typescriptlang.org/)
- [React](https://pt-br.reactjs.org/)

## 🔥 How to use

1. Make a clone of this repository;
2. Change into the `cd Typescript-the-beginning` folder;
3. Run `yarn` inside the `backend` and `frontend` folders to install the dependencies ;
4. In the `backend` folder run `yarn dev` to start the development server;
5. In the `frontend` folder run `yarn start` to start the development server;

## 📝 License

This project is under the MIT license. See the file [LICENSE](LICENSE.md) for more details.

---


text:
# RxSamplesPractice

### Note

This repository is mostly deprecated in favor of [AndroidSchool](https://github.com/ArturVasilov/AndroidSchool) repository.

### Projects

* RxPractice contains all samples for operators lecture and practice. Practice has 4 large task in package tasks. You can check your implementation using unit tests. Also I've put my solution to the bottom of each file.
* RxArchitecture has samples for different reactive features in Android and basics idea of Rx architecture.
* ParallelRequests is a simple app that acts like real app with many get requests. You should concat and merge requests in correct order. For details see itis.homework.parallelrequests.MainFragment
* ReactiveWeather is a simple app upon which you can build your own architecture. Feel free to play and enjoy :)

repository: mikhaylovsi/RxSamplesPractice

repo_name: mikhaylovsi/RxSamplesPractice


text:
---
id: configure-multiple-github-accounts-with-ssh
date: 2021-10-21
title: Configure Multiple Github/Gitlab Account With SSH
template: post
topic: 'topic'
thumbnail: './../../images/github.png'
slug: configure-multiple-github-accounts-with-ssh
categories: popular
tags:
  - git
  - github
---

Sometimes you need to configure multiple github accounts on your machine which is quite difficult if it is not properly setup. In this post, we will walk through steps.

Note: Steps for github and gitlab are same. Just you need to replace domain name i.e. `github.com` with `gitlab.com` wherever it is mentioned.

- [1. Generate SSH Keys](#1-generate-ssh-keys)
- [2. Add public keys to GitHub](#2-add-public-keys-to-github)
- [3. Add private SSH Keys on your machine](#3-add-private-ssh-keys-on-your-machine)
- [4. Modify/Create SSH Config file](#4-modifycreate-ssh-config-file)
- [Setting `user.name` and `user.email` for all projects](#setting-username-and-useremail-for-all-projects)
  - [Alternate Way For Above Steps](#alternate-way-for-above-steps)
- [One command switch?](#one-command-switch)

### 1. Generate SSH Keys

We need to generate pair of ssh keys on your machine. Once keys are generated, there will be public and private key. You should NOT share your private key with anyone or upload anywhere.

Open terminal on your machine, you need to generate SSH keys for all accounts that you need to configure with name and emails.

```sh
ssh-keygen -t rsa -b 4096 -f ~/.ssh/<github_username>_github_personal -C<EMAIL_ADDRESS>
# Work
ssh-keygen -t rsa -b 4096 -f ~/.ssh/<github_username>_github_work -C<EMAIL_ADDRESS>```

This will create public and private keys:

Personal Keys: `~/.ssh/<github_username>_github_personal.pub` and `~/.ssh/<github_username>_github_personal`

Work Keys: `~/.ssh/<github_username>_github_work.pub` and `~/.ssh/<github_username>_github_work`

Note, we have used `rsa` 4096 algo to generate ssh keys and are stored in your home directory.

### 2. Add public keys to GitHub

Now, we have keys generated on our machine. We need to add public key to github.

- Login to [github account](https://github.com/login)
- Copy your public ssh key (`.pub` extenion). You can open public file in text editor and copy content or use `pbcopy` to copy content to clipboard.

```sh
pbcopy < ~/.ssh/<github_username>_github_personal.pub
pbcopy < ~/.ssh/<github_username>_github_work.pub
```

- Create [New SSH Key on Github](https://github.com/settings/ssh) and paste copy content in it.
  - You can visit above link and check how to add key on github.
- Repeat above two steps for all your github accounts.

### 3. Add private SSH Keys on your machine

Now, we have public keys added to github. We need to add private keys on our machine.

```sh
ssh-add ~/.ssh/<github_username>_github_personal
ssh-add ~/.ssh/<github_username>_github_work
```

[OPTIONAL] Below are some commands if you want to dig into what all keys are stored on your machine.

- Delete all cached keys that are added by `ssh-add`

```sh
ssh-add -D
```

- Check all saved keys

```sh
ssh-add -l
```

### 4. Modify/Create SSH Config file

Now, we have private keys added on our machine. We need to add those keys to ssh config file.

- If you don't have `~/.ssh/config` file then you can create it and set permission

```sh
touch ~/.ssh/config
chmod 644 ~/.ssh/config
```

Note: git config file is used for lot of different configurations like git username, email, etc.

- Add following configuration in config file,

```sh
Host personal.github.com
    HostName github.com
    User git
    PreferredAuthentications publickey
    IdentityFile <absolute_path_to_your_personal_github_private_ssh_key>
    UseKeychain yes # Comment this other than macOS user
    AddKeysToAgent yes

Host work.github.com
    HostName github.com
    User git
    PreferredAuthentications publickey
    IdentityFile <absolute_path_to_your_work_github_private_ssh_key>
    UseKeychain yes # Comment this other than macOS user
    AddKeysToAgent yes
```

Note, Abosolution path means you need to give full path of private keys like e.g. `/Users/<username>/.ssh/<github_username>_github_personal`.

**Setup is done!**

Now, whenever you are cloning repository, you need to replace<EMAIL_ADDRESS>to<EMAIL_ADDRESS>OR<EMAIL_ADDRESS>
Example -

```sh
git clone git@work.github.com:<username>/repository-name.git
cd repo
git config user.email "<email_address>"
```

For existing repository you need to change upstream URL so that your machine know which account to use.

```sh
git remote set-url origin git@work.github.com:<username>/repository-name.git
```

If you clone repo like this, `git clone git@github.com:<username>/repository-name.git` then it will use your public ssh key id which will use personal email address.

---

### Setting `user.name` and `user.email` for all projects

From above steps, you will able to use multiple github accounts on your machine. But, it will show wrong email address whenever you push changes to github. To resolve this, we need to tell our machine gitconfig when to use which email/name.

- You will need specific folder for all your work repo and personal/work repo e.g., `~/personal/` and `~/work/`
- Modify git config file `~/.gitconfig`,

```sh
# Personal gitconfig
[includeIf "gitdir:~/personal/"]
    path = ~/.gitconfig-personal
# Work gitconfig
[includeIf "gitdir:~/work/"]
    path = ~/.gitconfig-work
```

- Create `~/.gitconfig-personal` and `~/.gitconfig-work` files and add below configuration on both files.

```sh
[user]
    email = <personal_email>
    name = <Name>
```

#### Alternate Way For Above Steps

- Set alias in `~/.gitconfig` file,

```sh
[alias]
setworkmail = "config user.email<EMAIL_ADDRESS>setpersonalmail = "config user.email<EMAIL_ADDRESS>```

- From above alias we can do `git setworkmail` to change email this project only.

### One command switch?

single command is `git work` or `git personal`!!!

```sh
git clone git@github.com:username/repo.git
cd repo
git work // <- 🔥
```

Do below setup to run single command:

1. Open `~/.gitconfig` file and add folowing configuration:

```sh
[alias]
setworkmail = "config user.email<EMAIL_ADDRESS>setpersonalmail = "config user.email<EMAIL_ADDRESS>changeremotehost = !sh -c \"git remote -v | grep '$1.*fetch' | sed s/..fetch.// | sed s/$1/$2/ | xargs git remote set-url\"
work = !sh -c \"git changeremotehost github.com work.github.com && git setworkmail\"
personal = !sh -c \"git changeremotehost github.com personal.github.com && git setpersonalmail\"
```

and you are good to go 😎

**How it is working?**

If you check `changeremotehost` alias, it will use to replace domain. example -

```sh
> git remote -v
origin git@github.com:sanketgandhi/sample-repo.git (fetch)
origin git@github.com:sanketgandhi/sample-repo.git (push)

> git changeremotehost github.com personal.github.com

> git remote -v
origin git@personal.github.com:sanketgandhi/sample-repo.git (fetch)
origin git@github_pro:sanketgandhi/sample-repo.git (push)
```

Cheers!

gha_language: JavaScript


text:
# ghcli - Extremely simple Github CLI test program

This project is a very simple command-line tool to get some basic data about
the repos in a given organization.

## Building

### With Docker

To build `ghcli` with Docker, you must first build the builder. Do this by running

```
    ./scripts/bootstrap
```

You will only need to do this once.

After the bootstrap script finishes, you can build the tool by running

```
    ./scripts/build-with-docker
```

### Without Docker

If you have the following installed on your system

* Go v1.9 or higher
* Dep v0.4.1 or higher

you can run `./scripts/test && ./scripts/build` to build.

## Running

After building, there will be binaries in the `./target` directory, named after the arch/OS they were built for. You should see binaries for macOS and Linux.

```
Display repos from a Github organization, sorted by different criteria.

Usage:
  ghcli [flags]
  ghcli [command]

Available Commands:
  contributions sort by number of pull requests/fork
  forks         sort by number of forks
  help          Help about any command
  login         Set your Github OAuth token
  pull-requests sort by number of pull requests
  stars         sort by the number of stars

Flags:
  -h, --help           help for ghcli
      --org string     organization to use
      --token string   Github OAuth token
      --top int        number of results to return (default 10)
  -v, --verbose        verbose output

Use "ghcli [command] --help" for more information about a command.
```

There are four commands that display information about a given Github organization: `contributions`, `forks`, `pull-requests`, and `stars`. The fifth command, `login`, is for setting your Github OAuth token into the `ghcli` config file.

### Parameters

You can use `ghcli` anonymously, but some repos will be hidden from you, and there is a rate-limit of 60 requests/hour, so you will probably run into that quickly.

If you have a Github account, you can generate an OAuth token that can be used for authorization. Go to [Settings/Developer settings/Personal access tokens](https://github.com/settings/tokens) to generate an OAuth token. You can pass this token on the command line, by adding `--token <oauth token>` to each request, but it's much easier to add it to your config file. To do that, run

```
ghcli login <oauth token>
```

this will add the token to your settings file, `~/.ghcli.yaml`.

Once you have done this, all future operations will automatically use this token.

All of the commands require the name of an organization to operate on, which you can specify each time by adding `--org <org name>` to the command line. If you usually work with the same organization, you can add it to your config file, `~/.ghcli.yaml`, as

```yaml
org: my-organization
```

The default for all the commands is to return the top 10 repos. You can change this by either passing `--top n` with each request. You can also set it in your config file with

```yaml
top: 23
```

For all three of these parameters, if you have added them to your settings file, you can override them for a one-off by adding the command line option.

### Commands

* `contributions` will sort based on the ratio of pull requests to forks.
* `forks` will sort based on the number of times the repo has been forked
* `pull-requests` will sort based on the number of pull requests created against the repo
* `stars` will sort based on the number of stars a repo has been given

## Examples

Running anonymously, on a Mac, fetching repos sorted by stars:

```
./target/ghcli-darwin-amd64 --org my-org stars
```

Running anonymously, on a Mac, sorted by forks, but limiting the number returned to 5:

```
./target/ghcli-darwin-amd64 --org my-org forks --top 5
```

If you had a settings file that looked like this:

```yaml
top: 5
org: my-org
```

then the previous command would just be:

```
./target/ghcli-darwin-amd64
```

If you need to specify an OAuth token, it would look like this:

```
./target/ghcli-darwin-amd64 --org my-org forks --top 5 --token 12345
```

repository: joeygibson/ghcli

repo_name: joeygibson/ghcli


text:
bootcamp-angular-firebase-demo
==============================

A demo to present the technologies, Angular.js and Firebase combining into a sample voting application.

### Prerequisites

Node Package Manager (npm) - use npm to install project dependencies including bower and http-server. You can get npm [here](http://nodejs.org/)

### Install Dependencies

After cloning the repository, you firstly need install Node Package Manager:

```
sudo apt-get install npm
```

Then the next step is installing the packages:

```
npm install -g
```

We have two kinds of dependencies in this project: tools and angular framework code.

* We get the tools we depend upon via `npm`, the [node package manager](http://nodejs.org/).
* We get the angular code via `bower`, a [client-side code package manager](http://bower.io/).

```
npm install bower -g
cd app
bower install
```

Bower will install all client dependencies into  the following folder in your project.

* `app/libs` - contains the angular framework files

repository: hwclass/bootcamp-angular-firebase-demo

repo_name: hwclass/bootcamp-angular-firebase-demo