text:
# my-bookshelf
Collection of books, papers, list of papers, blog or blog posts, articles that I've read/I'm going to read/I would remember that they exist/It is unlikely that I'll read/I'll never read.

Plus some scripts to automatically populate and tag the database based on preferred themes, venues and years.

The list of items is stored in [`bookshelf.tsv`](./bookshelf.tsv) in the following format:

    item_name1 \t link1 \t tag1 \t tag2 \t ...
    item_name2 \t link2 \t tag1 \t tag2 \t ...

Please go to [pietroborrello.github.io/my-bookshelf/](https://pietroborrello.github.io/my-bookshelf/) for the interactive version.

It's more a proof of concept rather than an established solution. It might change in the future.

## Why?
I always wanted to take care of a list of documents (books, papers, etc.) for my studies, both for the university, insights and other personal interests.

I tried to _download_ and store these files, or a list of them, on local file system and backed up whenever needed. But it seemed to me a dispersive work, and in this way you cannot store nice websites, web articles or blog posts, that quite often are very valuable.

I tried to keep up a list of _bookmarks_ on my favourite web browser, but... I ended up with thousands of bookmarked pages, organized in no structured and consistent way.

I thought about a self-hosted website, but I have not so much time to set up it.

...  It lies somehow in the middle of the previous solutions:
- No need to download everything, just keep the reference with the link provided;
- No need to bookmark everything, and the links are automatically organized by leveraging the tag mechanism.
- No need to self-host a website, just use the nice GitHub Pages.

Moreover, anyone can see this list (and contribute to it!), so maybe someone find it useful.

It can be improved a lot, e.g.:
- the list could easily contain duplicates or inconsistencies
- no detailed info for each item
- possibility of dead links
- arbitrary tag selection
- ...

A more structured solution would be to use a database, but too much time to insert an item manually (title, authors, date, etc.)... Maybe one could build a program that from the provided link it infers all the information you want... But that's another story.

## What?
You'll find many textbooks, papers, articles, blog posts, readings and similar in the field of Computer Science and related. You might find also documents about topics like Math, Physics and other scientific fields, as well as non-scientific ones like economics and philosophy.

## How?

You can effectively access to the bookshelf in two ways:

- The Github page: [pietroborrello.github.io/my-bookshelf](https://pietroborrello.github.io/my-bookshelf/)
- By open the [bookshelf.tsv](https://github.com/pietroborrello/my-bookshelf/blob/master/bookshelf.tsv) file on Github, by leveraging [the rendering functionalities](https://help.github.com/articles/rendering-csv-and-tsv-data/)

## Tag examples

Tag for kind of document, e.g.: `blogs`, `books`, `papers`, `readings`, `textbooks`, `thesis`, `websites`.

Tag for topic, e.g.: `algorithms`, `artificial-intelligence`, `blockchain`, `computer-programming`, `computer-science`, `deep-learning`, `distributed-systems`, `logic`, `machine-learning`, `mathematics`, `operating-systems`, `philosophy`, `physics`, `reinforcement-learning`.

## CLI utils

- `scripts/check_dead_links.py`: check if the urls are alive.
In `deadlinks.tsv` you will find the log of the unsuccessful requests.

- `scripts/dump.py`: download the entire websites/files associated to the URLs.

- `scripts/paper_scraper.py`: automatically collect papers on preferred themes, venues and years from DBLP.

- `scripts/retag.py`: automatically retag database inferring tags from title and abstract.

Run them from the root of the repository.

## Credits

The tag editor is built with [jQuery-tagEditor](https://github.com/Pixabay/jQuery-tagEditor).

repository: pietroborrello/my-bookshelf

repo_name: pietroborrello/my-bookshelf


text:
# Kosaraju's Algorithm to find SCCs in a directed graph.

Kosaraju's algorithm is a linear time algorithm to find the strongly connected components of a directed graph.

### The input

Our exapmle graph looks like this

![initial_graph][initial_graph]

### The algorithm

Kosaraju's algorithm works as follows:
* Given G be a directed graph.
* Compute Grev – a reversed vesrion of G.
* Run DFS-Loop on Grev, set finishingTime for each node. (Goal is to comptute "magical ordering" of nodes)
* Run DFS-Loop on G, process nodes in decreasing order of finishing times. The result is number of Strongly connected components. Append to the result.
* Return an array contains numbers of SCCs.

### The output

![sccs_graph][sccs_graph]

## [5,3,3]

### The perfomance

Kosaraju's algorithm performs two complete traversals of the graph and so runs in Θ(V+E) (linear) time, which is asymptotically optimal because there is a matching lower bound (any algorithm must examine all vertices and edges). It is the conceptually simplest efficient algorithm, but is not as efficient in practice as Tarjan's strongly connected components algorithm and the path-based strong component algorithm, which perform only one traversal of the graph.

It should be noted that if input size of the graph is large, the recursive approach will cause Stack Overflow Exception.

[initial_graph]: https://github.com/alexbtlv/swift_kosaraju/blob/master/assets/initial_graph.png "Graph"
[sccs_graph]: https://github.com/alexbtlv/swift_kosaraju/blob/master/assets/sccs_graph.png "SCCs"

license: MIT

branch_name: refs/heads/master

extension: md

license_type: permissive


text:
# SheetBuilder

Sheet Builder is an abstraction of the axlsx gem that allows you to quickly make and spreadsheet templates that exists as
arrays of Ruby hashes for easy spreadsheet generation and data input.

TODO:

- Clean up styling options

## Installation

Add this line to your application's Gemfile:

```ruby
gem 'sheet_builder'
```

And then execute:

    $ bundle

Or install it yourself as:

    $ gem install sheet_builder

## Usage

This gem revolves around the Blueprint class, which you supply with these (optional) component types:
- Elements: Components with specified row and column (i.e. headers, etc)
- Titles: Components that are laid out automagically in order, and used for placement/retrieval of data
  - Column titles span horizontally, Row titles span vertically
- Title Starting Points: Where your titles will start being placed in (defaults to first row and first column)

Start by creating a package, workbook, and sheet with Axlsx

```ruby
package = Axlsx::Package.new
workbook = package.workbook
sheet = workbook.add_worksheet name: 'My Awesome Sheet'
```

Then create a Blueprint object with your desired Components
```ruby
elements = [
  {text: 'This is a simple element!', row: 1, col: 1},
  {text: 'This is a complex element', row: 2, col: 2, style: [:bold, :center], color: 'FD7F80', borders: true, merge: 2}
]

column_titles = [
  {text: 'This is a simple column_title!'},
  {text: 'This is a colorful column_title!', color: '9BCBFD'},
  {text: 'This column_title has a comment!', comment: 'Told you so!'},
  {text: 'This column_title has a dropdown list for its options!', list: ['told', 'you', 'so']}
]
```

Then create a new blueprint object with these components. You can specific where
titles will start with column/row_titles_start: [row, col]

```ruby
blueprint = SheetBuilder::Blueprint.new elements: elements,
                                        column_titles: column_titles,
                                        column_titles_start: [3,1]
```

Then call build! on the blueprint, and pass it a sheet, and optional data

```ruby
column_data = [
  {text: 'I will always be placed under my correct title!', title: 'This is a simple column_title!'},
  {text: 'Me too!', title: 'This is a simple column_title!'},
  {text: 'Me three!', title: 'This column_title has a comment!'}
]

blueprint.build! sheet: sheet, column_data: column_data
```

Finally, you can save your workbook!

```ruby
package.serialize 'test.xlsx'
```

## Contributing

Bug reports and pull requests are welcome on GitHub at https://github.com/[USERNAME]/sheet_builder. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Covenant](http://contributor-covenant.org) code of conduct.

## License

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

gha_language: Ruby


text:
### [CVE-2023-20133](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2023-20133)
![](https://img.shields.io/static/v1?label=Product&message=Cisco%20Webex%20Meetings&color=blue)
![](https://img.shields.io/static/v1?label=Version&message=%3D%2039.10%20&color=brighgreen)
![](https://img.shields.io/static/v1?label=Vulnerability&message=n%2Fa&color=brighgreen)

### Description

A vulnerability in the web interface of Cisco Webex Meetings could allow an authenticated, remote attacker to conduct a stored cross-site scripting (XSS) attack against a user of the interface.

 This vulnerability exists because of insufficient validation of user-supplied input in Webex Events (classic) programs, email templates, and survey questions. An attacker could exploit this vulnerability by persuading a user to click a malicious link. A successful exploit could allow the attacker to execute arbitrary script code in the context of the affected interface or access sensitive, browser-based information.

### POC

#### Reference
No PoCs from references.

#### Github
- https://github.com/fkie-cad/nvd-json-data-feeds

repository: trickest/cve

branch_name: refs/heads/main

gha_language: HTML

gha_license_id: MIT

repo_name: trickest/cve


text:
# float-cmp

[![Build Status](https://travis-ci.org/mikedilger/float-cmp.svg?branch=master)](https://travis-ci.org/mikedilger/float-cmp)
[![MIT licensed](https://img.shields.io/badge/license-MIT-blue.svg)](./LICENSE)

Documentation is available at https://docs.rs/float-cmp

float-cmp defines traits for approximate comparison of floating point types which have fallen
away from exact equality due to the limited precision available within floating point
representations. Implementations of these traits are provided for `f32` and `f64` types.

The recommended go-to solution (although it may not be appropriate in all cases) is the
`approx_eq()` function in the `ApproxEq` trait.  An epsilon test is performed first, which
handles very small numbers, zeroes, and differing signs of very small numbers, considering
them equal if the difference is less than the given epsilon (e.g. f32::EPSILON). For larger
numbers, floating point representations are spaced further apart, and in these cases the ulps
test comes to the rescue. Numbers are considered equal if the number of floating point
representations between them is below a specified bound (Ulps are a cardinal count of
floating point representations that separate two floating point numbers).

Several other traits are provided including `Ulps`, `ApproxEqUlps`, `ApproxOrdUlps`, and
`ApproxEqRatio`.

## The problem

Floating point operations must round answers to the nearest representable number. Multiple
operations may result in an answer different from what you expect. In the following example,
the assert will fail, even though the printed output says "0.45 == 0.45":

```rust
  let a = 0.15_f32 + 0.15_f32 + 0.15_f32;
  let b = 0.1_f32 + 0.1_f32 + 0.25_f32;
  println!("{} == {}", a, b);
  assert!(a==b)  // Fails, because they are not exactly equal
```

This fails because the correct answer to most operations isn't exactly representable, and so
your computer's processor chooses to represent the answer with the closest value it has
available. This introduces error, and this error can accumulate as multiple operations are
performed.

## The solution

With `ApproxEq`, we can get the answer we intend:

```rust
  let a = 0.15_f32 + 0.15_f32 + 0.15_f32;
  let b = 0.1_f32 + 0.1_f32 + 0.25_f32;
  println!("{} == {}", a, b);
  assert!(a.approx_eq(&b, 2.0 * ::std::f32::EPSILON, 2)) // They are equal, within 2 ulps
```

I recommend you use a small integer for the `ulps` parameter (2 to 10 or so), and a
similar small multiple of the floating point's EPSILON constant (2.0 to 10.0 or so),
but please send feedback if you think you have better advice.

## Some explanation

We use the term ULP (units of least precision, or units in the last place) to mean the
difference between two adjacent floating point representations (adjacent meaning that there is
no floating point number between them). This term is borrowed from prior work (personally I
would have chosen "quanta"). The size of an ULP (measured as a float) varies
depending on the exponents of the floating point numbers in question. That is a good thing,
because as numbers fall away from equality due to the imprecise nature of their representation,
they fall away in ULPs terms, not in absolute terms.  Pure epsilon-based comparisons are
absolute and thus don't map well to the nature of the additive error issue. They work fine
for many ranges of numbers, but not for others (consider comparing -0.0000000028
to +0.00000097).

## Implementing these traits

You can implement `ApproxEq` for your own complex types. The trait and type parameter
notation can be a bit tricky, especially if your type is type parameterized around
floating point types.  So here is an example (you'll probably not specify the Copy trait
directly, but use some other NumTraits type floating point trait):

```rust
use float_cmp::{Ulps, ApproxEq};

pub struct Vec2<F> {
  pub x: F,
  pub y: F,
}

impl<F: Ulps + ApproxEq<Flt=F> + Copy> ApproxEq for Vec2<F> {
  type Flt = F;

  fn approx_eq(&self, other: &Self,
               epsilon: <F as ApproxEq>::Flt,
               ulps: <<F as ApproxEq>::Flt as Ulps>::U) -> bool
  {
    self.x.approx_eq(&other.x, epsilon, ulps)
      && self.y.approx_eq(&other.y, epsilon, ulps)
  }
}
```

## Inspiration

This crate was inspired by this Random ASCII blog post:

[https://randomascii.wordpress.com/2012/02/25/comparing-floating-point-numbers-2012-edition/](https://randomascii.wordpress.com/2012/02/25/comparing-floating-point-numbers-2012-edition/)

repository: yvt/float-cmp

repo_name: yvt/float-cmp


text:
# TiDB Changelog
All notable changes to this project will be documented in this file. See also [Release Notes](https://github.com/pingcap/docs/blob/master/releases/rn.md), [TiKV Changelog](https://github.com/tikv/tikv/blob/master/CHANGELOG.md) and [PD Changelog](https://github.com/pingcap/pd/blob/master/CHANGELOG.md).

## [2.1.0-rc.5] - 2018-11-12
### SQL Optimizer
* Fix the issue that `IndexReader` reads the wrong handle in some cases [#8132](https://github.com/pingcap/tidb/pull/8132)
* Fix the issue occurred while the `IndexScan Prepared` statement uses `Plan Cache` [#8055](https://github.com/pingcap/tidb/pull/8055)
* Fix the issue that the result of the `Union` statement is unstable [#8165](https://github.com/pingcap/tidb/pull/8165)
### SQL Execution Engine
* Improve the performance of TiDB on inserting or updating wide tables [#8024](https://github.com/pingcap/tidb/pull/8024)
* Support the unsigned `int` flag in the `Truncate` built-in function [#8068](https://github.com/pingcap/tidb/pull/8068)
* Fix the error occurred while converting JSON data to the decimal type [#8109](https://github.com/pingcap/tidb/pull/8109)
* Fix the error occurred when you `Update` the float type [#8170](https://github.com/pingcap/tidb/pull/8170)
### Statistics
* Fix the incorrect statistics issue during point queries in some cases [#8035](https://github.com/pingcap/tidb/pull/8035)
* Fix the selectivity estimation of statistics for primary key in some cases [#8149](https://github.com/pingcap/tidb/pull/8149)
* Fix the issue that the statistics of deleted tables are not cleared up for a long period of time [#8182](https://github.com/pingcap/tidb/pull/8182)
### Server
* Improve the readability of logs and make logs better
    - [#8063](https://github.com/pingcap/tidb/pull/8063)
    - [#8053](https://github.com/pingcap/tidb/pull/8053)
    - [#8224](https://github.com/pingcap/tidb/pull/8224)
* Fix the error occurred when obtaining the table data of `infoschema.profiling` [#8096](https://github.com/pingcap/tidb/pull/8096)
* Replace the unix socket with the pumps client to write binlogs [#8098](https://github.com/pingcap/tidb/pull/8098)
* Add the threshold value for the `tidb_slow_log_threshold` environment variable, which dynamically sets the slow log [#8094](https://github.com/pingcap/tidb/pull/8094)
* Add the original length of a SQL statement truncated while the `tidb_query_log_max_len` environment variable dynamically sets logs [8200](https://github.com/pingcap/tidb/pull/8200)
* Add the `tidb_opt_write_row_id` environment variable to control whether to allow writing `_tidb_rowid` [#8218](https://github.com/pingcap/tidb/pull/8218)
* Add an upper bound to the `Scan` command of ticlient, to avoid overbound scan [#8081](https://github.com/pingcap/tidb/pull/8081), [#8247](https://github.com/pingcap/tidb/pull/8247)
### DDL
* Fix the issue that executing DDL statements in transactions encounters an error in some cases [#8056](https://github.com/pingcap/tidb/pull/8056)
* Fix the issue that executing `truncate table` in partition tables does not take effect [#8103](https://github.com/pingcap/tidb/pull/8103)
* Fix the issue that the DDL operation does not roll back correctly after being cancelled in some cases [#8057](https://github.com/pingcap/tidb/pull/8057)
* Add the `admin show next_row_id` command to return the next available row ID [#8268](https://github.com/pingcap/tidb/pull/8268)

## [2.1.0-rc.4] - 2018-10-23
### SQL Optimizer
* Fix the issue that column pruning of `UnionAll` is incorrect in some cases [#7941](https://github.com/pingcap/tidb/pull/7941)
* Fix the issue that the result of the `UnionAll` operator is incorrect in some cases [#8007](https://github.com/pingcap/tidb/pull/8007)
### SQL Execution Engine
* Fix the precision issue of the `AVG` function [#7874](https://github.com/pingcap/tidb/pull/7874)
* Support using the `EXPLAIN ANALYZE` statement to check the runtime statistics including the execution time and the number of returned rows of each operator during the query execution process [#7925](https://github.com/pingcap/tidb/pull/7925)
* Fix the panic issue of the `PointGet` operator when a column of a table appears multiple times in the result set [#7943](https://github.com/pingcap/tidb/pull/7943)
* Fix the panic issue caused by too large values in the `Limit` subclause [#8002](https://github.com/pingcap/tidb/pull/8002)
* Fix the panic issue during the execution process of the `AddDate`/`SubDate` statement in some cases [#8009](https://github.com/pingcap/tidb/pull/8009)
### Statistics
* Fix the issue of judging the prefix of the histogram low-bound of the combined index as out of range [#7856](https://github.com/pingcap/tidb/pull/7856)
* Fix the memory leak issue caused by statistics collecting [#7873](https://github.com/pingcap/tidb/pull/7873)
* Fix the panic issue when the histogram is empty [#7928](https://github.com/pingcap/tidb/pull/7928)
* Fix the issue that the histogram bound is out of range when the statistics is being uploaded [#7944](https://github.com/pingcap/tidb/pull/7944)
* Limit the maximum length of values in the statistics sampling process [#7982](https://github.com/pingcap/tidb/pull/7982)
### Server
* Refactor Latch to avoid misjudgment of transaction conflicts and improve the execution performance of concurrent transactions [#7711](https://github.com/pingcap/tidb/pull/7711)
* Fix the panic issue caused by collecting slow queries in some cases [#7874](https://github.com/pingcap/tidb/pull/7847)
* Fix the panic issue when `ESCAPED BY` is an empty string in the `LOAD DATA` statement [#8005](https://github.com/pingcap/tidb/pull/8005)
* Complete the “coprocessor error” log information [#8006](https://github.com/pingcap/tidb/pull/8006)
### Compatibility
* Set the `Command` field of the `SHOW PROCESSLIST` result to `Sleep` when the query is empty [#7839](https://github.com/pingcap/tidb/pull/7839)
### Expressions
* Fix the constant folding issue of the `SYSDATE` function [#7895](https://github.com/pingcap/tidb/pull/7895)
* Fix the issue that `SUBSTRING_INDEX` panics in some cases [#7897](https://github.com/pingcap/tidb/pull/7897)
### DDL
* Fix the stack overflow issue caused by throwing the `invalid ddl job type` error [#7958](https://github.com/pingcap/tidb/pull/7958)
* Fix the issue that the result of `ADMIN CHECK TABLE` is incorrect in some cases [#7975](https://github.com/pingcap/tidb/pull/7975)

## [2.1.0-rc.2] - 2018-09-14
### SQL Optimizer
* Put forward a proposal of the next generation Planner [#7543](https://github.com/pingcap/tidb/pull/7543)
* Improve the optimization rules of constant propagation [#7276](https://github.com/pingcap/tidb/pull/7276)
* Enhance the computing logic of `Range` to enable it to handle multiple `IN` or `EQUAL` conditions simultaneously [#7577](https://github.com/pingcap/tidb/pull/7577)
* Fix the issue that the estimation result of `TableScan` is incorrect when `Range` is empty [#7583](https://github.com/pingcap/tidb/pull/7583)
* Support the `PointGet` operator for the `UPDATE` statement [#7586](https://github.com/pingcap/tidb/pull/7586)
* Fix the panic issue during the process of executing the `FirstRow` aggregate function in some conditions [#7624](https://github.com/pingcap/tidb/pull/7624)
### SQL Execution Engine
* Fix the potential `DataRace` issue when the `HashJoin` operator encounters an error [#7554](https://github.com/pingcap/tidb/pull/7554)
* Make the `HashJoin` operator read the inner table and build the hash table simultaneously [#7544](https://github.com/pingcap/tidb/pull/7544)
* Optimize the performance of Hash aggregate operators [#7541](https://github.com/pingcap/tidb/pull/7541)
* Optimize the performance of Join operators [#7493](https://github.com/pingcap/tidb/pull/7493), [#7433](https://github.com/pingcap/tidb/pull/7433)
* Fix the issue that the result of `UPDATE JOIN` is incorrect when the Join order is changed [#7571](https://github.com/pingcap/tidb/pull/7571)
* Improve the performance of Chunk’s iterator [#7585](https://github.com/pingcap/tidb/pull/7585)
### Statistics
* Fix the issue that the auto Analyze work repeatedly analyzes the statistics [#7550](https://github.com/pingcap/tidb/pull/7550)
* Fix the statistics update error that occurs when there is no statistics change [#7530](https://github.com/pingcap/tidb/pull/7530)
* Use the RC isolation level and low priority when building `Analyze` requests [#7496](https://github.com/pingcap/tidb/pull/7496)
* Support enabling statistics auto-analyze on certain period of a day [#7570](https://github.com/pingcap/tidb/pull/7570)
* Fix the panic issue when logging the statistics information [#7588](https://github.com/pingcap/tidb/pull/7588)
* Support configuring the number of buckets in the histogram using the `ANALYZE TABLE WITH BUCKETS` statement [#7619](https://github.com/pingcap/tidb/pull/7619)
* Fix the panic issue when updating an empty histogram [#7640](https://github.com/pingcap/tidb/pull/7640)
* Update `information_schema.tables.data_length` using the statistics information [#7657](https://github.com/pingcap/tidb/pull/7657)
### Server
* Add Trace related dependencies [#7532](https://github.com/pingcap/tidb/pull/7532)
* Enable the `mutex profile` feature of Golang  [#7512](https://github.com/pingcap/tidb/pull/7512)
* The `Admin` statement requires the `Super_priv` privilege [#7486](https://github.com/pingcap/tidb/pull/7486)
* Forbid users to `Drop` crucial system tables [#7471](https://github.com/pingcap/tidb/pull/7471)
* Switch from `juju/errors` to `pkg/errors` [#7151](https://github.com/pingcap/tidb/pull/7151)
* Complete the functional prototype of SQL Tracing [#7016](https://github.com/pingcap/tidb/pull/7016)
* Remove the goroutine pool [#7564](https://github.com/pingcap/tidb/pull/7564)
* Support viewing the goroutine information using the `USER1` signal [#7587](https://github.com/pingcap/tidb/pull/7587)
* Set the internal SQL to high priority while TiDB is started [#7616](https://github.com/pingcap/tidb/pull/7616)
* Use different labels to filter internal SQL and user SQL in monitoring metrics [#7631](https://github.com/pingcap/tidb/pull/7631)
* Store the top 30 slow queries in the last week to the TiDB server [#7646](https://github.com/pingcap/tidb/pull/7646)
* Put forward a proposal of setting the global system time zone for the TiDB cluster [#7656](https://github.com/pingcap/tidb/pull/7656)
* Enrich the error message of “GC life time is shorter than transaction duration” [#7658](https://github.com/pingcap/tidb/pull/7658)
* Set the global system time zone when starting the TiDB cluster [#7638](https://github.com/pingcap/tidb/pull/7638)
### Compatibility
* Add the unsigned flag for the `Year` type [#7542](https://github.com/pingcap/tidb/pull/7542)
* Fix the issue of configuring the result length of the `Year` type in the `Prepare`/`Execute` mode [#7525](https://github.com/pingcap/tidb/pull/7525)
* Fix the issue of inserting zero timestamp in the `Prepare`/`Execute` mode [#7506](https://github.com/pingcap/tidb/pull/7506)
* Fix the error handling issue of the integer division [#7492](https://github.com/pingcap/tidb/pull/7492)
* Fix the compatibility issue when processing `ComStmtSendLongData` [#7485](https://github.com/pingcap/tidb/pull/7485)
* Fix the error handling issue during the process of converting string to integer [#7483](https://github.com/pingcap/tidb/pull/7483)
* Optimize the accuracy of values in the `information_schema.columns_in_table` table [#7463](https://github.com/pingcap/tidb/pull/7463)
* Fix the compatibility issue when writing or updating the string type of data using the MariaDB client [#7573](https://github.com/pingcap/tidb/pull/7573)
* Fix the compatibility issue of aliases of the returned value [#7600](https://github.com/pingcap/tidb/pull/7600)
* Fix the issue that the `NUMERIC_SCALE` value of the float type is incorrect in the `information_schema.COLUMNS` table [#7602](https://github.com/pingcap/tidb/pull/7602)
* Fix the issue that Parser reports an error when the single line comment is empty [#7612](https://github.com/pingcap/tidb/pull/7612)
### Expressions
* Check the value of `max_allowed_packet` in the `insert` function [#7528](https://github.com/pingcap/tidb/pull/7528)
* Support the built-in function `json_contains`  [#7443](https://github.com/pingcap/tidb/pull/7443)
* Support the built-in function `json_contains_path` [#7596](https://github.com/pingcap/tidb/pull/7596)
* Support the built-in function `encode/decode` [#7622](https://github.com/pingcap/tidb/pull/7622)
* Fix the issue that some time related functions are not compatible with the MySQL behaviors in some cases [#7636](https://github.com/pingcap/tidb/pull/7636)
* Fix the compatibility issue of parsing the time type of data in string [#7654](https://github.com/pingcap/tidb/pull/7654)
* Fix the issue that the time zone is not considered when computing the default value of the `DateTime` data [#7655](https://github.com/pingcap/tidb/pull/7655)
### DML
* Set correct `last_insert_id` in the `InsertOnDuplicateUpdate` statement [#7534](https://github.com/pingcap/tidb/pull/7534)
* Reduce the cases of updating the `auto_increment_id` counter [#7515](https://github.com/pingcap/tidb/pull/7515)
* Optimize the error message of `Duplicate Key` [#7495](https://github.com/pingcap/tidb/pull/7495)
* Fix the `insert...select...on duplicate key update` issue [#7406](https://github.com/pingcap/tidb/pull/7406)
* Support the `LOAD DATA IGNORE LINES` statement [#7576](https://github.com/pingcap/tidb/pull/7576)
### DDL
* Add the DDL job type and the current schema version information in the monitor [#7472](https://github.com/pingcap/tidb/pull/7472)
* Complete the design of the `Admin Restore Table` feature [#7383](https://github.com/pingcap/tidb/pull/7383)
* Fix the issue that the default value of the `Bit` type exceeds 128 [#7249](https://github.com/pingcap/tidb/pull/7249)
* Fix the issue that the default value of the `Bit` type cannot be `NULL` [#7604](https://github.com/pingcap/tidb/pull/7604)
* Reduce the interval of checking `CREATE TABLE/DATABASE` in the DDL queue [#7608](https://github.com/pingcap/tidb/pull/7608)
* Use the `ddl/owner/resign` HTTP interface ro release the DDL owner and start electing a new owner [#7649](https://github.com/pingcap/tidb/pull/7649)
### TiKV Go Client
* Support the issue that the `Seek` operation only obtains `Key`  [#7419](https://github.com/pingcap/tidb/pull/7419)
### [Table Partition](https://github.com/pingcap/tidb/projects/6) (Experimental)
* Fix the issue that the `Bigint` type cannot be used as the partition key  [#7520](https://github.com/pingcap/tidb/pull/7520)
* Support the rollback operation when an issue occurs during adding an index in the partitioned table [#7437](https://github.com/pingcap/tidb/pull/7437)

## [2.0.0-rc.5] - 2018-04-17
### New Features
* Support showing memory usage of the executing statements in the `SHOW PROCESSLIST` statement
* Support setting the table comment using the `Alter` statement
### Improvements
* Clean up the written data while rolling back the `Add Index` operation, to reduce consumed space
* Optimize the insert on duplicate key update statement to improve the performance by 10 times
### Bug Fixes
* Fix the issue about applying the Top-N pushdown rule
* Fix the issue that `Alter Table Modify Column` reports an error in extreme conditions
* Fix the issue about the type of the results returned by the `UNIX_TIMESTAMP` function
* Fix the issue that the NULL value is inserted while adding NOT NULL columns
* Fix the estimation of the number of rows for the columns that contain NULL values
* Fix the zero value of the Binary type
* Fix the BatchGet issue within a transaction

## [2.0.0-rc.4] - 2018-04-01
### New Features
* Support `SHOW GRANTS FOR CURRENT_USER();`
* Support the `SET TRANSACTION` syntax
* Support displaying floating point numbers using scientific notation
### Improvements
* Improve the execution performance of `DecodeBytes`
* Optimize `LIMIT 0` to `TableDual`, to avoid building useless execution plans
### Bug Fixes
* Fix the issue that the `Expression` in `UnionScan` is not cloned
* Fix the potential goroutine leak issue in `copIterator`
* Fix the issue that admin check table misjudges the unique index including null
* Fix the type inference issue during binary literal computing
* Fix the issue in parsing the `CREATE VIEW` statement
* Fix the panic issue when one statement contains both `ORDER BY` and `LIMIT 0`

## [2.0.0-rc.3] - 2018-03-23
### New Features
* Support closing the `Join Reorder` optimization in the optimizer using `STRAIGHT_JOIN`
* Output more detailed status information of DDL jobs in `ADMIN SHOW DDL JOBS`
* Support querying the original statements of currently running DDL jobs using `ADMIN SHOW DDL JOB QUERIES`
* Support recovering the index data using `ADMIN RECOVER INDEX` for disaster recovery
* Attach a lower priority to the `ADD INDEX` operation to reduce the impact on online business
* Support aggregation functions with JSON type parameters, such as `SUM/AVG`
* Support modifying the `lower_case_table_names` system variable in the configuration file, to support the OGG data synchronization tool
* Support using implicit `RowID` in CRUD operations
### Improvements
* Improve compatibility with the Navicat management tool
* Use the Stream Aggregation operator when the `GROUP BY` clause is empty, to increase the speed
* Optimize the execution speed of `ADD INDEX` to greatly increase the speed in some scenarios
* Optimize checks on length and precision of the floating point type, to improve compatibility with MySQL
* Improve the parsing error log of time type and add more error information
* Improve memory control and add statistics about `IndexLookupExecutor` memory
### Bug Fixes
* Fix the wrong result issue of `MAX/MIN` in some scenarios
* Fix the issue that the result of `Sort Merge Join` does not show in order of `Join Key` in some scenarios
* Fix the error of comparison between uint and int in boundary conditions

## [2.0.0-rc.2] - 2018-03-15
Only TiKV has this release

## [2.0.0-rc.1] - 2018-03-09
### New Features
* Support limiting the memory usage by a single SQL statement, to reduce the risk of OOM
* Support pushing the Stream Aggregate operator down to TiKV
* Support validating the configuration file
* Support obtaining the information of TiDB configuration through HTTP API
### Improvements
* Improve the compatibility with Navicat
* Improve the optimizer and extract common expressions with multiple OR conditions, to choose better query plan
* Improve the optimizer and convert subqueries to Join operators in more scenarios, to choose better query plan
* Compatible with more MySQL syntax in Parser
* Resolve Lock in the Batch mode to increase the garbage collection speed
* Optimize the `Add Index` operation and give lower priority to all write and read operations, to reduce the impact on online business
### Bug Fixes
* Fix the length of Boolean field to improve compatibility

## [1.1.0-beta] - 2018-02-24
### New Features
* Add more monitoring metrics and refine the log
* Add the `tidb_config` session variable to output the current TiDB configuration
* Support displaying the table creating time in `information_schema`
### Improvements
* Compatible with more MySQL syntax
* Optimize queries containing the `MaxOneRow` operator
* Configure the size of intermediate result sets generated by Join, to further reduce the memory used by Join
* Optimize the query performance of the SQL engine to improve the test result of the Sysbench Select/OLTP by 10%
* Improve the computing speed of subqueries in the optimizer using the new execution engine; compared with TiDB 1.0, TiDB 1.1 Beta has great improvement in tests like TPC-H and TPC-DS
### Bug Fixes
* Fix the panic issue in the `Union` and `Index Join` operators
* Fix the wrong result issue of the `Sort Merge Join` operator in some scenarios
* Fix the issue that the `Show Index` statement shows indexes that are in the process of adding
* Fix the failure of the `Drop Stats` statement

## [1.0.8] - 2018-02-11
### New Features
* Add limitation (Configurable, the default value is 5000) to the DML statements number within a transaction
### Improvements
* Improve the stability of the GC process by ignoring the regions with GC errors
* Run GC concurrently to accelerate the GC process
* Provide syntax support for the `CREATE INDEX` statement
* Optimize the performance of the `InsertIntoIgnore` statement
### Bug Fixes
* Fix issues in the `Outer Join` result in some scenarios
* Fix the issue in the `ShardRowID` option
* Fix an issue in the `Table/Column` aliases returned by the Prepare statement
* Fix an issue in updating statistics delta
* Fix a panic error in the `Drop Column` statement
* Fix an DML issue when running the `Add Column After` statement

## [1.0.7] - 2018-01-22
### Improvements
* Optimize the `FIELD_LIST` command
* Fix data race of the information schema
* Avoid adding read-only statements to history
* Add the session variable to control the log query
* Add schema info API for the http status server
* Update the behavior when `RunWorker` is false in DDL
* Improve the stability of test results in statistics
* Support `PACK_KEYS` syntax for the `CREATE TABLE` statement
* Add `row_id` column for the null pushdown schema to optimize performance
### Bug Fixes
* Fix the resource leak issue in statistics
* Fix the goroutine leak issue
* Fix an issue about `IndexJoin`

## [1.1.0-alpha] - 2018-01-19
### New Features
* Support the PROXY protocol
### Improvements
* Support more syntax
* Reduce memory usage of statistics info using more compact structure
* Speed up loading statistics info when starting tidb-server
* Provide more accurate query cost evaluation
* Use `Count-Min Sketch` to estimate the cost of queries using unique index more accurately
* Support more complex conditions to make full use of index
* Refactor all executor operators using Chunk architecture, improve the execution performance of analytical statements and reduce memory usage
* Optimize performance of the `INSERT IGNORE` statement
* Push down more types and functions to TiKV
* Support more `SQL_MODE`
* Optimize the `Load Data` performance to increase the speed by 10 times
* Optimize the `Use Database` performance
* Support statistics on the memory usage of physical operators

repository: TiNiuB/tidb

repo_name: TiNiuB/tidb


text:
# FFXIV Hunt Bot

Defunct Discord bot for announcing hunts as they are reported on XIV-Hunt. Powered by [discordrb](https://github.com/meew0/discordrb).

## NOTICE: THIS BOT IS NO LONGER FUNCTIONAL

The data source for this bot, XIV-Hunt, has been shut down. As a result, this bot will no longer function as of Jun 9, 2020. If you are in need of callouts for hunts, FATEs, etc., please consider joining the [Centurio Hunts](http://centuriohunts.com/) Discord. This repository will remain in place for posterity.

## Dependencies

* Ruby (2.4.1)
* Redis

## Installation

This is a private bot. You will need to create and run your own Discord app to add it to your server.

1. [Create a new Discord app](https://discordapp.com/developers/applications/me)
2. Click "Create a Bot User"
3. Insert your client ID into the following URL: `https://discordapp.com/oauth2/authorize?client_id=INSERT_CLIENT_ID_HERE&scope=bot&permissions=19456`
4. Follow the URL to add the bot to your server (requires the Manage Server permission)
5. `git clone https://github.com/mattantonelli/ffxiv-hunt-bot`
6. `cd ffxiv-hunt-bot`
7. `bundle install`
8. Set up the configuration file
    * `cp config/config.yml.example config/config.yml`
    * Updated the example values appropriately
9. `bundle exec ruby run.rb`

## Permissions

* Read Text Channels & See Voice Channels
* Send Messages
* Embed Links

## Deployment

This bot is set up for [Capistrano](https://github.com/capistrano/capistrano) deployment. The deployment strategy is dependent on `rbenv` and `screen`. You can configure deployment to your own server by updating `config/deploy.rb` and `config/deploy/production.rb` appropriately.

repository: mattantonelli/ffxiv-hunt-bot

repo_name: mattantonelli/ffxiv-hunt-bot


text:
---
layout: post
title: Regex to the rescue
---

In Spring Tool Suite, refactoring a package name will look for every possible file name, including hidden files. That usually causes hangups on the file search.

The solution is to use the following regular expression to skip the files starts with a dot.

`^[^.].*$`

The regex reads anything that does not start with a period ( . ).


text:
## Front-end client

Please also refer to the main [contributing guide](/CONTRIBUTING.md).

### Installing
Running the client requires Google App Engine, which can be installed using the [Google Cloud SDK](https://cloud.google.com/sdk/docs/).

Once you have the Cloud SDK installed, install App Engine for Python by running:
```bash
gcloud components install app-engine-python
```

Altenatively, you may install the [App Engine SDK for Python](https://cloud.google.com/appengine/docs/python/download) directly.

### Building
```bash
cd client && npm install
```
Using yarn:
```bash
cd client && yarn
```

### Running
Run using either of these commands:
```bash
npm run client
dev_appserver.py client/client.yaml
```

Running locally will use the production API server. To override the backend instance set the instance parameter:
```
localhost:8080/element/PolymerElements/app-layout?instance=custom-elements-staging.appspot.com
```

### Testing
```bash
wct --skip-plugin sauce
```

### Deploying to staging
After a PR is merged for a client change, staging is automatically updated by travis on a successful build.

### Deploying to prod
```bash
cd client
npm run build
gcloud app deploy --no-promote build/client.yaml
```


text:
# Creating ModKit items

Note: This doument provides minimal instructions, for more details see the guides online at https://wiki.play.eco/en/Mod_Development

This document covers the client side objects, before they can be used they need to exist in the game server.

Note: As of 0.9.6 Eco is in the process of moving to Addressables for asset loading. Currently the modkit does not support this yet, however there have been some changes like the use of `ModkitPrefabContainer` to reduce the amount of setup done in the scene. Previous mods will still continue to work for now, but it is recommended to use the latest setup instructions for future compatability.

Different types you can create:
* World Objects - These match by name with objects in the game server
* Items - These are the icons for items and world objects
* Block Sets - These match blocks in the game server, and contain variations of meshes for how to build the mesh in game
* Emoji Sets - A set of emoji that are processed on the client

## Setting up the scene

1. Create a new scene
1. Remove everything from scene
1. Create an empty game object in root of scene and name "Objects"
1. Click "Add Component" and type in `ModkitPrefabContainer`
1. Create an empty game object in root of scene and name "Items"
1. Create an empty game object in root of scene and name "Emoji"
1. Click "Add Component" and type in `ChatEmoteSetOld`
1. Create an empty game object in root of scene and name "BlockSets"
1. Click "Add Component" and type in `BlockSetContainer`

## Adding Items

1. In the project browse to "Assets > EcoModKit > Prefabs"
1. Drag "ItemTemplate" onto "Items" in the scene. This will create a child game object called "ItemTemplate"
1. Right click the new "ItemTemplate" game object in the scene, and select "Prefab > Unpack Completely". This will remove the reference to the prefab.
1. Rename the game object to the name of your item
1. Edit the background and forground sprites

## Creating a new World Object

1. Create a new empty game object in the scene
1. Rename the object to the name of your world object
1. Set the tag to "ModObject"
1. Click "Add Component" and type in `WorldObject`
1. Add mesh
1. Drag the game object to the project window to save it as a prefab
1. Delete the game object in the scene

## Adding World Objects

1. Create object as a prefab
1. Click on "Objects" in scene root
1. Expand "Prefabs" In the "Modkit Prefab Container"
1. Click "+" to add a new element to the list
1. Select or drag the prefab onto the item.

## Adding Emojis

1. Click on the "Emoji" game object in the scene
1. Expand the "Emotes" list
1. Click "+" to add a new element to the list
1. Set the name
1. Set any aliases
1. Set the sprite

## Creating a BlockSet

1. Select the Project window
1. Right click in the view and select "Create > VoxelEngine > BlockSet"
1. Rename the asset
1. Create your blocks

## Adding Block Sets

1. Click on the "BlockSets" game object in the scene
1. Expand the "Block Sets" list
1. Click "+" to add a new element to the list
1. Select your BlockSet


text:
---
layout: post
title:  "eResearch Australasia pre-conference workshop and BoF - Recognition for Researchers who Code"
from:   2018-10-16 09:00:00 +1000
to:     2018-10-16 17:00:00 +1000
location: Melbourne, Australia
tags: events conference
---

There was plenty of discussion in the RSE pre-conference workshop
*Recognition and Career Development for Researchers who Code* that was
held at eResearch Australasia on the 16th of October.
There was even more at the BoF the next day. These discussions resulted
in two realisations. The first one was that while our main focus is
helping researchers who code get recognised, we also need to do the same
for *generalists*, people who bring communities together and can engage
with both researchers and technical staff. The second realisation was
that we are still in an embryonic phase and we need to get more people
involved to get a critical mass.

![rse-workshop](/assets/RSEworkshop.png){:class="img-responsive"}

To have a look at the simple slides we created for the BoF,
[click here.](<https://docs.google.com/presentation/d/1lhhZQcdTu-J43j28vbySfCrE_DwYqBza3sNCX9Dm68U/edit#slide=id.g44fe97d406_11_5>)

What was great about both meetings was that we had a range of people
from all over Australia and New Zealand all willing to help grow the
community.

If you would like to help out, there are a number of things you can do:

- Sign up for the [google groups email list](<https://groups.google.com/d/forum/rse-nz-au>)
- Join our monthly meeting of volunteers by letting us know via the Google Group.
- Comment on our open github issue of the summary of the BoF and workshop: [https://github.com/rse-aunz/rse-au/issues/49](<https://github.com/rse-aunz/rse-au/issues/49>)
- Comment on other topics on the github issues folder: [https://github.com/rse-aunz/rse-au/issues](<https://github.com/rse-aunz/rse-au/issues>)

extension: markdown


text:
---
title: globber
publish_date: 2022-08-04
---

Earlier this week I published my first rust crate; [`package_json_schema`](https://crates.io/crates/package_json_schema).

Today I've followed up by publishing a small package for filtering files via globs.

I named it [`globber`](https://github.com/ifiokjr/globber).

Surprisingly, I found learning about [Deno](https://deno.land) tooling far more interesting that working on the published project.

The [`rust`](https://www.rust-lang.org/) ecosystem has led the way, showing what great tooling can look like. For example, in [`rust`](https://www.rust-lang.org/) you can run tests against comments and markdown files. This is currently missing from the JavaScript ecosystem and is something I've envied for a while.

Today, however, I discovered that [Deno](https://deno.land) has a wonderful utility for verifying that all code examples are valid.

```bash
deno test --doc readme.md
```

This is great!

It parses all JavaScript and TypeScript snippets in the `readme.md` file and runs them. If any fail, the test fails. It even provides accurate source maps pointing out exactly where the failures happened.

Genius, and almost perfect.

In order to perfect the process of discovering relevant files I wrote a [small script](https://github.com/ifiokjr/globber/blob/3415ffc46e538c12d31452e4a31b7c5a15b68f32/scripts/test_docs.ts#L49-L61). This script uses the `globber` module to search for relevant `.md` and `.ts` files to test.

```ts
// scripts/deno_test.ts
import { globber } from<EMAIL_ADDRESS>
const cwd = new URL("../", import.meta.url).pathname;
// Store the relevant file paths
const files: string[] = [];
const iterator = globber({
  cwd,
  // Only search for markdown and typescript files
  extensions: [".ts", ".md"],
  exclude: ["**/fixtures/", "**/tests/", "**/scripts/"],
  excludeDirectories: true,
});

for await (const file of iterator) {
  files.push(file.relative);
}

await Deno
  .run({
    cmd: ["deno", "test", "--doc", "--check", `--allow-read=${cwd}`, ...files],
    cwd,
  }).status();
```

The command can be run like so:

```bash
deno run -A scripts/deno_test.ts
```

I've added this command to the `deno.jsonc` tasks.

```bash
deno task test:docs
```

When the command was first run it immediately highlighted several bugs in the documentation. I've fixed them and will be adding this flow to all future continuous integration pipelines.

Little surprises like this make me love 💖 [Deno](https://deno.land) even more.

gha_language: TypeScript


text:
webapp-setup
============

Basic setup for simple to advanced website build (Sass and bootstrap).

Getting Started

This is basic webapp setup repo. You just need to download this to your machine or using terminal,

git clone https://github.com/inanosp/webapp-setup.git

Installing Bower:

Bower can be installed using npm, the Node package manager. If you don’t already have npm installed, head over to the Node.js website and download the relevant copy of Node.js for your system. The npm program is included with the install of Node.js.

Once you have npm installed, open up Terminal (or Command Prompt) and enter the following command:

npm install -g bower

This will install Bower globally on your system.

Installing Grunt CLI:

Now install Grunt's command line interface (CLI) globally. You may need to use sudo (for OSX, *nix, BSD etc) or run your command shell as Administrator (for Windows) to do this.

npm install -g grunt-cli

This will put the grunt command in your system path, allowing it to be run from any directory.

Install dependencies/modules Using bower and npm

Now that you have Bower installed, we can start looking at the commands that are used to manage packages.
All dependencies/modules are predefined in Gruntfile.js.

bower install && npm install

This is what your project will look like once you've installed all packages using bower and npm.

License

 MIT License

Made By...

@santuparashetti at santup.github.io

repository: inanosp/webapp-setup

repo_name: inanosp/webapp-setup


text:
---
layout: post
status: publish
published: true
title: Automated testing
author: wade
author_login: wade
author_email<EMAIL_ADDRESS>author_url: http://wadeshearer.com
wordpress_id: 310
wordpress_url: http://uphpu.org/2007/03/12/automated-testing/
date: '2007-03-12 14:40:05 -0500'
date_gmt: '2007-03-12 20:40:05 -0500'
categories:
- Presentations
tags: []
---

For our February meeting, Alvaro Carrasco will present on Automated Testing as it applies to PHP web applications. He will be demonstrating tools like SimpleTest and Selenium, and a sample project setup.

repository: uphpu/uphpu-website

repo_name: uphpu/uphpu-website


text:
# Changelog

The [secret-service](https://github.com/swiesend/secret-service) library implements the [Secret Service API 0.2](https://specifications.freedesktop.org/secret-service/0.2/).

## Unreleased

The 2.0 interface design is to be found on the [`develop-2.x.x`](https://github.com/swiesend/secret-service/tree/develop-2.x.x) branch.

## [1.8.1-jdk17] - 2023-01-17

- `Fixed`:
  - Actually use `dbus-java-transport-native-unixsocket` instead of `dbus-java-transport-jnr-unixsocket`.
- `Changed`:
  - Update `slf4j-api` from `2.0.5` to `2.0.6`.
  - Update test and plugin libraries.

## [1.8.0-jdk17] - 2022-12-12

- `Changed`:
  - Make dbus service `org.gnome.keyring` an optional requirement. The `org.gnome.keyring.InternalUnsupportedGuiltRiddenInterface` is not part of the original specification. In order to unlock the `SimpleCollection` with a primary password, the dbus service `org.gnome.keyring` needs to be present. There is the new static method `SimpleCollection.isGnomeKeyringAvailable()` in order to check the Gnome keyring availability separately.
  - Require **JDK 17** for `dbus-java` upgrade.
  - Update `dbus-java` from `3.3.0` to `4.2.1`. Using the new split library `dbus-java-core` together with `dbus-java-transport-native-unixsocket`.
  - Update `slf4j-api` from `1.7.30` to `2.0.4`.

## [1.7.0] - 2021-10-18

- `Fixed`
  - Fix [#30](https://github.com/swiesend/secret-service/issues/30) by removing the auto-close disconnect of `SimpleCollection` instances, which were introduced for [#26](https://github.com/swiesend/secret-service/issues/26). One has to call `SimpleCollection.disconnect()` manually in order to close the D-Bus connection or wait for the shutdown hook of `SimpleCollection`, which eventually will close the D-Bus connection. The shutdown hook is always set-up with the static lifetime of `SimpleCollection`.
  - Fix dead-lock of [cryptomator/integrations-linux#12]https://github.com/cryptomator/integrations-linux/issues/12 with the new `SimpleCollection.disconnect()` method. Waits only for 2 seconds to close the connection properly and logs otherwise.
- `Changed`
  - Removes the `ReentrantLock` from `SimpleCollection.disconnect` and changes the method signature to `synchronized`.
- `Added`
  - Add a regression test for [#30](https://github.com/swiesend/secret-service/issues/30) that checks if multiple instances of the `SimpleCollection` can be used one after the other.
  - Add `SimpleCollection.isConnected()` to the public interface as static method.
  - Add `SimpleCollection.disconnect()` to the public interface as static method.

## [1.6.2] - 2021-04-22

- `Fixed`
  - `Hotfix`: Check for all necessary services on the system:
    - `org.freedesktop.DBus`,
    - `org.freedesktop.secrets`,
    - `org.gnome.keyring`

## [1.6.1] - 2021-04-16

- `Fixed`
  - `Hotfix`: 'SimpleCollection()' is not public in 'org.freedesktop.secret.simple.SimpleCollection'. Could not be accessed from outside package.

## [1.6.0] - 2021-04-16

- `Fixed`
  - Fix [cryptomator/integrations-linux/issues/5](https://github.com/cryptomator/integrations-linux/issues/5) by using `dbus-java` `3.3.0`, which solves [dbus-java/issues/128](https://github.com/hypfvieh/dbus-java/issues/128).
  - Fix [#26](https://github.com/swiesend/secret-service/issues/26) by closing `DBusConnection` on the auto close of the `SimpleCollection`. The D-Bus connection closes now immediately on calling `SimpleCollection.close()` or at the end of the lifetime of the static scope from `SimpleCollection`.
  - Handle `org.gnome.keyring.Error.Denied` as `info` log message (`MessageHandler`). E.g. if the password of a collection is wrong.
  - Handle `org.freedesktop.dbus.exceptions.NotConnected` as `debug` log message (`MessageHandler`).

## [1.5.0] - 2021-02-18

- `Fixed`
  - Fix the static `isAvailable()` method by also checking if the D-Bus service `org.freedesktop.DBus` is provided by the system and can open a session.
  - Handle `org.freedesktop.DBus.Error.ServiceUnknown` D-Bus errors.
- `Changed`
  - Change the low-level `TransportEncryption.openSession()` return type from `void` to `boolean`.
  - Handle `org.freedesktop.DBus.Error.*` as `debug` log message (`MessageHandler`).
  - Handle `org.freedesktop.Secret.Error.*` as `warn` or `info` log message (`MessageHandler`).

## [1.4.0] - 2021-01-19

- `Fixed`
  - Fix the static `isAvailable()` method by checking if the secret service is actually provided by the D-Bus and supports the expected transport encryption algorithm.

## [1.3.1] - 2021-01-19

- `Changed`
  - Warn with a short message instead of logging the whole stack trace, when there is a problem with the D-Bus connection.
- `Fixed`
  - Fix a `NullPointerException` for the static `isAvailable()` method, when there is no D-Bus connection available. This happened, when [`dbus-java`](https://github.com/hypfvieh/dbus-java) raises a `RuntimeException: Cannot Resolve Session Bus Address` and the connection kept being uninitialized, which was not checked by the `isAvailable()` method.

## [1.3.0] - 2021-01-05
- `Added`
  - Add `isLocked()` method to the `SimpleCollection` interface.
- `Fixed`
  - Fix [`#21`](https://github.com/swiesend/secret-service/issues/21), which lead to a race condition when closing the connection like 1/25 times.
    The problem was very kindly investigated by [@infeo](https://github.com/infeo) and fixed by [@hypfvieh](https://github.com/hypfvieh) in [`dbus-java`](https://github.com/hypfvieh/dbus-java/issues/123) in version [`3.2.4`](https://github.com/hypfvieh/dbus-java/tree/dbus-java-parent-3.2.4).
  - Fix problems of [integrations-linux/pull/1](https://github.com/cryptomator/integrations-linux/pull/1), thanks goes to [@purejava](https://github.com/purejava) for pointing out the issues:
    - Make main thread interruptible for better signal handling and ui integrations
    - Handle `org.freedesktop.DBus.Error.UnknownMethod` for better prompt handling and warn only.
    - Warn on `org.freedesktop.Secret.Error.NoSession`, `org.freedesktop.Secret.Error.NoSuchObject`, `org.freedesktop.Secret.Error.IsLocked` with a short message, instead of writing a whole stacktrace.
  - Fix a `ClassCastException` for locked keyrings for the SimpleCollection interface.
  - Fix problems of [integrations-linux/pull/4](https://github.com/cryptomator/integrations-linux/pull/4), thanks to [@Liboicl](https://github.com/Liboicl) for reporting and PRs:
    - Handle unexpected `RuntimeException` if no D-Bus session can be initiated.

## [1.2.3] - 2020-11-09

- `Added`
  - Add possible `RuntimeException`s: `AccessControlException`, `IllegalArgumentException` to the SimpleCollection example.
  - Add an interface `org.freedesktop.secret.simple.interfaces.SimpleCollection` for the high-level api.
- `Fixed`
  - Overhaul of the disconnect logic for the signal handlers and the D-Bus connection.
    One has to disconnect the signal handlers manually using the low-level api.
    The new introduced changes should avoid race conditions during the `disconnect()` phase and thus hopefully:
    - Fix [`#20`](https://github.com/swiesend/secret-service/issues/20)

## [1.2.2] - 2020-11-06

- `Fixed`
  - [`#24`](https://github.com/swiesend/secret-service/issues/24) Provide better log messages and log root exceptions instead of causes only.
  - [`#25`](https://github.com/swiesend/secret-service/issues/25) Avoid possible `NullPointerException`s during logging of empty D-Bus responses.

## [1.2.1] - 2020-10-17

- `Fixed`
  - `#23` Already created non default collections with a master password will use the master password to unlock the collection silently.
          Before the user was prompted for already created collections.

## [1.2.0] - 2020-09-17

- `Added`
  - add `SimpleCollection.isAvailable()`, which checks if `org.freedesktop.secrets` is provided as D-Bus service.
    - NOTE: might lead to a `RejectedExecutionException` or a `DBusExecutionException` in 1/25 cases on
            `DBusConnection.disconnect()`, but should be handled all time.
      See:
      - https://github.com/swiesend/secret-service/issues/20
      - https://github.com/swiesend/secret-service/issues/21
- `Changed`
  - the `SimpleCollection` constructor checks the availability of the secret service by using `SimpleCollection.isAvailable()`.
  - ask only once for user permission per session. This avoids multiple unlock prompts right after another.
  - synchronize the access to the handled signals for `SignalHandler.handle()`.
- `Fix`
  - make `SimpleCollection.lock()` and `SimpleCollection.unlockWithUserPermission()` actually public, instead of protected.
  - do not exit early on unexpected signals for `SignalHandler.await()`.

## [1.1.0] - 2020-08-14

- `Added`
  - add `SimpleCollection.setTimeout()`. In order to set a timeout for awaiting prompts.
  - add `SimpleCollection.lock()`. In order to lock a given collection at any time.
- `Changed`
  - improve signal handling by closing open prompts automatically after the timeout.
  - change the default timeout from 300 to 120 seconds and make it configurable.
  - make `SimpleCollection.unlockWithUserPermission()` ~~public~~ protected.

## [1.0.1] - 2020-08-14

- `Changed`
  - update `dbus-java` to `3.2.3` to fix #13.

## [1.0.0] - 2020-05-07

- `Changed`
  - The signal handlers have now a default timeout of 300 seconds instead of 60.
  - The signal handling timeout can now be set in the low-level API.
  - Update dependencies up to the same patch level
    - Clarify ambiguous call `HKDF.fromHmacSha256().extract()` by explicit type casting.
- `Fixed`
  - `#4`, `#10`: Fix RejectedExecutionException by closing the session
  - `#9`: Fix module problem for `org.freedesktop.dbus` which is also used by `dbus-java`
  - `#11`: Fix JDK8 support by using the `release` flag for the `maven-compiler-plugin`.

## [1.0.0-RC.3] - 2019-05-07

- `Changed`
  - update dependencies

## [1.0.0-RC.2] - 2019-03-19

- `Added`
  - add `slf4j-api` dependency
- `Fixed`
  - use `slf4j-simple` only in test scope

## [1.0.0-RC.1] - 2019-03-12

- implement the [Secret Service API 0.2](https://specifications.freedesktop.org/secret-service/)

[1.8.0-jdk17]:  https://github.com/swiesend/secret-service/compare/v1.7.0...v1.8.0-jdk17
[1.7.0]:  https://github.com/swiesend/secret-service/compare/v1.6.2...v1.7.0
[1.6.2]:  https://github.com/swiesend/secret-service/compare/v1.6.1...v1.6.2
[1.6.1]:  https://github.com/swiesend/secret-service/compare/v1.6.0...v1.6.1
[1.6.0]:  https://github.com/swiesend/secret-service/compare/v1.5.0...v1.6.0
[1.5.0]:  https://github.com/swiesend/secret-service/compare/v1.4.0...v1.5.0
[1.4.0]:  https://github.com/swiesend/secret-service/compare/v1.3.1...v1.4.0
[1.3.1]:  https://github.com/swiesend/secret-service/compare/v1.3.0...v1.3.1
[1.3.0]:  https://github.com/swiesend/secret-service/compare/v1.2.3...v1.3.0
[1.2.3]:  https://github.com/swiesend/secret-service/compare/v1.2.2...v1.2.3
[1.2.2]:  https://github.com/swiesend/secret-service/compare/v1.2.1...v1.2.2
[1.2.1]:  https://github.com/swiesend/secret-service/compare/v1.2.0...v1.2.1
[1.2.0]:  https://github.com/swiesend/secret-service/compare/v1.1.0...v1.2.0
[1.1.0]:  https://github.com/swiesend/secret-service/compare/v1.0.1...v1.1.0
[1.0.1]:  https://github.com/swiesend/secret-service/compare/v1.0.0...v1.0.1
[1.0.0]:  https://github.com/swiesend/secret-service/compare/v1.0.0-RC.3...v1.0.0
[1.0.0-RC.3]:  https://github.com/swiesend/secret-service/compare/v1.0.0-RC.2...v1.0.0-RC.3
[1.0.0-RC.2]:  https://github.com/swiesend/secret-service/compare/v1.0.0-RC.1...v1.0.0-RC.2
[1.0.0-RC.1]:  https://github.com/swiesend/secret-service/releases/tag/v1.0.0-RC.1

repository: swiesend/secret-service

gha_language: Java

repo_name: swiesend/secret-service


text:
##  Sales Order Accounting Release (SO.E2)

<PageHeader />

**Form Details**
[ Form Details ](SO-E2-1/README.md)

**Purpose**
The SO.E2 procedure is used to release sales orders, even if the customer is on credit hold or if they are currently exceeding their limit. Releasing an order means that no further credit checks will be performed for that sales order, even if the [ SO.E ](../../../../../../../../../../rover/AP-OVERVIEW/AP-ENTRY/AP-E/AP-E-1/CURRENCY-CONTROL/SO-E) procedure is re-saved.

The process will display some limited sales order data on the screen, in order to ensure it is the correct sales order. When the user presses the "Release" button, if their user ID is in the [ MRK.CONTROL ](../../../../../../../../../../rover/AP-OVERVIEW/AP-ENTRY/AP-E/AP-E-1/CURRENCY-CONTROL/SO-E/MRK-CONTROL) valid list, that ID will be placed into the "Released By" field. The record must be saved to complete the release.

**Frequency of Use**
As required.

**Prerequisites**
The list of valid user ID's must be entered in [ MRK.CONTROL ](../../../../../../../../../../rover/AP-OVERVIEW/AP-ENTRY/AP-E/AP-E-1/CURRENCY-CONTROL/SO-E/MRK-CONTROL) . This list controls which users can use the SO.E2 procedure and approve the release.

<badge text= "Version 8.10.57" vertical="middle" />

<PageFooter />

repository: zumasys/docs

gha_language: JavaScript

repo_name: zumasys/docs


text:
Once you've played around with Nova, you might want to deploy your app for the whole world to see.

We recommend using [Meteor Up](https://github.com/kadirahq/meteor-up) to deploy to a [Digital Ocean](http://digitalocean.com) server, along with [Compose](http://compose.io) to host your database.

Other good alternatives include [Galaxy](http://galaxy.meteor.com/) and [Scalingo](http://scalingo.com).

Learn more in the [Nova docs](http://nova-docs.telescopeapp.org/deployment.html).

repository: nsbarr/rubbercement

repo_name: nsbarr/rubbercement


text:
---
layout: post
title: Software Carpentry Skill
---
I just found the ["Software Carpentry"](https://github.com/swcarpentry), which provide very good training in terms of cs and academic research.

Here is the video http://vimeo.com/87241285

What I am going to follow is this meeting.

repository: snowdj/anotherWebsite

repo_name: snowdj/anotherWebsite


text:
# GreenBConsulting/KindGuide

[![Laravel](https://img.shields.io/badge/Laravel-5.7-orange.svg?style=flat-square)](http://laravel.com)
[![SurvLoop](https://img.shields.io/badge/SurvLoop-0.0-orange.svg?style=flat-square)](https://github.com/rockhopsoft/survloop)
[![License](http://img.shields.io/badge/license-MIT-brightgreen.svg?style=flat-square)](https://tldrlegal.com/license/mit-license)

Green B presents The Kind Guide database, a web app empowering the cannabis community and the industry to track growth
in ever more sustainable directions.  The site helps collect data and information to inform
this pollination. The Kind Guide database is built using
SurvLoop, atop
Laravel.
http://GoGreenB.org
SurvLoop is a Laravel-based engine for designing a database and creating a mobile-friendly user interface to fill it.

# Table of Contents
* [Requirements](#requirements)
* [Getting Started](#getting-started)
* [Documentation](#documentation)
* [Roadmap](#roadmap)
* [Change Logs](#change-logs)
* [Contribution Guidelines](#contribution-guidelines)

# Requirements

* php: >=7.2.11
* laravel/framework: 5.7.*
* rockhopsoft/survloop: 0.*

# Getting Started

The instructions below include the needed steps to install Laravel, SurvLoop, as well as the Kind Guide system.
For more on creating environments to host Laravel, you can find more instructions on
SurvLoop.org.

* Use Composer to install Laravel with default user authentication, one required package:

```
$ composer global require "laravel/installer"
$ composer create-project laravel/laravel KindGuide "5.7.*"
$ cd KindGuide
$ php artisan make:auth
$ php artisan vendor:publish --tag=laravel-notifications
```

* Update `composer.json` to add requirements and an easier Kind Guide reference:

```
$ nano composer.json
```

```
...
"require": {
	...
    "greenbconsulting/kindguide": "0.*",
	...
},
...
"autoload": {
	...
	"psr-4": {
		...
		"KindGuide\\": "vendor/greenbconsulting/kindguide/src/",
	}
	...
},
...
```

```
$ composer update
```

* Add the package to your application service providers in `config/app.php`.

```
$ nano config/app.php
```

```php
...
'providers' => [
	...
	SurvLoop\SurvLoopServiceProvider::class,
	KindGuide\KindGuideServiceProvider::class,
	...
],
...
'aliases' => [
	...
	'SurvLoop'	 => 'RockHopSoft\SurvLoop\SurvLoopFacade',
	'KindGuide'	 => 'GreenBConsulting\KindGuide\KindGuideFacade',
	...
],
...
```

* Swap out the SurvLoop user model in `config/auth.php`.

```
$ nano config/auth.php
```

```php
...
'model' => App\Models\User::class,
...
```

* Update composer, publish the package migrations, etc...

```
$ php artisan vendor:publish --force
$ php artisan migrate
$ composer dump-autoload
$ php artisan db:seed --class=SurvLoopSeeder
$ php artisan db:seed --class=KindGuideSeeder
```

* For now, to apply database design changes to the same installation you are working in, depending on your server,
you might also need something like this...

```
$ chown -R www-data:33 app/Models
$ chown -R www-data:33 database
```

* Browse to load the style sheets, etc.. /dashboard/css-reload

* Log into The Kind Guide admin dashboard...

```
user<EMAIL_ADDRESS>password: KindGuide
```

# Documentation

Once installed, documentation of this system's database design can be found at /dashboard/db/all . This system's user
experience design for data entry can be found at /dashboard/tree/map?all=1&alt=1 .

# Roadmap

Here's the TODO list for the next release (**1.0**). It's my first time building on Laravel, or GitHub. So sorry.

* [ ] Code commenting, learning and implementing more community standards.
* [ ] Correct collection of issues still on my list.
* [ ] Adding unit testing.
* [ ] Basic database design and user experience processes are generated by SurvLoop itself.
* [ ] Finish migrating all queries to use Laravel's process.

# Change Logs

# Contribution Guidelines

Please help educate me on best practices for sharing code in this community.
Please report any issue you find in the issues page.

# Reporting a Security Vulnerability

We want to ensure that SurvLoop is a secure HTTP open data platform for everyone.
If you've discovered a security vulnerability at App.TheKind.Guide,
we appreciate your help in disclosing it to us in a responsible manner.

Publicly disclosing a vulnerability can put the entire community at risk.
If you've discovered a security concern, please email us at rockhoppers *at* runbox.com.
We'll work with you to make sure that we understand the scope of the issue, and that we fully address your concern.
We consider correspondence sent to rockhoppers *at* runbox.com our highest priority,
and work to address any issues that arise as quickly as possible.

After a security vulnerability has been corrected, a release will be deployed as soon as possible.

repository: GreenBConsulting/kindguide

repo_name: GreenBConsulting/kindguide


text:
# Botryotinia moricola (I. Hino) W. Yamam., 1959 SPECIES

#### Status
ACCEPTED

#### According to
The Catalogue of Life, 3rd January 2011

#### Published in
Trans. Mycol. Soc. Japan 2(2): 5 (1959)

#### Original name
Sclerotinia moricola I. Hino

### Remarks
null

repository: mdoering/backbone

repo_name: mdoering/backbone


text:
# (Topdown) Tilemap Generator for Unity

Generates one or more traditional or hexagonal tilemaps based on provided Rule Tiles and a source (empty) Tilemap that will be used as a reference.
Each Rule Tile will represent a "layer", calculated using Perlin Noise, and will be placed on its own Tilemap.
The "Sorting Order" of any generated Tilemap (Renderer) will be incremented depending on the calculated layer.
You are also required to provide a "Weight" for each Rule Tile/layer. The weight defines "how big" a layer should be compared to the others.
The generated tilemaps will be created as children of the empty template ones, to avoid messing up with other tilemaps that you may want to use outside the scope of this script.

## Parameters available from the Inspector:
- *Rule Tiles*            add a Rule Tile for each layer that you want to create
- *Weights*               assign a weight to each layer to define how big it should be compared to the other ones.
- *Width*                 the width of the Map
- *Height*                the height of the Map
- *Scale*                 affects the Perlin Noise calculation; you may want to adjust this depending on the Width and Height of your Map
- *Randomize*             use a random Seed; ignored if calling Generate(true) from script, but not with Generate() or Generate(false)
- *Seed*                  base for the Perlin Noise calculation; the same Seed (with the same Scale) will always generate the same Map
- *Center Map*            Cell(0, 0) will be in the center of the generated Map
- *Fade Out Tiles*        check this option if your rule tiles only provide rules to fade out to the next layer
- *Island Water Border*   if greater than zero, fades the edges of the Map to the first layer and then adds a border of the specified size around the Map

## Usage
- Download and install the required Unity 2d-extras package from "https://github.com/Unity-Technologies/2d-extras"
   As specified in the README.md file of that repository, you can just add
   _"com.unity.2d.tilemap.extras": "https://github.com/Unity-Technologies/2d-extras.git#master"_
   to your _Packages/manifest.json_ file in your Unity Project under the dependencies section
- Create an empty Tilemap, either for traditional or hexagonal tiles, that will be used as a template for the generated ones
- Attach this script to the Grid GameObject containing the template Tilemap
- In the Inspector, assign a Rule Tile for any layer you want in the "Rule Tiles" list
- Define a weight for each layer in the "Weights" list
- Fill up the additional parameters as explained above
- Press "Generate Tilemaps" in the Editor to create the tilemaps, or call the Generate() method (provided by the API) from another script

## Additional API methods and references
- *grid*                  The grid component to which this script is attached
- *Map*                   TileData matrix representing the (calculated) tiles
- *TilemapsGenerated*     True if any generated Tilemap already exists
- *CellToMap()*           Converts a position from Cell to Map
- *MapToCell()*           Converts a position from Map to Cell
- *GetTileDataMap()*      Returns a TileData object from the specified position in the Map
- *GetTileDataCell()*     Returns a TileData object from the specified position in the grid
- *GetTileDataWorld()*    Returns a TileData object from the specified World position
- *Generate()*            Generates (or just calculates, if passing "true" as parameter) new Tilemaps

If you generated tilemaps from the Inspector and you want to use the Tilemap Generator API from your scripts during run-time, remember to always call _Generate(true)_ first, before any other provided function, using the same parameters in the Inspector that generated those tilemaps.

repository: sevensevenkk/TilemapGeneratorTopDown

repo_name: sevensevenkk/TilemapGeneratorTopDown


text:
The 2nd GraphiQL Working Group meeting will involve updates on current progress, further discussion of the next major version of GraphiQL in terms of plugin system, desired features, and discussing options in terms of the language server and codemirror/monaco, etc

- **Video Conference Link:** https://zoom.us/j/300773607
- **Live Notes:**
- **Date & Time:** [June 18th 2019 16:00 - 18:00 UTC](https://www.timeanddate.com/worldclock/meetingdetails.html?year=2019&month=6&day=18&hour=16&min=0&sec=0&p1=224&p2=179&p3=136&p4=37&p5=239&p6=101&p7=152)
- **NOTE:** Meeting date and time may change up to a week before the meeting. Please check the agenda the week of the meeting to confirm.

## Attendees

| Name                 | Organization         | Location              |
| -------------------- | -------------------- | --------------------- |
| Rikki Schulte        | GraphiQL Maint. Team | Cleveland, OH, US     |
| Alec Aivazis         | Ind. Contributor     | Los Angeles, CA, US   |
| ~Orta Therox~        | ~Microsoft~          | ~Redmond, US~         |
| Nigel Schuster       | Facebook             | New York, NY, US      |
| Josh Lear            | Facebook             | Menlo Park, CA, US    |
| Tanay Pratap         | Microsoft            | Bangalore, India      |
| Benjie Gillam        | GraphiQL Maint. Team | Southampton, UK       |
| Trevor Scheer        | Apollo               | San Francisco, CA, US |
| Jake Dawkins         | Apollo               | New York, NY, US      |
| _ADD YOUR NAME HERE_ | _COMPANY / ORG_      | _WHERE YOU ARE_       |

## Agenda

1. Introductions
1. Updates
   - Access
   - Licensing
   - Monorepo
1. Plugin System, Separate package for reusable UI
1. Language Server (Microsoft LSP?) & Codemirror or Monaco?
1. Propose using ISO8601 for wg agenda file naming ;)

repository: the-guild-org/graphiql

repo_name: the-guild-org/graphiql


text:
# Buy the Colors (websocket server)

This server communicates with a browser-based board game application when:
* A player is "registering" by providing their player name and waiting on other players
* At the end of every player turn, the game state is sent from the browser-based application to this server, and then this server broadcasts that (updated) game state to all players
* Maintaining a list of active and inactive players
* Reconnecting inactive players

The internal game state is managed by elm and the corresponding project is https://github.com/cdaniel3/BuyTheColors

When I wrote this, I understood there would be security implications (the entire game state, including all players' hidden cards) is stored in the javascript object, so technically it wouldn't be hard to cheat at this game). But I figured this was about the same as "cheating" using tabletop simulator. In other words, I'm not planning on playing with someone who I don't know personally.


text:
# SQL*Plus
SQL*Plus is annoying as it has no command editing, completion or history.  gqlplus is a better implementation which has all of these so should be used instead.  Below, gqlplus will be referred to as SQL*plus.

[http://gqlplus.sourceforge.net/](/wiki/http://gqlplus.sourceforge.net/)

You can connect to an oracle on database by launching SQL*Plus on the command line:

  sqlplus  <username>/<password>@<tnshost>

All of the table details are held in a meta table called all_tables.  Standard SQL queries can be made on this e.g.
  desc all_tables;
  select table_name from all_tables;  c.f. MySQL show tables;

You can run sql scripts at the command line by entering
  @/path/to/script

gqlplus - This is a replacement for sqlplus with command editing, command completion and command histories.

### Changing column width
In 8i, SQL*Plus annoyingly sets the default column width to 80 characters.  This was increased to 150 in Oracle 9.  To chose your own value use the SET command to set LIN:
  SET LIN 200
Note that this will still wrap to the split of a SSH window.
SQL*Plus will also show headings at the top of each //page//.  This can be annoying, as the pagesize is set to 14 on our version.  Set this to a more sensible value to match your terminal.  To be honest, I don't find these headings useful, except at the top of the results, so I tend to set the pagesize to something very large e.g.
  SET PAGES 100

http://www.ss64.com/orasyntax/plus_set.html


text:
QWAZR Cluster
=============

An open source REST Web Service for Cluster management. It is a component of QWAZR.
https://github.com/qwazr/qwazr.git

oss-cluster is a multi-master daemon in charge of maintaining a cluster of servers and services.
It has been build to be fully redondant and fault tolerant.

The main features are:
- Registration of server nodes and the hosted services.
- Monitoring of the server nodes.
- Synchronisation between oss-cluster nodes.
- Providing a list of the active nodes for one service.

Quickstart
----------

### Requirements

- Check that you have installed a [JAVA Runtime Environment 8](http://openjdk.java.net/install/)
- If you want to compile the software you need [Maven 3.0](http://maven.apache.org/)

### Compilation

Clone the source code:

```shell
git clone https://github.com/qwazr/qwazr-cluster.git
```

Compile and package (the binary will located in the target directory):

```shell
mvn clean package
```

### Download packages

You can download our nightly build available here:
http://download.opensearchserver.com/qwazr-cluster

### Usage

#### Configuration

The configuration file is in YAML format. Just provide the addresses and port of your oss-cluster master servers.

```yaml
masters: ["<IP_ADDRESS>:9099","<IP_ADDRESS>:9099"]
```

#### Start the server

In the command line, provide the IP address and the port of this instance.

```shell
java -jar target/oss-cluster-xxx-exec.jar -n <IP_ADDRESS> -p 9099
```

You can run several master servers, they will automatically be synchronised.

### The REST/JSON API

#### Get an overall status of the cluster

```shell
curl -XGET http://<IP_ADDRESS>:9099/cluster
```

```json
{
  "is_master" : true,
  "active_nodes" : [ "http://<IP_ADDRESS>:8080" ],
  "inactive_nodes" : {
    "http://<IP_ADDRESS>:8080" : {
      "online" : false,
      "state" : "undetermined"
    }
  },
  "services" : {
    "extractor" : "degraded",
    "job" : "ok",
    "renderer" : "failure"
  },
  "masters" : [ "http://<IP_ADDRESS>:9099", "http://<IP_ADDRESS>:9099" ],
  "last_executions" : {
    "Master sync" : "2015-03-29T00:00:31.594+0000",
    "Nodes monitoring" : "2015-03-29T00:01:41.651+0000"
  }
}
```

#### Register a server node and its services.

This API works like an upsert. The first call create the resource. The next call update the resource.

```shell
curl -H "Content-Type: application/json" \
	-d '{"address": "http://<IP_ADDRESS>:8080","services": ["job","extractor"]}' \
	http://<IP_ADDRESS>:9099
```
#### Unregister a server node.

```shell
curl -XDELETE http://<IP_ADDRESS>:9099/cluster?address=http%3A%2F%2F<IP_ADDRESS>%3A8080
```

#### Get the list of server nodes for one service

```shell
curl -XGET http://<IP_ADDRESS>:9099/cluster/service/{service_name}/active
```

The list is returned in JSON format.

Replace **service_name** by the name of the service.

#### Get one server node  for the given service

```shell
curl -XGET http://<IP_ADDRESS>:9099/cluster/service/{service_name}/active/random
```

The address is returned in TEXT/PLAIN format.

Issues and change Log
---------------------

Issues and milestones are tracked on GitHub:

- [Open issues](https://github.com/qwazr/qwazr-cluster/issues?q=is%3Aopen+is%3Aissue)
- [Closed issues](https://github.com/qwazr/qwazr-cluster/issues?q=is%3Aissue+is%3Aclosed)

License
-------

Copyright 2014-2015 [OpenSearchServer Inc.](http://www.opensearchserver.com)

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

repository: Sebastien-Andrivet/qwazr-cluster

repo_name: Sebastien-Andrivet/qwazr-cluster


text:
# Property #
## messages ##

Override the default validation messages for individual elements.

#### Default values ####

```javascript
"messages": {
    "required": "[field name] is a required field",
    "invalid": "[field name] must be valid",
    "minlength": "[field name] must have a minimum of [minlength] characters",
    "maxlength": "[field name] must have a maximum of [maxlength] characters",
    "min": "[field name] must have a minimum value of [min]",
    "max": "[field name] must have a maximum value of [max]"
}
```

repository: IBIData/nos-forms-jquery

repo_name: IBIData/nos-forms-jquery


text:
<!-- ======================================================================
--- Search engine
title:          Markdown blockquotes
keywords:       markdown, blockquotes
description:    Markdown blockquotes in md-site-engine.
--- Menu system
order:          80
text:           Blockquotes
hidden:         false
umbel:          false
--- Page properties
id:
document:
layout:         layout-2-left
$-left:         #side-menu
searchable:     true
--- Side menu
side-menu-root:     /markdown
side-menu-header:   Markdown help
side-menu-top:
side-menu-depth:    1
======================================================================= -->

# Blockquotes

```markdown
> Blockquotes are very handy in email to emulate reply text.
> This line is part of the same quote.

Quote break.

> This is a very long line that will still be quoted properly when it wraps. Oh boy let's keep writing to make sure this is long enough to actually wrap for everyone. Oh, you can *put* **Markdown** into a blockquote.
```

> Blockquotes are very handy in email to emulate reply text.
> This line is part of the same quote.

Quote break.

> This is a very long line that will still be quoted properly when it wraps. Oh boy let's keep writing to make sure this is long enough to actually wrap for everyone. Oh, you can *put* **Markdown** into a blockquote.

repository: logikum/md-doc-site

branch_name: refs/heads/develop

gha_language: CSS

repo_name: logikum/md-doc-site


text:
# Stash Token Authenticator 2.1

The latest version of [Stash Token Authenticator](https://github.com/monitorjbl/stash-token-auth) is now available on the Atlassian Marketplace. Thanks to [czandee](https://github.com/czandee) and [njalerikson](https://github.com/njalerikson) for their contributions to this release!

Fixes:

* Support for branch-permissions/2.0 endpoint ([#12](https://github.com/monitorjbl/stash-token-auth/pull/12))
* Fix for repo details endpoints ([#11](https://github.com/monitorjbl/stash-token-auth/pull/11))
* Support for the SSH REST API ([#15](https://github.com/monitorjbl/stash-token-auth/pull/15))

If you run into any issues after upgrading to the latest version of the plugin, please [open an issue](https://github.com/monitorjbl/stash-token-auth/issues) for it.


text:
# kimonolabs
This python script will attempt to retrieve data from both current and previous versions of an API built using [kimonolabs](https://www.kimonolabs.com/) API generator and save files in JSON format.  To use the script, simply edit the *api_id* and *api_key* values with your own in the **kimonoconfig.py.sample** file and save as **kimonoconfig.py**.  After editing the config file, run script to fetch and save your data.

The script will determine the current version of the API.  If the file doesn't already exist, the script will create it.  From there, the script simply goes back one version at a time, making sure it doesn't overwrite an existing file, until all available versions have been saved.  **NOTE:** [kimonolabs](https://www.kimonolabs.com/) currently limits previous data access to the past 30 days.

## Requirements
* Built-in modules: *os.path* and *json*
* 3rd party modules: [requests](http://docs.python-requests.org/en/latest/user/install/) - `$ pip install requests`
* Config file: **kimonoconfig.py** - **kimonoconfig.py.sample** provided for convenience

## Usage
`$ python kimonolabs.py`

repository: dmofot/kimonolabs

repo_name: dmofot/kimonolabs


text:
<img src= "Site-Map.png">

# Reflections 2.3

##1. What are the 6 Phases of Web Design?

1) Information Gathering.  This is where you learn what the requirements will be for the website.
2) Planning. Create an outline based on what you learned in step 1
3) Design.  A non-technical image based minimum viable product. This is essentially a series of still images that show what the website will look like.
4) Development.  This is where the rubber meets the road, and a functional website is created.
5) Testing and Delivery.  Tests to make sure the site functions in every way it’s meant to and in every environment.  Then delivery to the client.
6) Maintenance. Maintaining and adding to the website.

##2.  What is your site's primary goal or purpose? What kind of content will your site feature?

This site’s primary goal is to create a one stop-shop for my internet presence.  It will include my social media, past projects, current projects, blog, etc…

##3.  What is your target audience's interests and how do you see your site addressing them?
My target audience is anyone who wants to give me my dream job, so this will be professional and well designed website.

##4.  What is the primary "action" the user should take when coming to your site? Do you want them to search for information, contact you, or see your portfolio? It's ok to have several actions at once, or different actions for different kinds of visitors.

I would like the user to consume the information available on the website, and ultimately contact me with a job offer.  I imagine this will require several different actions, so I would like it to have different actions for different people or people with different purposes.

##5.  What are the main things someone should know about design and user experience?

It’s most important that it be built with the USER in mind rather than the owner or engineer.  Think about what experience you want the user to have, and what story you want the website to guide them through.

##6.  What is user experience design and why is it valuable?

User experience is exactly how it sounds. It is the experience that the user has on the website.  It’s valuable, because it is, essentially, everything.  You could be the worlds most stupendous person with tons over valuable information available, but if the user experience is so lousy that no one can, or wants to, see it then it’s all for naught.

##7.  Which parts of the challenge did you find tedious?

I’m still struggling a bit with adding the Site-Map as an image.

I also keep running into a fatal origin error... I've been working on this for a while, and am maybe sorting it through, but the main reason I'm typing this right now is to have a change to push through the workflow.


text:
# Typetron Angular utilities

**[Typetron](https://typetron.org)** is a **modern web framework** built for Node.js, written in **Typescript**, that
allows you to build fully featured web applications.

This package contains a set of utilities used in Angular apps when working with Typetron in order to speed up the
development process. More about it at [https://typetron.org](https://typetron.org/frontend/angular)

repository: typetron/framework

repo_name: typetron/framework


text:
# Output folder example

This example contains:

- A custom configuration file with a custom output folder. All type definitions will be generated in this directory.

The command to generate the proper type files would look like this (_in the root of this example, not repository_):

```bash
yarn typed-scss-modules "./**/*.scss"
```

repository: skovy/typed-scss-modules

repo_name: skovy/typed-scss-modules


text:
# R7.1 /logout [GET, POST]
Test Data:
```
test_user = User(
<EMAIL_ADDRESS>    name='test_frontend',
    password=generate_password_hash('test_frontend')
)
```
```
test_ticket = Ticket(
<EMAIL_ADDRESS>    name='test_ticket',
    quantity=10,
    price=10,
    date='20200901'
)
```

## Test Case R7.1 Logout will invalid the current session and redirect to the login page. After logout, the user shouldn't be able to access restricted pages. - Positive
Mocking:
 - Mock backend.get_user to return a test_user instance
 - Mock backend.get_ticket to return a test_ticket instance

Actions:
 - open /logout (to invalidate any logged-in sessions that may exist)
 - open /login
 - enter test_user's email into element `#email`
 - enter test_user's password into element `#password`
 - validate that the `#update_message` element shows `Successful.`
 - click element `#logout_submit`
 - open /logout
 - validate that /login doesn't redirect to /

path: /Assignment 1/R7 Test Cases.md

filename: R7 Test Cases.md


text:
BaseSDL
=======

Basic SDL 2.0 program for testing multiplatform and cross compilation

Under OSX 10.8 use the included XCode 5.0 project.
Under Ubuntu 13.10 use Eclipse 3.8+ and add a new C++ pointing to the root directory.
Under Windows 7 use the included Visual Studio 2012 project.


text:
# rehasher

> I wrote a new asymmetric encryption algorithm, and it is truly unbreakable!
>
>Don't believe me? What if I told you I repeatedly hashed the input using SHA-256?
>
>See you in fifty million years or so when you finally bruteforced my private key! >:)
>

Apart from the message description above, we get the [Python source code](smoothiecrypt.py) to this very sophisticated encryption algorithm.

```py
import hashlib
import sys
import math

BLOCK_SIZE = 16

def encrypt(plain_text, key):
    result = bytearray()

    padding_size = math.ceil(len(plain_text) / BLOCK_SIZE) * BLOCK_SIZE
    plain_text = plain_text.ljust(padding_size, b'\0')

    for i in range(0, len(plain_text), BLOCK_SIZE):
        result.extend(encrypt_block(plain_text[i:i+BLOCK_SIZE], key))

    return result

def encrypt_block(block, key):
    a = block[0:BLOCK_SIZE // 2]
    b = block[BLOCK_SIZE // 2:BLOCK_SIZE]

    for k in key:
        c = hashlib.sha256(b + bytes([k])).digest()[0:BLOCK_SIZE // 2]
        a, b = b, bytes(x ^ y for x, y in zip(c, a))

    return b + a

if __name__ == "__main__":
    if len(sys.argv) <= 1:
        print(f"Usage {sys.argv[0]} <plain_text> <public_key>")
        sys.exit(0)

    p = bytes.fromhex(sys.argv[1])
    k = bytes.fromhex(sys.argv[2])

    encrypted = encrypt(p, k)
    print(encrypted.hex())
```

Looks intimidating, right? Well... not so fast.

## A couple of notes

Just by skimming over the source code quickly, we can deduce a few things:

1. It claims to be an asymmetric encryption algorithm, where the blocks are 16 bytes long.

2. The input message is padded with zero bytes (`\0`) if it isn't exactly the right length.

3. The input and the output are exactly the same length.

## What is *actually* going on here?

Well, in order to get an answer to that question, let's break down the `encrypt_block` function!

- At the beginning, it defines two variables; `a` and `b`.
- Afterwards, each of them is initialized with half of the current block (`a` with the first half, `b` with the second).
- And now, for every byte of the input key we
  - ... take the first 8 bytes (half of the block length) of the SHA-256 digest of `b`, plus the current byte of the key as salt, and assign it to `c`.
  - ... XOR `c` with `a` byte by byte and assign it to `b`.
  - ... assign the value of `b` to `a`.
- And finally we concatenate the two half blocks (`b + a`) and we're done.

So, what do we do now? SHA-256 cannot be reversed... right? Well no, but here? ...also no...

## The kicker

Even though SHA-256 *is* a secure hashing algorithm, the way it's used here doesn't make a big difference. Why? Well... let's think about it for a second. The XOR operation there basically gives us a backdoor. Just by reversing the key, we can break this! All we have to do is slap `[::-1]` after `bytes.fromhex(sys.argv[2])` and run it with the input given in the description of the challenge. And just like [that](solution.py), we get a hex string, which is just ASCII for `RTN{3ncrypt_b3c0m3s_D3crypT_1f_K3y_is_R3v3rs3d}`. Wonderful. (note that in my solution I perform the ASCII conversion, so you get the flag directly, rather than a hex string)

license: Unlicense

gha_language: Python

gha_license_id: Unlicense