text:
NANC
==============
Not ANSI C Compiler (pronounce: Nancy)

Nanc is a two phase project.

Phase one is to create a C compiler in Haskell that
conforms to specs in such a way that it compiles most well written C projects.

Phase two will be a fork of phase one. In it we will diverge from the C
spec in such a way as to create a 'better' dialect of C called Nancy C that is not backwards
compatible.

What Nancy C will actually look like is not really fully defined yet since
phase one is already a pretty large project.

Some ideas I hope Nancy C will have:

  - Sane namespaces (*no* insane namespaces)
  - Modules
  - No header files
  - Some sort of hygienic macro to replace preprocessor
  - Pointer asterisk on the type side
  - No dangling if/while/for body
  - Explicit switch fall-through with `continue`
  - Optional semicolons on ends of statements

Languages to take lessons from:

  - C#
  - Haskell
  - Rust
  - C++14+ (only the good parts)

Note that it is explicitly a goal for this compiler to *not* compile C++.

# Installation

You will need to have the specific version of the LLVM dev libraries installed
that is mentioned in `stack.yml`.

You will need to have Stack installed as found at: [https://www.stackage.org](Stackage)

When all dependencies are installed and this repository cloned locally, cd to
it and run `stack build`. It should run succesfully or give you instructions on
how to make it run succesfully. If it gives you any trouble please file an issue
here and I'll help you find out what's going wrong.

# Testing

Run `stack test --test-arguments --fail-fast`

To run the tests and fail at the first exception.

# FAQ

## Why?

Because C is horrible, and it's crazy that after so many years it is still the best
language for many use cases. There should be a modern language that is usable for
*every* current use case of C that has none of the weird 70's baggage that C has.

## Why Haskell?

Someone made a fully compliant C parser in Haskell already, and someone made a very
nice LLVM library for Haskell too. Writing the glue in between was almost too easy.

Also, Haskell is an excellent language for building compilers besides being an excellent
language in general.

repository: tinco/nanc

repo_name: tinco/nanc


text:
---
title: Compairing Objects, Maps, and WeakMaps for lookup tables in JavaScript
description:
  You could use an Object, but Maps are probably best for lookup tables and
  WeakMaps are useful for memory performance
tags:
  - JavaScript
pubDate: 2023-05-22T07:24-0400
verse: Matthew 8:11
---

I use lookup tables/dictionaries/hashmaps/maps a lot when I’m coding. That’s a
data structure that stores key and value pairs that are easily retrievable. Here
is an example table for storing and looking up element names by their symbol
written in Python that uses a dictionary:

```python
periodic_table["H"] = "Hydrogen"

print(periodic_table["H"])
# Hydrogen
```

In JavaScript, we have three tools for this pattern—Objects, Maps, and
WeakMaps—each with strengths and weaknesses.

## Objects

Objects are the standard data type for dictionaries. They are so flexible that
they are, in a way, the base prototype for all values in JavaScript. Entries are
added and retrieved with dot or bracket notation, and then removed with the
`delete` keyword:

```js
// Declare
let periodicTable = {};

// Set
periodicTable.H = "Hydrogen"; // dot notation
periodicTable["He"] = "Helium"; // bracket notation

// Get
periodicTable.H; // "Hydrogen"
periodicTable["He"]; // "Helium"

// Delete
periodicTable.Li = "Lithium";
delete periodicTable.Li;
```

Object are not strictly iterable, but you can use `for...in` to access its keys
or the global Object’s methods to get an iterable array: `Object.keys()`,
`Object.values()`, and `Object.entries()`.

```js
for (let key in periodicTable) {
  console.log(key, periodicTable[key]);
}
// H Hydrogen
// He Helium

Object.keys(periodicTable); // ["H", "He"]
Object.values(periodicTable); // ["Hydrogen", "Helium"]
Object.entries(periodicTable); // [["H", "Hydrogen"], ["He", "Helium"]]
```

Objects will work as a data structure for every problem you encounter. So in
some ways, it is the best of the three options for lookup tables. Some
weaknesses of Objects are:

- Prototype properties can conflict with keys in table
- Key types limited to strings, numbers, and symbols
- No guaranteed entry order

## Maps

The `Map` object was added to JavaScript in ES2015 and provides a dedicated
native solution for lookup tables. Entries are added, retrieved, and removed
with dedicated methods:

```js
// Declare
let periodicTable = new Map();

// Set
periodicTable.set("H", "Hydrogen");
periodicTable.set("He", "Helium");

// Get
periodicTable.get("H"); // "Hydrogen"
periodicTable.get("He"); // "Helium"

// Delete
periodicTable.set("Li", "Lithium");
periodicTable.delete("Li");
```

Maps are iterable so you can access all of the entries with a `for...of` loop
(similar to Arrays). They also have a `Map.forEach()` method which provides the
same data but (curiously) in the reverse order:

```js
for (let entry of periodicTable) {
  console.log(entry);
}
// ["H", "Hydrogen"]
// ["He", "Helium"]

periodicTable.forEach((value, key) => {
  console.log(key, value);
});
// H Hydrogen
// He Helium
```

Maps also have `Map.keys()` and `Map.values()` methods that return iterators for
keys and values, but the use cases for those might be rare. More common are the
`Map.has()` method which returns a boolean of whether a key exists, and
`Map.size` getter which returns the number of key/value pairs.

```js
periodicTable.has("Li"); // false
periodicTable.size; // 2
```

Some other features that would take more time to illustrate:

- Preserved entry order
- More performant than objects for frequent additions and subtractions
- Support any data structure for keys, including objects and functions (this
  makes them a good choice for implementing memoization)

It is for these methods/features that Maps really shine as data types of lookup
tables. The main weaknesses for Maps are:

- Not serializable

## WeakMaps

`WeakMaps` were added to JavaScript along with `Maps` in ES2015. A noticeable
difference between the two is that keys in `WeakMaps` must be objects. Entries
are added, retrieved, and deleted with dedicated methods:

```js
// Declare
let periodicTable = new WeakMap();

// Set
let H = { symbol: "H" };
periodicTable.set(H, "Hydrogen");

// Get
periodicTable.get(H); // "Hydrogen"

// Delete
let He = { symbol: "He" };
periodicTable.set(He, "Helium");
periodicTable.delete(He);
```

**Note**: There is nothing special about the `{ symbol: "" }` syntax here. I’m
just creating an object for each key that makes sense for the periodic-table
example. You could use any object or object-like value for the key: `{}`, `[]`,
`() => {}`

Unlike Maps, WeakMaps are not iterable and there is no way to access its size.
The only method provided is `WeakMap.has()` to receive a boolean of whether that
key exists or not:

```js
periodicTable.has("He"); // false
```

All of these differences are due to a shift in focus. WeakMaps are special in
that they weakly reference the objects used as keys. This weak reference means
that JavaScript can garbage collect those objects sooner, which will improve the
memory performance of your application.

If you have a long-living lookup table, this memory-performance feature may be
the perfect solution. Some weaknesses of WeakMaps are:

- Limited key types
- No iteration or access to keys/values list
- Not serializable

## Try it out

I created a REPL that includes all of the code examples above for you to
explore:
[replit.com/<EMAIL_ADDRESS>
## Conclusion

What is the best tool for implementing lookup tables in JavaScript? The answer
will vary depending on your specific use case, but here are some general
recommendations:

1. **`Map` is (probably) the best**: Between flexible key types, preserved
   order, easy iteration, and helpful methods, Maps have all of the features
   that you need for 90% of lookup tables that you will write in your code.
   Learning the syntax is a worthwhile investment over basic Objects.
2. **Otherwise use an `Object`**: That said, you could still implement every
   lookup table with an Object. One scenario where objects shine is for inline
   lookups:

   ```js
   function getElementName(symbol) {
     return {
       H: "Hydrogen",
       He: "Helium",
     }[symbol];
   }
   ```

3. **`WeakMap` for performance**: If you are working in a situation where memory
   performance is important, then WeakMap’s weakly referenced keys will be
   helpful. There are other programming problems where WeakMaps shine, but we’re
   looking specifically for lookup tables.

Now that you know the different tools that JavaScript offers for
dictionaries/hash maps/maps/lookup tables, you can choose the best solution in
your context.

license: MIT

branch_name: refs/heads/master

extension: md

gha_language: Astro

gha_license_id: MIT

license_type: permissive


text:
Resource Management in C++ using RAII
=====================================

Resource management is done manually in C, but can be done in C++ by using RAII, which stands for resource acquisition is initialization.

Each user-defined type or class in C++ allows us to define the behavior of its constructor and destructor.
This feature allows us to acquire resources in the constructor and release the resources in the destructor.

The advantages of RAII are:

- Resource leaks can be prevented.
- Application code is more exception safe as local resource objects are properly cleaned up in the event of a C++ exception.
- Application code can be shorter because the code to release resources manually need not be written.
- Programmers can be more productive as they need not deal with resource management in their application code.

## Resource Management Class Template

The header file `res_mgr_resource.hpp` contains a template of resource type.
It takes 4 template parameters.
The following is its declaration in the header file.
The type definition is placed under a namespace called `res_mgr`.

    template<typename T, typename S, S invalid_value, class ReleaseFuncType> class Resource;

- The first parameter is the resource type `T`.
- The second parameter is the invalid value type `S`.
- The third parameter is a value of the type represented by the second parameter.
- The fourth parameter is a function object that is used to perform the cleanup on resource type `T`.

Many resource types can be created by using the generic template.

## Member Functions

- close(): Releases the resource held by the object.
- get(): Returns the internal resource in its raw form. It can be passed to C API, but should not be released manually.
- is_valid(): Used to check whether the object holds a valid resource.
- swap(): Used to swap the internal resources between two resource objects.

## Usage

To create a resource class for C file pointer, the user-defined type is as follows.

    typedef res_mgr::Resource<FILE*, std::nullptr_t, nullptr, close_file> FileResource;

In the above example, `close_file` is a function object type. It can be written as follows.

    class close_file {
    public:
        void operator()(FILE* fp) {
            fclose(fp);
        }
    };

After the new resource type has been created, objects can be created using it.

    FileResource file;

The above code will create a resource object that holds a file pointer.
The size of a `FileResource` object is the same as that of a pointer to `FILE`.

To initialize the file resource object to hold a valid file pointer, write the following.

    FileResource file = fopen("<file path>", "rb");

Because the `operator=` is defined for the resource type `T`, the following code is valid.

    file = fopen("<file path>", "rb");

If `file` is holding a file pointer, the file pointer that it is holding will be closed first.
When the `file` object goes out of scope, its destructor will be invoked, which release the file resources it is holding.

In order to use the resource object with a C interface, the get() method can be used to obtain the raw resource, e.g.

    fread(buffer, sizeof(unsigned char), buffer_size, file.get());

## Limitations

- Programmers need to check whether the resource object holds a valid resource before using it.
- There is no prevention for manual deallocation of resources after the resource is obtained by using get(), e.g. fclose(file.get());. DO NOT do this.

## Examples

An example is now available in the `examples` folder.
The resource class is used to manage a C file pointer and a block of dynamically allocated memory.

## Compilation

A makefile for GCC is available in the `examples` folder.

On Windows, users can use Visual Studio 2015 to compile the code.

1. Create a Visual Studio solution.
2. Include the source files (*.cpp) in the `examples` folder in separate Visual Studio projects in the same solution.
3. Specify the include path that contains `res_mgr_resource.hpp` for each project.
4. Compile the project.


text:
# Labour deputy and Corbyn critic Tom Watson standing down as MP

Published at: **2019-11-06T21:08:53+00:00**

Author: **Euronews **

Original: [euronews](https://www.euronews.com/2019/11/06/labour-s-tom-watson-standing-down-as-mp)

Labour party deputy leader Tom Watson has announced he is standing down as an MP at the next election on December 12.
In a letter to Labour leader Jeremy Corbyn which was shared on his Twitter profile, Watson said that serving the party "had been the privilege of a lifetime".
He added that his decision was "personal, not political."

license: Unlicense

repository: dsadlollioygjmzvcxv/tdc-exported

repo_name: dsadlollioygjmzvcxv/tdc-exported


text:
# Restore MongoDB using PowerShell

Warning: this code is provided on a best effort basis and is not in any way officially supported or sanctioned by Cohesity. The code is intentionally kept simple to retain value as example code. The code in this repository is provided as-is and the author accepts no liability for damages resulting from its use.

This powershell script restores MongoDB databases/collections

## Download the script

Run these commands from PowerShell to download the script(s) into your current directory

```powershell
# Download Commands
$scriptName = 'restoreMongoDB'
$repoURL = 'https://raw.githubusercontent.com/bseltz-cohesity/scripts/master/powershell'
(Invoke-WebRequest -UseBasicParsing -Uri "$repoUrl/$scriptName/$scriptName.ps1").content | Out-File "$scriptName.ps1"; (Get-Content "$scriptName.ps1") | Set-Content "$scriptName.ps1"
(Invoke-WebRequest -UseBasicParsing -Uri "$repoUrl/cohesity-api/cohesity-api.ps1").content | Out-File cohesity-api.ps1; (Get-Content cohesity-api.ps1) | Set-Content cohesity-api.ps1
# End Download Commands
```

## Components

* restoreMongoDB.ps1: the main powershell script
* cohesity-api.ps1: the Cohesity REST API helper module

Place the files in a folder together and run the main script like so:

To restore a database/collection and overwrite the original:

```powershell
./restoreMongoDB.ps1 -vip mycluster `
                     -username myusername `
                     -domain mydomain.net `
                     -sourceServer mongodb1.mydomain.net:27017 `
                     -sourceObject customers.notes `
                     -overwrite `
                     -wait
```

Or to restore to an alternate MongoDB server:

```powershell
./restoreMongoDB.ps1 -vip mycluster `
                     -username myusername `
                     -domain mydomain.net `
                     -sourceServer mongodb1.mydomain.net:27017 `
                     -sourceObject customers.notes `
                     -targetServer mongodb2.mydomain.net:27017 `
                     -suffix '-restore' `
                     -wait
```

## Authentication Parameters

* -vip: (optional) name or IP of Cohesity cluster (defaults to helios.cohesity.com)
* -username: (optional) name of user to connect to Cohesity (defaults to helios)
* -domain: (optional) your AD domain (defaults to local)
* -useApiKey: (optional) use API key for authentication
* -password: (optional) will use cached password or will be prompted
* -noPrompt: (optional) do not prompt for password
* -mcm: (optional) connect through MCM
* -mfaCode: (optional) TOTP MFA code
* -emailMfaCode: (optional) send MFA code via email
* -clusterName: (optional) cluster to connect to when connecting through Helios or MCM

## Required Parameters

* -sourceServer: source server to restore from
* -sourceObject: source database/collection to restore

## Optional Parameters

* -targetServer: (optional) target server to restore to (defaults to source server)
* -recoverDate: (optional) recover from snapshot on or before this date (e.g. '2022-09-21 23:00:00')
* -streams: (optional) number of cuncurrency streams (defaul is 16)
* -suffix: (optional) suffix to apply to recovered object name (e.g. '-restore')
* -overwrite: (optional) overwrite existing object
* -wait: (optional) wait for completion and report status

repository: bseltz-cohesity/scripts

gha_language: PowerShell

repo_name: bseltz-cohesity/scripts


text:
# CAS Bootcamp Job Search Engine

## Table of Contents

- [Description](#Description)
- [Motivation](#Motivation)
- [Why We Built This](#Why-We-Built-This)
- [What We Learned](#What-We-Learned)
- [Installation](#Installation)
- [Usage](#Usage)
- [Screenshots](#Screenshots)
- [Credits](#Credits)
- [License](#License)
- [Features](#Features)
- [Contribute](#How-to-Contribute)

## Description

The CAS Job Search Engine allows Coding Bootcamp graduates to search for jobs based on the skills they have learned during Bootcamp. Users can select a desired skill from the drop-down menu and also choose whether they prefer a local Texas job or a Remote job that will allow them to work from home. When they select their criteria, they are presented with search results that match their criteria. Searches are saved to local storage for fast re-searching later.

### Motivation

Coding Bootcamp graduates are often searching for web development jobs immediately after attending BootCamp. They want a simple, fast, targeted search engine that allows them to quickly search job boards for skills they have acquired. Additionally, many want the choice of being able to work locally on-site here in Texas, or remotely (work from home) for a national or international company.

This app uses two third-party API's to retrieve job information:
1. [Adzuna API](https://developer.adzuna.com/docs/search)
2. [GitHub Jobs API](https://jobs.github.com/api)

### Why We Built This

We wanted to build a simple, quick, focused job search engine for BootCamp graduates that allows them to quickly search jobs they qualify for based on the skills they have learned at BootCamp. Additionally, as a team on our journey toward full-stack development, we used our recently acquired skills and knowledge to build this web application from scratch. We conceived, designed, and executed a web app that solves a real-world problem by integrating data received from multiple server-side API requests. We worked collaboratively using agile development methodologies to implement feature and bug fixes using the git branch workflow and pull requests.

### What We Learned

We learned a tremendous amount creating this collaborative project. We learned how to connect and display 3rd-party API's on a webpage, and how much research and "doc-diving" goes into each new 3rd-party API that we choose to implement. We also learned a brand-new CSS Framework, Materialize CSS, and also spent a LOT of time learning and working with collaborative Git branch workflow. We held twice-daily SCRUM meetings and used a Kanban board within GitHub to track our project progress and assign issues to team members. We used Agile software development practices to ensure we could come up with a working Minimum Viable Product (MVP) in just four days. We learned how to handle merge conflicts, how to work together to achieve a common goal, and how to create something amazing together as a team.

## Installation

*** PLEASE NOTE: To view this project properly, PLEASE FIRST VISIT:

[CORS Anywhere](https://cors-anywhere.herokuapp.com/corsdemo)

...and click on "Request temporary access to the demo server". (We are using a proxy server for our Minimum Viable Product.)

Then, simply visit (https://srfujii.github.io/CAS_Bootcamp_Job_Search/index.html) and choose your skill and desired location to execute your job search.

To install this project on your local machine, simply visit this repo at (https://github.com/srfujii/CAS_Bootcamp_Job_Search) and use git to clone it to your local environment.

## Usage
Users can enter in their desired Bootcamp skill and preferred location (Texas or Remote) and click the "search" button to display a list of jobs that desire that particular skill and are in the user's preferred location. Recently searched skillset-location combinations are saved to local storage for quick retrieval.

## Screenshots
Here are some screenshots for you to preview how the Job Search Engine looks and feels:

### CAS Bootcamp Job Engine UI:
![User Interface](./assets/images/01-UI.png)
![Skill Drop-down Select Box](./assets/images/02-Dropdown-Select-Skill.png)
![Sample Texas Javascript Result](./assets/images/03-Texas-JS-Result.png)
![Multiple Job Results](./assets/images/04-Mult-Results.png)
![Remote Job Result](./assets/images/05-Remote-Result.png)

## Credits

1. [Rice Technology Bootcamp](https://techbootcamps.rice.edu/)

### Resources:

1. [Geeks for Geeks: How to Remove Text from a String](https://www.geeksforgeeks.org/how-to-remove-text-from-a-string-in-javascript/)
2. [Adzuna API Documentation](https://developer.adzuna.com/docs/search)
3. [GitHub Jobs API Documentation](https://jobs.github.com/api)
4. [Materialize CSS Documentation](https://materializecss.com/)
4. [Net Ninja Web Development](https://www.youtube.com/channel/UCW5YeuERMmlnqo4oq8vwUpg)
5. [Materialize CSS Margins](https://www.codegrepper.com/code-examples/css/margin+materialize+css)

## License
[MIT License](./license.txt)

## Features

Targeted search for Coding Bootcamp Graduates based SOLEY on their desired skill and location

Drop-down select box of skills features only skills that Coding Bootcamp Graduates have

Users can select Remote or Texas based on their desired location

Search button allows user to search on their desired skill/location and saves their search to local storage

User data does not need to be sanitized because presented in drop-down select and radio button form

Repeat skill/location searches stored in local storage for fast repeat searches

Job Title, Company Name, Job Category, Date Job Created, Job Description, Job Location, and How to Apply all displayed to user in search results

Completely mobile and responsive UI

Semantic HTML implemented in HTML and CSS

ELements follow logical structure

Appropriate comments and folder structure used

All buttons and links work

Title is concise and descriptive

## How to Contribute
[![Contributor Covenant](https://img.shields.io/badge/Contributor%20Covenant-2.0-4baaaa.svg)](./code_of_conduct.md)

branch_name: refs/heads/main

gha_language: JavaScript


text:
# Coffeekraken s-countdown-component

Create a simple fully customizable countdown that support years, months, days, hours, minutes and seconds display

[![View demo](http://components.coffeekraken.io/assets/img/view-demo.png)](http://components.coffeekraken.io/app/s-countdown-component)

## Table of content

1. **[Demo](http://components.coffeekraken.io/app/s-countdown-component)**
2. [Install](#readme-install)
3. [Get Started](#readme-get-started)
4. [Digit](#readme-digit)
5. [Active class](#readme-active-class)
6. [Step classes](#readme-step-classes)
7. [Javascript API](doc/js)
8. [Sugar Web Components Documentation](https://github.com/coffeekraken/sugar/blob/master/doc/webcomponent.md)
9. [Browsers support](#readme-browsers-support)
10. [Code linting](#readme-code-linting)
11. [Contribute](#readme-contribute)
12. [Who are Coffeekraken?](#readme-who-are-coffeekraken)
13. [Licence](#readme-license)

## Install

```
npm install coffeekraken-s-countdown-component --save
```

## Get Started

First, import the component into your javascript file like so:

```js
import SCountdownComponent from 'coffeekraken-s-countdown-component'
```

Then simply use it inside your html like so:

```html
<s-countdown end-timestamp="2999999999">
  <span s-countdown-years></span> Years
  <span s-countdown-months></span> Months
  <span s-countdown-days></span> Days
  <span s-countdown-hours></span> Hours
  <span s-countdown-minutes></span> Minutes
  <span s-countdown-seconds></span> Seconds
</s-countdown>
```

## Digit

Each countdown elements like `[s-countdown-years]`, `[s-countdown-hours]`, etc... will contain his remaining digit. This digit will be wrapped inside a `span` that will have these classes:

- `.s-countdown-digit-container`: Applied on the parent element
- `.s-countdown-digit`: The main class applied during the whole life of the digit.
- `.s-countdown-digit--out`: The class applied on the digit that need to get out.

> Note that the new digit will be added **when the previous one has finished his `out` animation/transition**.

## Active class

An active class will be applied on the element itself during the countdown and removed at the end. This is useful if you want to hide the countdown when it's finished.

- `.active`: Applied on the component itself during the countdown

## Step classes

Step classes are an interesting concept. There are classes applied depending on the number of seconds remaining in the countdown. By default, these are the step classes registered:

```js
stepClasses: {
  week1: 3600 * 24 * 7,
  day1: 3600 * 24,
  hour1: 3600,
  minutes30: 60 * 30,
  minutes10: 60 * 10,
  minutes5: 60 * 5,
  minute1: 60
},
```

Thie mean that the these classes will be applied on the countdown:

- `.week1`: Applied when the countdown is less than 1 week left
- `.day1`: Applied when the countdown is less than 1 day left
- `.hour1`: Applied when the countdown is less than 1 hour left
- `.minutes30`: Applied when the countdown is less than 30 minutes left
- `.minutes10`: Applied when the countdown is less than 10 minutes left
- `.minutes5`: Applied when the countdown is less than 5 minutes left
- `.minute1`: Applied when the countdown is less than 1 minute left

You can as well configure that by setting the `props.stepClasses` property

## Browsers support

|
IE / Edge |
Firefox |
Chrome |
Safari |
| --------- | --------- | --------- | --------- |
| IE11+ | last 2 versions| last 2 versions| last 2 versions

> As browsers are automatically updated, we will keep as reference the last two versions of each but this component can work on older ones as well.

> The webcomponent API (custom elements, shadowDOM, etc...) is not supported in some older browsers like IE10, etc... In order to make them work, you will need to integrate the [corresponding polyfill](https://www.webcomponents.org/polyfills).

##  Code linting

This package uses some code linting rules. Here's the list:

1. [StandardJS](https://standardjs.com/) for javascript files
2. [Stylelint](https://github.com/stylelint/stylelint) with [stylelint-config-standard](https://github.com/stylelint/stylelint-config-standard) for `scss` files

> Your commits will not been accepted if the code style is not respected!

## Contribute

This is an open source project and will ever be! You are more that welcomed to contribute to his development and make it more awesome every day.
To do so, you have several possibilities:

1. [Share the love ❤](https://github.com/Coffeekraken/coffeekraken/blob/master/contribute.md#contribute-share-the-love)
2. [Declare issues](https://github.com/Coffeekraken/coffeekraken/blob/master/contribute.md#contribute-declare-issues)
3. [Fix issues](https://github.com/Coffeekraken/coffeekraken/blob/master/contribute.md#contribute-fix-issues)
4. [Add features](https://github.com/Coffeekraken/coffeekraken/blob/master/contribute.md#contribute-add-features)
5. [Build web component](https://github.com/Coffeekraken/coffeekraken/blob/master/contribute.md#contribute-build-web-component)

## Who are Coffeekraken

We try to be **some cool guys** that build **some cool tools** to make our (and yours hopefully) **every day life better**.

#### [More on who we are](https://github.com/Coffeekraken/coffeekraken/blob/master/who-are-we.md)

## License

The code is available under the [MIT license](LICENSE.txt). This mean that you can use, modify, or do whatever you want with it. This mean also that it is shipped to you for free, so don't be a hater and if you find some issues, etc... feel free to [contribute](https://github.com/Coffeekraken/coffeekraken/blob/master/contribute.md) instead of sharing your frustrations on social networks like an asshole...

repository: Coffeekraken/s-countdown-component

repo_name: Coffeekraken/s-countdown-component


text:
---
date: 2015-2-25
speaker: "Prof. Dr. Martin Kreuzer University of Passau, Germany"
title: "Computational Aspects of Burnside Algebras I"
time: "2:00 p.m. - 3:00 p.m."
venue: "Lecture Hall I, Department of Mathematics"
---
In this two-part talk, we reconsider Burnside algebras, a classical tool in the theory of finite groups, from a computational perspective. Using modern computer algebra systems, many of the results about these rings that were proved in the second half of the last century can be transformed into effective algorithms.

repository: siddhartha-gadgil/DeptWeb

gha_language: HTML

repo_name: siddhartha-gadgil/DeptWeb


text:
KAFKA INPUT OPERATOR
=====================

### Introduction

[Apache Kafka](http://kafka.apache.org) is a pull-based and distributed publish subscribe messaging system,
topics are partitioned and replicated across nodes.

The Kafka input operator consumes data from the partitions of a Kafka topic for processing in Apex.
The operator has the ability to automatically scale with the Kafka partitioning for high throughput.
It is fault-tolerant (consumer offset checkpointing) and guarantees idempotency to allow exactly-once results in the downstream pipeline.

For more information about the operator design see this [presentation](http://www.slideshare.net/ApacheApex/apache-apex-kafka-input-operator)
and for processing guarantees this [blog](https://www.datatorrent.com/blog/end-to-end-exactly-once-with-apache-apex/).

There are two separate implementations of the input operator,
one built against Kafka 0.8 client and a newer version for the
Kafka 0.9 consumer API that also works with MapR Streams.
These reside in different packages and are described separately below.

### Kafka Input Operator for Kafka 0.8.x

Package: `com.datatorrent.contrib.kafka`

Maven artifact: [malhar-contrib](https://mvnrepository.com/artifact/org.apache.apex/malhar-contrib)

### AbstractKafkaInputOperator

This is the abstract implementation that serves as base class for consuming messages from Kafka messaging system. This class doesn’t have any ports.

![AbstractKafkaInput.png](images/kafkainput/image00.png)

#### Configuration Parameters

<col width="25%" />
<col width="75%" />

Parameter

Description

maxTuplesPerWindow

Controls the maximum number of messages emitted in each streaming window from this operator. Minimum value is 1. Default value = MAX_VALUE

idempotentStorageManager

This is an instance of IdempotentStorageManager. Idempotency ensures that the operator will process the same set of messages in a window before and after a failure. For example, let's say the operator completed window 10 and failed somewhere between window 11. If the operator gets restored at window 10 then it will process the same messages again in window 10 which it did in the previous run before the failure. Idempotency is important but comes with higher cost because at the end of each window the operator needs to persist some state with respect to that window. Default Value = com.datatorrent.lib.io.IdempotentStorageManager.
NoopIdempotentStorageManager

strategy

Operator supports two types of partitioning strategies, ONE_TO_ONE and ONE_TO_MANY.

ONE_TO_ONE: If this is enabled, the AppMaster creates one input operator instance per Kafka topic partition. So the number of Kafka topic partitions equals the number of operator instances.

ONE_TO_MANY: The AppMaster creates K = min(initialPartitionCount, N) Kafka input operator instances where N is the number of Kafka topic partitions. If K is less than N, the remaining topic partitions are assigned to the K operator instances in round-robin fashion. If K is less than initialPartitionCount, the AppMaster creates one input operator instance per Kafka topic partition. For example, if initialPartitionCount = 5 and number of Kafka partitions(N) = 2 then AppMaster creates 2 Kafka input operator instances.
Default Value = ONE_TO_ONE

msgRateUpperBound

Maximum messages upper bound. Operator repartitions when the *msgProcessedPS* exceeds this bound. *msgProcessedPS* is the average number of messages processed per second by this operator.

byteRateUpperBound

Maximum bytes upper bound. Operator repartitions when the *bytesPS* exceeds this bound. *bytesPS* is the average number of bytes processed per second by this operator.

offsetManager

This is an optional parameter that is useful when the application restarts or start at specific offsets (offsets are explained below)

repartitionInterval

Interval specified in milliseconds. This value specifies the minimum time required between two repartition actions. Default Value = 30 Seconds

repartitionCheckInterval

Interval specified in milliseconds. This value specifies the minimum interval between two offset updates. Default Value = 5 Seconds

initialPartitionCount

When the ONE_TO_MANY partition strategy is enabled, this value indicates the number of Kafka input operator instances. Default Value = 1

consumer

This is an instance of com.datatorrent.contrib.kafka.KafkaConsumer. Default Value = Instance of SimpleKafkaConsumer.

#### Abstract Methods

`void emitTuple(Message message)`: Abstract method that emits tuples extracted from Kafka message.

### KafkaConsumer

This is an abstract implementation of Kafka consumer. It sends the fetch
requests to the leading brokers of Kafka partitions. For each request,
it receives the set of messages and stores them into the buffer which is
ArrayBlockingQueue. SimpleKafkaConsumer which extends
KafkaConsumer and serves the functionality of Simple Consumer API and
HighLevelKafkaConsumer which extends KafkaConsumer and  serves the
functionality of High Level Consumer API.

### Pre-requisites

This operator uses the Kafka <IP_ADDRESS> client consumer API
and will work with 0.8.x and 0.7.x versions of Kafka broker.

#### Configuration Parameters

<col width="15%" />
<col width="15%" />
<col width="15%" />
<col width="55%" />

Parameter

Type

Default

Description

zookeeper

String

Specifies the zookeeper quorum of Kafka clusters that you want to consume messages from. zookeeper  is a string in the form of hostname1:port1,hostname2:port2,hostname3:port3  where hostname1,hostname2,hostname3 are hosts and port1,port2,port3 are ports of zookeeper server.  If the topic name is the same across the Kafka clusters and want to consume data from these clusters, then configure the zookeeper as follows: c1::hs1:p1,hs2:p2,hs3:p3;c2::hs4:p4,hs5:p5,c3::hs6:p6

where

c1,c2,c3 indicates the cluster names, hs1,hs2,hs3,hs4,hs5,hs6 are zookeeper hosts and p1,p2,p3,p4,p5,p6 are corresponding ports. Here, cluster name is optional in case of single cluster

cacheSize

int

1024

Maximum of buffered messages hold in memory.

topic

String

default_topic

Indicates the name of the topic.

initialOffset

String

latest

Indicates the type of offset i.e, “earliest or latest”. If initialOffset is “latest”, then the operator consumes messages from latest point of Kafka queue. If initialOffset is “earliest”, then the operator consumes messages starting from message queue. This can be overridden by OffsetManager.

#### Abstract Methods

1.   void commitOffset(): Commit the offsets at checkpoint.
2.  Map <KafkaPartition, Long> getCurrentOffsets(): Return the current
    offset status.
3.  resetPartitionsAndOffset(Set <KafkaPartition> partitionIds,
    Map <KafkaPartition, Long> startOffset): Reset the partitions with
    parittionIds and offsets with startOffset.

#### Configuration Parameters for SimpleKafkaConsumer

<col width="25%" />
<col width="15%" />
<col width="15%" />
<col width="45%" />

Parameter

Type

Default

Description

bufferSize

int

1 MB

Specifies the maximum total size of messages for each fetch request.

metadataRefreshInterval

int

30 Seconds

Interval in between refresh the metadata change(broker change) in milliseconds. Enabling metadata refresh guarantees an automatic reconnect when a new broker is elected as the host. A value of -1 disables this feature.

metadataRefreshRetryLimit

int

-1

Specifies the maximum brokers' metadata refresh retry limit. -1 means unlimited retry.

### OffsetManager

This is an interface for offset management and is useful when consuming data
from specified offsets. Updates the offsets for all the Kafka partitions
periodically. Below is the code snippet:

```java
public interface OffsetManager
{
  public Map<KafkaPartition, Long> loadInitialOffsets();
  public void updateOffsets(Map<KafkaPartition, Long> offsetsOfPartitions);
}
```
#### Abstract Methods

`Map <KafkaPartition, Long> loadInitialOffsets()`: Specifies the initial offset for consuming messages; called at the activation stage.

`updateOffsets(Map<KafkaPartition, Long> offsetsOfPartitions)`:  This
method is called at every repartitionCheckInterval to update offsets.

### Partitioning

The logical instance of the KafkaInputOperator acts as the Partitioner
as well as a StatsListener. This is because the
AbstractKafkaInputOperator implements both the
com.datatorrent.api.Partitioner and com.datatorrent.api.StatsListener
interfaces and provides an implementation of definePartitions(...) and
processStats(...) which makes it auto-scalable.

#### Response processStats(BatchedOperatorStats stats)

The application master invokes this method on the logical instance with
the stats (tuplesProcessedPS, bytesPS, etc.) of each partition.
Re-partitioning happens based on whether any new Kafka partitions added for
the topic or bytesPS and msgPS cross their respective upper bounds.

#### DefinePartitions

Based on the repartitionRequired field of the Response object which is
returned by processStats(...) method, the application master invokes
definePartitions(...) on the logical instance which is also the
partitioner instance. Dynamic partition can be disabled by setting the
parameter repartitionInterval value to a negative value.

### AbstractSinglePortKafkaInputOperator

This class extends AbstractKafkaInputOperator to emit messages through single output port.

#### Ports

`outputPort <T>`: Tuples extracted from Kafka messages are emitted through this port.

#### Abstract Methods

`T getTuple(Message msg)`: Converts the Kafka message to tuple.

### Concrete Classes

1. KafkaSinglePortStringInputOperator: extends `AbstractSinglePortKafkaInputOperator`, extracts string from Kafka message.
2. KafkaSinglePortByteArrayInputOperator: extends `AbstractSinglePortKafkaInputOperator`, extracts byte array from Kafka message.

### Application Example

This section builds an Apex application using Kafka input operator.
Below is the code snippet:

```java
@ApplicationAnnotation(name = "KafkaApp")
public class ExampleKafkaApplication implements StreamingApplication
{
  @Override
  public void populateDAG(DAG dag, Configuration entries)
  {
    KafkaSinglePortByteArrayInputOperator input =  dag.addOperator("MessageReader", new KafkaSinglePortByteArrayInputOperator());
    ConsoleOutputOperator output = dag.addOperator("Output", new ConsoleOutputOperator());
    dag.addStream("MessageData", input.outputPort, output.input);
  }
}
```
Below is the configuration for “test” Kafka topic name and
“localhost:2181” is the zookeeper forum:

```xml
<property>
  <name>dt.operator.MessageReader.prop.topic</name>
  <value>test</value>
</property>

<property>
  <name>dt.operator.KafkaInputOperator.prop.zookeeper</nam>
  <value>localhost:2181</value>
</property>
```

### Kafka Input Operator for Kafka 0.9.x

Package: `org.apache.apex.malhar.kafka`

Maven Artifact: [malhar-kafka](https://mvnrepository.com/artifact/org.apache.apex/malhar-kafka)

This version uses the new 0.9 version of consumer API and works with Kafka broker version 0.9 and later.
The operator is fault-tolerant, scalable and supports input from multiple clusters and multiple topics in a single operator instance.

#### Pre-requisites

This operator requires version 0.9.0 or later of the Kafka Consumer API.

### AbstractKafkaInputOperator

#### Ports
----------

This abstract class doesn't have any ports.

#### Configuration properties
----------------------------

-   ***clusters*** - String[]
    -   Mandatory Parameter.
    -   Specifies the Kafka clusters that you want to consume messages from. To configure multi-cluster support, you need to specify the clusters separated by ";".

-   ***topics*** - String[]
    -   Mandatory Parameter.
    -   Specified the Kafka topics that you want to consume messages from. If you want multi-topic support, then specify the topics separated by ",".

-   ***strategy*** - PartitionStrategy
    -   Operator supports two types of partitioning strategies, `ONE_TO_ONE` and `ONE_TO_MANY`.

        `ONE_TO_ONE`: If this is enabled, the AppMaster creates one input operator instance per Kafka topic partition. So the number of Kafka topic partitions equals the number of operator instances.
        `ONE_TO_MANY`: The AppMaster creates K = min(initialPartitionCount, N) Kafka input operator instances where N is the number of Kafka topic partitions. If K is less than N, the remaining topic partitions are assigned to the K operator instances in round-robin fashion. If K is less than initialPartitionCount, the AppMaster creates one input operator instance per Kafka topic partition. For example, if initialPartitionCount = 5 and number of Kafka partitions(N) = 2 then AppMaster creates 2 Kafka input operator instances.
        Default Value = `PartitionStrategy.ONE_TO_ONE`.

-   ***initialPartitionCount*** - Integer
    -   When the ONE_TO_MANY partition strategy is enabled, this value indicates the number of Kafka input operator instances.
        Default Value = 1.

-   ***repartitionInterval*** - Long
    -   Interval specified in milliseconds. This value specifies the minimum time required between two repartition actions.
        Default Value = 30 Seconds.

-   ***repartitionCheckInterval*** - Long
    -   Interval specified in milliseconds. This value specifies the minimum interval between two stat checks.
        Default Value = 5 Seconds.

-   ***maxTuplesPerWindow*** - Integer
    -   Controls the maximum number of messages emitted in each streaming window from this operator. Minimum value is 1.
        Default value = `MAX_VALUE`

-   ***initialOffset*** - InitialOffset
    -   Indicates the type of offset i.e, `EARLIEST` or `LATEST` or `APPLICATION_OR_EARLIEST` or `APPLICATION_OR_LATEST`.
        `LATEST` => Consume new messages from latest offset in the topic.
        `EARLIEST` => Consume all messages available in the topic.
        `APPLICATION_OR_EARLIEST` => Consume messages from committed position from last run. If there is no committed offset, then start consuming from beginning.
        `APPLICATION_OR_LATEST` => Consumes messages from committed position from last run. If a committed offset is unavailable, then start consuming from latest position.
        Default value = `InitialOffset.APPLICATION_OR_LATEST`

-   ***metricsRefreshInterval*** - Long
    -   Interval specified in milliseconds. This value specifies the minimum interval between two metric stat updates.
        Default value = 5 Seconds.

-   ***consumerTimeout*** - Long
    -   Indicates the [time waiting in poll](http://kafka.apache.org/090/javadoc/org/apache/kafka/clients/consumer/KafkaConsumer.html#poll) when data is not available.
        Default value = 5 Seconds.

-   ***holdingBufferSize*** - Long
    -   Indicates the maximum number of messages kept in memory for emitting.
        Default value = 1024.

-   ***consumerProps*** - Properties
    -   Specify the [consumer properties[(http://kafka.apache.org/090/documentation.html#newconsumerconfigs) which are not yet set to the operator.

-   ***windowDataManager*** - WindowDataManager
    -   If set to a value other than the default, such as `FSWindowDataManager`, specifies that the operator will process the same set of messages in a window before and after a failure. This is important but it comes with higher cost because at the end of each window the operator needs to persist some state with respect to that window.
        Default value = `WindowDataManager.NoopWindowDataManager`.

#### Abstract Methods

`void emitTuple(String cluster, ConsumerRecord<byte[], byte[]> message)`: Abstract method that emits tuples
extracted from Kafka message.

### Concrete Classes

#### KafkaSinglePortInputOperator
This class extends from AbstractKafkaInputOperator and defines the `getTuple()` method which extracts byte array from Kafka message.

#### Ports
`outputPort <byte[]>`: Tuples extracted from Kafka messages are emitted through this port.

### Application Example
This section builds an Apex application using Kafka input operator.
Below is the code snippet:

```java
@ApplicationAnnotation(name = "KafkaApp")
public class ExampleKafkaApplication implements StreamingApplication
{
  @Override
  public void populateDAG(DAG dag, Configuration entries)
  {
    KafkaSinglePortInputOperator input =  dag.addOperator("MessageReader", new KafkaSinglePortInputOperator());
    ConsoleOutputOperator output = dag.addOperator("Output", new ConsoleOutputOperator());
    dag.addStream("MessageData", input.outputPort, output.input);
  }
}
```
Below is the configuration for topic “test” and broker “localhost:9092”:

```xml
<property>
  <name>apex.operator.MessageReader.prop.topics</name>
  <value>test</value>
</property>

<property>
  <name>apex.operator.KafkaInputOperator.prop.clusters</name>
  <value>localhost:9092</value>
</property>
```

Multiple topics can be specified as a comma-separated list; similarly, multiple clusters can be specified as a semicolon-separated list; for example:

```xml
<property>
  <name>apex.operator.MessageReader.prop.topics</name>
  <value>test1, test2</value>
</property>

<property>
  <name>apex.operator.KafkaInputOperator.prop.clusters</nam>
  <value>localhost:9092; localhost:9093; localhost:9094</value>
</property>
```

A full example application project can be found [here](https://github.com/apache/apex-malhar/tree/master/examples/kafka).

### Security

Kafka from 0.9.x onwards supports [Authentication, Encryption and Authorization](https://kafka.apache.org/090/documentation.html#security_overview).

See [here](http://apache-apex-users-list.78494.x6.nabble.com/kafka-td1089.html) for more information.

gha_language: Java


text:
# Endpoints

Endpoint is representation of a unique url (like a `/api/v1/users`) and one or multiple operations (HTTP methods)

In our case endpoint is implemented as a [controller](#controllers) method.

## Controllers

Create base controller with root path to your api

- controller must implement `Apitte\Core\UI\Controller\IController`

```php
namespace App\Api\V1\Controllers;

use Apitte\Core\Annotation\Controller\Path;
use Apitte\Core\UI\Controller\IController;

/**
 * @Path("/api/v1")
 */
abstract class BaseV1Controller implements IController
{
}
```

Create an endpoint

- Controller must have annotation `@Path()` and be registered as service
- Method must have annotations `@Path()` and `@Method()`

```yaml
services:
    - App\Api\V1\Controllers\UsersController
```

```php
namespace App\Api\V1\Controllers;

use Apitte\Core\Annotation\Controller\Method;
use Apitte\Core\Annotation\Controller\Path;
use Apitte\Core\Http\ApiRequest;
use Apitte\Core\Http\ApiResponse;
use Nette\Utils\Json;

/**
 * @Path("/users")
 */
class UsersController extends BaseV1Controller
{

    /**
     * @Path("/")
     * @Method("GET")
     */
    public function index(ApiRequest $request, ApiResponse $response): ApiResponse
    {
        // This is an endpoint
        //  - its path is /api/v1/users/
        //  - it should be available on address example.com/api/v1/users/

        $response = $response->writeBody(Json::encode([
            [
                'id' => 1,
                'firstName' => 'John',
                'lastName' => 'Doe',
                'emailAddress' =><EMAIL_ADDRESS>            ],
            [
                'id' => 2,
                'firstName' => 'Elon',
                'lastName' => 'Musk',
                'emailAddress' =><EMAIL_ADDRESS>            ],
        ]));

        return $response;
    }

}
```

**Tip** Use the `@Path("/")` annotation on a Controller and its method to target the homepage, e.q. `example.com/`.

### List of annotations / attributes

> You can use seamless PHP 8 attributes.

`@Id`
  - Must consist only of following characters: `a-z`, `A-Z`, `0-9`, `_`
  - Not used by Apitte for anything, it may just help you identify, group, etc. your endpoints

`@Path`
  - See example controllers above
  - Must consist only of following characters: `a-z`, `A-Z`, `0-9`, `-_/`
  - The `@Path` annotation can be used on:
    - abstract controller to define a group path for multiple controllers (e.g. `example.com/v1/...`)
    - final controller to define a path for that particular controller (e.g. `example.com/v1/users`)
    - method to define a path for a specific endpoint
  - This hierarchy is then used to build the schema and make routing possible.

`@Method`
  - Allowed HTTP method for endpoint
  - GET, POST, PUT, OPTION, DELETE, HEAD
  - `@Method("GET")`
  - `@Method({"POST", "PUT"})`
  - Defined on method

`@Tag`
  - Used by [OpenApi](schema.md#openapi)
  - Could by also used by your custom logic
  - `@Tag(name="name")`
  - `@Tag(name="string", value="string|null")`
  - Defined on class and method

Mapping
  - Validate and map data from request and map data to response
  - `@RequestParameter`, `@RequestParameters`
  - `@RequestBody`
  - See [mapping](mapping.md) chapter for more info.

Negotiations
  - Response transformations
  - `@Negotiation`, `@Negotiations`
  - See [negotiation](negotiation.md) chapter for details.

### Automatic controllers registration

It's boring to register each controller one by one as a service. You can make your life easier and use [contributte/di](https://github.com/contributte/di) and let register all controllers themself.

```sh
composer require contributte/di
```

Configure resource extension and profit.

```yaml
extensions:
    # This must be first extension!
    resource: Contributte\DI\Extension\ResourceExtension
    api: Apitte\Core\DI\ApiExtension

resource:
    resources:
        App\Api\V1\Controllers\:
            # where the classes are located
            paths: [%appDir%/Api/V1/Controllers]
```

repository: contributte/apitte

gha_language: PHP

repo_name: contributte/apitte


text:
# SPs ITB Citation Style Language (CSL) Guide

[**English guide**](./) - [**Indonesian translation**](./id)

Sekolah Pascasarjana (SPs) ITB provides a Citation Style Language (CSL) which can be used in supported reference manager software, to format references and bibliography in conformance with [SPs ITB guidelines for master's thesis and doctoral dissertation](http://www.sps.itb.ac.id/in/pedoman-tesis-dan-disertasi/).

SPS ITB provides tutorial to use the CSL with the following software:

* [Microsoft Word 2010/2013/2016](https://products.office.com/en/word) and [Zotero](https://www.zotero.org/), for Windows and macOS

As CSL is an open and widely supported format, it is also usable in other software, e.g. [LibreOffice](http://libreoffice.org), [Mendeley](https://mendeley.com/), and Linux-based operating systems like [Ubuntu](https://ubuntu.com/) and [Linux Mint](https://linuxmint.com/). Please refer to your reference manager's documentation on how to use this CSL in your preferred software, or you can [contribute to this documentation by submitting a GitHub pull request](https://github.com/itb-sps/csl).

## Preparation

1. Make sure you have installed **Microsoft Office 2010/2013/2016**.

2. Download and install **Zotero** from [https://www.zotero.org/](www.zotero.org)

3. Run Zotero.

4. Sign-up or login to your Zotero account so you can save and sync all your references easily.

5. Ensure you can see Zotero in Microsoft Word's Zotero ribbon tab.

   ![Zotero MS Word Plugin](zotero-ms-word-plugin-windows.jpg)

6. Install **Institut Teknologi Bandung - Sekolah Pascasarjana** style, as follows:

   a. In Zotero, click **Edit > Preferences...**

   b. Click **Get additional styles...**.

      ![Zotero](zotero-styles.jpg)

   c. Search for "**institut teknologi bandung**"

      ![Zotero](zotero-install-style.jpg)

   d. Click **Institut Teknologi Bandung - Sekolah Pascasarjana**

   e. Click **OK**.

7. Congratulations! Now you are ready to collect documents, insert citations, and insert a bibliography in your documents.

## Collect Documents

Before you can insert a citation, you need to collect documents first in Zotero. Although there are many ways to collect documents, this guide will describe the most common ones:

1. By adding a paper's PDF file

2. Using the Browser Connector add-on (recommended)

3. Adding manually (as a last resort)

### Collect Documents from PDF files

If you already have PDF files of the papers you want to add, simply drag-and-drop PDF files to the Zotero app.

Alternatively, you can also click **Add > Store Copy of File...**

![Zotero](zotero-ref-file.jpg)

### Collect Documents using the Browser Connector add-on (recommended)

The Browser Connector add-on is the most convenient way to add documents, it will even download the PDF file for you if available.

1. [Install Zotero Browser Connector](https://www.zotero.org/download/) for your favorite browser.

   ![Zotero](zotero-browser-connector.jpg)

2. After the Browser Connector add-on is installed, login to your [Zotero.org](https://www.zotero.org/) account.

3. Visit Google Search, IEEE Xplore, or your favorite journal/proceeding web site. When you want to import the document(s) that you are viewing, click the **Save to Zotero** button in your browser.

   ![Zotero](zotero-browser-connector2.jpg)

   Click **Save**.

4. After you have finished importing documents from the web: Open **Zotero app**, click **Sync with zotero.org** button so that you can immediately use these documents.

   Your imported documents will show up in **Zotero app** after sync is complete.

   ![Zotero](zotero-sync.jpg)

### Collect Documents Manually

Sometimes the quick and easy methods do not work, or you just want to add documents manually.

1. In Zotero app, click **Add > (document type)**. Commonly used types are **Conference Proceeding** and **Journal Article**.

   ![Zotero](zotero-manual.jpg)

2. In the **Info pane**, enter the document details.

   ![Zotero](zotero-manual2.jpg)

Refer to the later section **Document Types and Supported Fields** for more information on how to choose document type and fill these fields correctly.

## Inserting Citations

1. Create a Word document for your thesis or dissertation, using the [template provided by SPs ITB](http://www.sps.itb.ac.id/in/pedoman-tesis-dan-disertasi/).

2. In **Zotero** ribbon tab, click **Document Preferences**.

   a. In **Citation Style**, choose **Institut Teknologi Bandung - Sekolah Pascasarjana**.
   b. In **Language**, select **Bahasa Indonesia** or **English** based on the language of your thesis/dissertation. Click **OK**.

3. In the place where you want to put the citation, click **Zotero > Add/Edit Citation**.

   Type the keywords of your document (author, title, year, etc.) then double-click it or press Enter.

## Inserting Bibliography

In the place where you want to put the bibliography, click **Zotero > Add/Edit Bibliography**.

The bibliography will be inserted using syntax according to SPs ITB guidelines.

**Important:** you will still need to ensure correct formatting according to [Pedoman Tesis dan Disertasi SPs ITB](http://www.sps.itb.ac.id/in/pedoman-tesis-dan-disertasi/), because the following are not controlled by CSL:

* font and font size to Times New Roman, size 12 points
* paragraph justification to _justified_

## More about Zotero

Zotero has **a lot** of useful features. This tutorial only covers the basic usage.

Check out [Zotero Documentation](https://www.zotero.org/support/) for more information.

## Document Types and Supported Fields

Zotero will automatically try to fill the document details, but there are cases when this information is not accurate. You can edit or correct this using the **Info pane**.

![Zotero](zotero-manual2.jpg)

Below you will find all document types and fields supported by this CSL, and how to use them.

### 1. Book

| Field      | Required? | Example                         |
|------------|-----------|---------------------------------|
| Title      | Required  | Principles of measurement system |
| Author(s)  | Required  | Bentley, John P.                |
| Editor(s)  | Must be empty  |                                 |
| Date       | Required  | 1995                            |
| Place      | Required  | New York, NY                    |
| Publisher  | Required  | John Wiley & Sons               |
| # of Pages | Optional  |                                 |
| Edition    | Optional  | 3rd                             |
| Volume     | Optional  |                                 |

Example bibliography:

Bentley, J. P. (1995): _Principles of measurement system_ (3rd ed.), John Wiley & Sons, New York, NY.

### 2. Book Section

| Field      | Required? | Example                         |
|------------|-----------|---------------------------------|
| Title      | Required  | Validation of instrument measuring continuous variable in medicine |
| Author(s)  | Required  | Zaki, Rafdzah                   |
| Editor(s)  | Required  | Hokimoto, Tsukasa               |
| Book Title | Required  | Advances in statistical methodologies and their application to real problems |
| Date       | Required  | 2017                            |
| Place      | Required  | London                          |
| Publisher  | Required  | IntechOpen                      |
| Pages      | Required  | 217-237                         |
| Edition    | Optional  |                                 |
| Volume     | Optional  |                                 |

Example bibliography:

Zaki, R. (2017): Validation of instrument measuring continuous variable in medicine, 217–237 _dalam_ T. Hokimoto, ed., _Advances in statistical methodologies and their application to real problems_, IntechOpen, London.

### 3. E-book (item type: Book)

| Field      | Required? | Example                         |
|------------|-----------|---------------------------------|
| Title      | Required  | Medical instrumentation: application and design |
| Author(s)  | Required  | Webster, John G.                |
| Editor(s)  | Optional  |                                 |
| Date       | Required  | 2009                            |
| URL        | Required  | https://books.google.co.id/     |
| Place      | Optional  |                                 |
| Publisher  | Optional  |                                 |
| # of Pages | Optional  |                                 |
| Edition    | Optional  | 4th                             |
| Volume     | Optional  |                                 |

Example bibliography:

Webster, J. G. (2009): _Medical instrumentation: application and design_ (4th ed.), diperoleh melalui situs internet: https://books.google.co.id/.

### 4. Journal Article

| Field       | Required?   | Example                         |
|-------------|-------------|---------------------------------|
| Title       | Required    | Scanning X-ray microscopy with large solid angle X-ray fluorescence detection at the XUV beamline P04, DESY |
| Author(s)   | Required    | Andrianov, K.                   |
|             |             | Haidl, A.                       |
|             |             | Lühl, L.                        |
|             |             | Dehlinger, A.                   |
|             |             | Dierks, H.                      |
|             |             | Gnewkow, R.                     |
|             |             | Nisius, T.                      |
|             |             | Kanngießer, B.                  |
|             |             | Wilhein, T.                     |
| Publication | Required    | Journal of Instrumentation      |
| Volume      | Optional    | 13                              |
| Issue       | Optional    |                                 |
| Pages       | Optional    |                                 |
| Date        | Required    | 2008                            |
| DOI         | Recommended | 10.1088/1742-6596/849/1/012007  |
| URL         | Optional    | http://iopscience.iop.org/1742-6596/849/1/012007/ |

Example bibliography:

Andrianov, K., Haidl, A., Lühl, L., Dehlinger, A., Dierks, H., Gnewkow, R., Nisius, T., Kanngießer, B., dan Wilhein, T. (2018): Scanning X-ray microscopy with large solid angle X-ray fluorescence detection at the XUV beamline P04, DESY, _Journal of Instrumentation_, **13**. https://doi.org/10.1088/1742-6596/849/1/012007

### 4. Conference Paper

| Field       | Required?   | Example                         |
|-------------|-------------|---------------------------------|
| Title       | Required    | Review of computer assisted diagnosis to analyze the MRI (Magnetic Resource Image) and detect Alzheimer disease |
| Author(s)   | Required    | Rabeh, Amira Ben                |
|             |             | Benzarti, Faouzi                |
|             |             | Amiri, Hamid                    |
| Proceedings Title | Required    | 2017 14th International Conference on Computer Graphics, Imaging and Visualization      |
| Publisher   | Required    | IEEE                            |
| Volume      | Optional    |                                 |
| Pages       | Optional    | 117-121                         |
| Date        | Required    | 2017-05                         |
| DOI         | Recommended | 10.1109/CGiV.2017.21            |
| URL         | Optional    | https://ieeexplore.ieee.org/document/8361554/ |

Example bibliography:

Rabeh, A. B., Benzarti, F., dan Amiri, H. (2017): Review of computer assisted diagnosis to analyze the MRI (Magnetic Resource Image) and detect Alzheimer disease, _2017 14th International Conference on Computer Graphics, Imaging and Visualization_, IEEE, 117–121. https://doi.org/10.1109/CGiV.2017.21

### 5. Webpage

Note: To use this item type, create with Document item type, then change _Item Type_ to menjadi Webpage.

| Field       | Required?   | Example                         |
|-------------|-------------|---------------------------------|
| Title       | Required    | Ultrasonic detection – basics & application |
| Author(s)   | Required    | Agarwal, Tarun                  |
| Date        | Required    | 2015                            |
| URL         | Required    | https://www.elprocus.com/ultrasonic-detection-basics-application/ |

Example bibliography:

Agarwal, T. (2015): Ultrasonic detection – basics & application, diperoleh melalui situs internet: https://www.elprocus.com/ultrasonic-detection-basics-application/.

### 6. Patent

| Field             | Required?   | Example                          |
|-------------------|-------------|----------------------------------|
| Patent Number     | Required    | U.S. Patent No. 6,606,963        |
| Title             | Optional    |                                  |
| Inventor(s)       | Required    | Wynne, B. M.                     |
| Place             | Required    | Washington, DC                   |
| Issuing Authority | Required    | U.S. Patent and Trademark Office |
| Issue Date        | Required    | 2003                             |
| URL               | Optional    | https://patents.google.com/patent/US6606963B1/en |

Example bibliography:

Wynne, B. M. (2003): _U.S. Patent No. 6,606,963_, U.S. Patent and Trademark Office, Washington, DC.

### 7. Thesis (including Dissertation)

| Field             | Required?   | Example                          |
|-------------------|-------------|----------------------------------|
| Title             | Required    | Analisis citra radiografi panoramik pada condilus mandibula untuk deteksi dini osteoporosis |
| Author(s)         | Required    | Mayantasari, Menasita            |
| Place             | Optional    |                                  |
| Type              | Optional    | Disertasi Program Doktor         |
| University        | Required    | Institut Teknologi Bandung       |
| Date              | Required    | 2011                             |
| URL               | Optional    |                                  |

Example bibliography:

Mayantasari, M. (2011): _Analisis citra radiografi panoramik pada condilus mandibula untuk deteksi dini osteoporosis_, Disertasi Program Doktor, Institut Teknologi Bandung.

### 8. Report

| Field             | Required?   | Example                          |
|-------------------|-------------|----------------------------------|
| Title             | Required    | Kajian potensi mineral ikutan pada pertambangan timah   |
| Author(s)         | Required    | Pusat Data dan Teknologi Informasi Sumber Daya Energi dan Mineral Kementerian Energi dan Sumber Daya Mineral |
| Date              | Required    | 2017                             |
| Place             | Optional    |                                  |
| Institution       | Optional    |                                  |
| Pages             | Optional    |                                  |
| URL               | Optional    |                                  |

### 9. Standard (item type: Report)

| Field             | Required?   | Example                          |
|-------------------|-------------|----------------------------------|
| Title             | Required    | Recommended practice for analysis, design, installation, and testing of basic surface safety systems for offshore production platforms |
| Author(s)         | Optional    | American Petroleum Institute     |
| Report Number     | Optional    | API RP 14C                       |
| Place             | Optional    | Washington                       |
| Institution       | Required    | API Publishing Service           |
| Date              | Required    | 2001                             |
| URL               | Optional    |                                  |

Example bibliography:

American Petroleum Institute (2001): _Recommended practice for analysis, design, installation, and testing of basic surface safety systems for offshore production platforms_ (API RP 14C), API Publishing Service, Washington.

### 10. Magazine Article

| Field             | Required?   | Example                          |
|-------------------|-------------|----------------------------------|
| Title             | Required    | Pembakaran hutan di Kalimantan   |
| Author(s)         | Required    | Baker, A. A.                     |
|                   |             | Sosro, K.                        |
|                   |             | Suditomo, B.                     |
| Publication       | Required    | Majalah Kehutanan                |
| Volume            | Optional    | 5                                |
| Issue             | Optional    | 5                                |
| Date              | Required    | 1998-05                          |
| Pages             | Optional    | 23-25                            |
| URL               | Optional    |                                  |

Example bibliography:

Baker, A. A., Sosro, K., dan Suditomo, B. (Mei 1998): Pembakaran hutan di Kalimantan, _Majalah Kehutanan_, **5**, 23–25.

### 11. Newspaper Article

| Field             | Required?   | Example                          |
|-------------------|-------------|----------------------------------|
| Title             | Required    | Demokrasi di era otonomi daerah  |
| Author(s)         | Optional    | Ij, Piliang                      |
| Publication       | Required    | Kompas                           |
| Date              | Required    | 2010-06                          |
| Pages             | Optional    | 6                                |
| URL               | Optional    |                                  |

Example bibliography:

* Ij, P. (10 Juni 2010): Demokrasi di era otonomi daerah, _Kompas_, hal. 6.
* Pengelolaan diusulkan satu lembaga. (16 Oktober 2015): _Kompas_, hal. 14.

### 12. Radio Broadcast and TV Broadcast

| Field       | Required?   | Example                         |
|-------------|-------------|---------------------------------|
| Title       | Required    | Arkangel                        |
| Director(s) | Required    | Foster, J.                     |
| Program Title | Required    | Black Mirror       |
| Episode Number | Optional    |                            |
| Place       | Required    | United Kingdom                  |
| Network     | Required    | Netflix                         |
| Date        | Required    | 2016                            |
| URL         | Optional    |                                 |

Example bibliography:

Foster, J. (Sutradara). (2016): Arkangel _dalam_ Black Mirror, Netflix, United Kingdom.

This CSL does not yet support Scriptwriter and Producer fields. If you need to add them, please type manually in the bibliography.

### 13. Internet Movie Clip (item type: Film)

| Field       | Required?   | Example                         |
|-------------|-------------|---------------------------------|
| Title       | Required    | Matchalatte                     |
| Director(s) | Required    | Maychaelson, R.                 |
| Date        | Required    | 2018                            |
| URL         | Required    | https://www.youtube.com/watch?v=Mb8aeRuAJZw |

Example bibliography:

Maychaelson, R. (Sutradara).  (2018): _Matchalatte_, diperoleh melalui situs internet: https://www.youtube.com/watch?v=Mb8aeRuAJZw.

This CSL does not yet support Scriptwriter and Producer fields. If you need to add them, please type manually in the bibliography.

### 14. Film

| Field       | Required?   | Example                         |
|-------------|-------------|---------------------------------|
| Title       | Required    | Kartini                         |
| Director(s) | Required    | Bramantyo, Hanung               |
| Distributor | Required    | Legacy Picture dan Screenplay Films, Indonesia |
| Date        | Required    | 2017                            |
| URL         | Required    | https://www.youtube.com/watch?v=Mb8aeRuAJZw |

Example bibliography:

Bramantyo, H. (Sutradara). (2017): _Kartini_, Legacy Picture dan Screenplay Films, Indonesia.

This CSL does not yet support Scriptwriter and Producer fields. If you need to add them, please type manually in the bibliography.

### 15. Artwork (i.e. photo, from book, magazine, or website)

| Field       | Required?   | Example                         |
|-------------|-------------|---------------------------------|
| Title       | Required    | The eyes have it                |
| Author(s)   | Required    | Krivic, M.                      |
| Date        | Required    | 2018                            |
| Archive     | Required    | National Geographic, Timbuktu   |
| URL         | Optional    |                                 |

Example bibliography:

Krivic, M. (2018): _The eyes have it_, National Geographic, Timbuktu.

### 16. Letter / E-mail (personal communication)

| Field       | Required?   | Example                         |
|-------------|-------------|---------------------------------|
| Author(s)   | Required    | Wibowo, H.                      |
| Date        | Required    | 2018-05-22                      |
| Title / Subject | Optional    |                  |

Example bibliography:

Wibowo, H. (22 Mei 2018): Personal communication.

## Feedback

If you have feedback and suggestions about this CSL and/or its documentation, please [post an issue here](https://github.com/itb-sps/csl/issues) or email [hendy@hendyirawan.com](mailto:hendy@hendyirawan.com).

repository: Icaaan/csl

repo_name: Icaaan/csl


text:
## BarCodeExplorer
#### [Download as zip](https://grapecity.github.io/DownGit/#/home?url=https://github.com/GrapeCity/ComponentOne-WinForms-Samples/tree/master/Next\BarCode\CS\BarCodeExplorer)
____
#### This sample demonstrates how to use the BarCode control.
____
The sample shows how to:

* Create various barcode variants and edit their properties.
* Resize barcode.
* Bind Barcode properties to a data source in SQLite database.
* Export data to HTML document.
* Generating multipart QR codes for long values.

The sample "Overview" creates varios type of barcodes: popular, Qr, all.
The sample "DataBinding" connects to the SQLite database and gets data from the Customer table.
The sample "Dividing" demonstrates creating multipart QR code for the long value.

repository: KaptenJon/ComponentOne-WinForms-Samples

repo_name: KaptenJon/ComponentOne-WinForms-Samples


text:
---
title: Red Hat Integration and BPM week
author: hbraun
layout: post
permalink: /2012/09/red-hat-integration-and-bpm-week/
dsq_thread_id:
  - 842591037
categories:
  - BPM
---
Check out he Red Hat Integration and BPM Week virtual event – October 15-18, 2012.

In addition to overviews on how Red Hat will integrate technologies from FuseSource and Polymita into the JBoss middleware portfolio, this virtual event will deliver 16 sessions on the latest lightweight integration framework and BPM technologies. Learn directly from the project leads how to fully leverage these technologies.

Sessions include:
* Fuse IDE makes integration easy – James Strachan (formerly FuseSource)
* Getting Started with Apache Camel – Claus Ibsen (formerly FuseSource)
* Enterprise integration at scale – Keith Babo
* Business rules and event modeling made easy – Edson Tirelli
* Simplify the complexity of your business processes – Kris Verlaenen
* ActiveMQ in the cloud – Dejan Bosanac
* Fuse Fabric and Fuse Management Console – Stan Lewis (formerly FuseSource)

The virtual event is FREE. Sessions will be delivered live, and will also be available on-demand afterwards. One registration gets you access to everything!

For more information on the agenda and sessions, please go to: [http://www.redhat.com/promo/jboss\_integration\_week][1]

 [1]: http://www.redhat.com/promo/jboss_integration_week


text:
# Changelog

All notable changes to this project will be documented in this file.

The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [0.6.4] - 2021-10-16

### Fixed

- Fixed issue where encoding large MP3s could potentially fail

## [0.6.3] - 2020-11-11

### Fixed

- Fixed issue where OGG encoding took ~10x too long

## [0.6.2] - 2020-11-09

### Added

- Untranspiled JS is now available via `wasm-media-encoders/esnext`

### Fixed

- The `browser` and UMD entries are now correctly transformed with Babel to support [all browsers that support WASM](https://caniuse.com/wasm). `@babel/runtime` is now a dependency for the `browser` entry.

## [0.6.1] - 2020-11-05

### Changed

- Browsers will now use `WebAssembly.instantiateStreaming()` for data URIs as well (if available).

### Removed

- `fetch()`ing from non-data URL in Node

## [0.6.0] - 2020-11-04

### Added

- Can now supply a callback to `createEncoder()` to get the compiled `WebAssembly.Module`
- Support for ESM modules in Node

### Changed

- Reduced JS size by about 40%
- Reduced LAME WASM size by about 4%
- Reduced OGG WASM size by about 3%

### Fixed

- Fixed an issue where encoding large buffers would return a detached `ArrayBuffer`.
- Bundling with webpack v4 no longer pulls in a `Buffer` polyfill.


text:
---
title: "Selenium 1.0.3 Released"
linkTitle: "Selenium 1.0.3 Released"
date: 2010-02-24
tags: ["selenium","selenium-rc"]
categories: ["releases"]
author: Patrick Lightbody ([@plightbo](https://twitter.com/plightbo))
description: >
  Hot off the heals of 1.0.2, we’re releasing Selenium Remote Control 1.0.3!
---

Hot off the heals of [1.0.2](/blog/2010/selenium-1.0.2-released-firefox-3.6-and-snow-leopard-support/),
we’re releasing Selenium Remote Control 1.0.3. You can [download it now](http://selenium.googlecode.com/files/selenium-remote-control-1.0.3.zip).

There is no functional difference between this version and 1.0.2, other than it is packaged up a little nicer and we’ve clarified the relationship between selenium-server and the client drivers. That is: we are **not** releasing new client drivers with future 1.x releases. The reason is that we locked down the API in version 1.0.1 and so there is no need to push out the same code each time. As such, when you download 1.0.3, you’ll see all the client drivers are labeled version 1.0.1, which is expected.

This release also is zipped up in a way that is compatible with all operating systems. The 1.0.2 release had some reported issues on Windows that have been fixed.

Finally, we also had many requests from [Maven](http://maven.apache.org/) users. While we no longer use Maven to build Selenium, we are including pom releases for both the standalone server (ie: selenium-server.jar) and the “coreless” server (ie: selenium-server-coreless.jar). We hope they will be in the central repository shortly.

branch_name: refs/heads/trunk


text:
### [CVE-2019-18283](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-18283)
![](https://img.shields.io/static/v1?label=Product&message=SPPA-T3000%20Application%20Server&color=blue)
![](https://img.shields.io/static/v1?label=Version&message=n%2Fa&color=blue)
![](https://img.shields.io/static/v1?label=Vulnerability&message=CWE-502%3A%20Deserialization%20of%20Untrusted%20Data&color=brighgreen)

### Description

A vulnerability has been identified in SPPA-T3000 Application Server (All versions < Service Pack R8.2 SP2). The AdminService is available without authentication on the Application Server. An attacker can gain remote code execution by sending specifically crafted objects to one of its functions. Please note that an attacker needs to have access to the Application Highway in order to exploit this vulnerability. At the time of advisory publication no public exploitation of this security vulnerability was known.

### POC

#### Reference
- http://packetstormsecurity.com/files/155665/Siemens-Security-Advisory-SPPA-T3000-Code-Execution.html

#### Github
No PoCs found on GitHub currently.

repository: trickest/cve

repo_name: trickest/cve


text:
VolDiff: Malware Memory Footprint Analysis
==========================================

VolDiff is a Python script that leverages the [Volatility](https://github.com/volatilityfoundation/volatility) framework to identify malware threats on Windows 7 memory images.

VolDiff can be used to run a collection of Volatility plugins against memory images captured before and after malware execution. It creates a report that highlights system changes based on memory (RAM) analysis.

VolDiff can also be used against a single Windows memory image to automate Volatility plugin execution, and hunt for malicious patterns.

Installation and use directions
--------------------------------
Please refer to the VolDiff [home wiki](https://github.com/aim4r/VolDiff/wiki) for details.

Sample report
--------------
See [this wiki page](https://github.com/aim4r/VolDiff/wiki/Memory-Analysis-of-DarkComet-using-VolDiff) for a sample VolDiff analysis of a system infected with the [DarkComet](https://en.wikipedia.org/wiki/DarkComet) RAT.

Inspiration
------------
This work was initially inspired by Andrew Case ([@attrc](https://twitter.com/attrc)) talk on [analyzing the sophisticated Careto malware sample with memory forensics] (http://2014.video.sector.ca/video/110388398 "analyzing the sophisticated Careto malware sample with memory forensics"). Kudos to [@attrc](https://twitter.com/attrc) and all the [Volatility development team](https://github.com/aim4r/VolDiff/wiki#credits) for creating and maintaining the greatest memory forensic framework out there!

gha_language: Python


text:
## 0.0.5

### Feature

- Add template partial
  - A partial is a template whose name starts by “_”. It won't be rendered directly (so it doesn't need meta like “prismic-api”) but is included in other
templates using the helper `partial`. (`[%- partial('footer') %]` will include
the partial “_footer.html.erb”)
- Add helper to change ref
- Add OAuth2 authentication
- Use [EJS](https://github.com/visionmedia/ejs) for template rendering
  - Its HTML escaping and filters are available

### Incompatible changes

- Because EJS is now used, every template returning HTML have to be fixed
(by replacing `[%= ... %]` by `[%- ... %]`) in order to stop escaping the HTML
twice.

## 0.0.4

### Feature

- The dynamic mode is now based on the HTTP server
  - custom routes are honored in this mode too
  - `url_to` now accepts global paths (“`/index`” for instance)
- It is now possible to specify an `access_token` and a `ref` in the queryString

### Incompatible changes

- Split tasks “`gulp`” and “`gulp serve`”
- ⚠ Remove the generate.js file
  - Run `gulp --src <src> --dst <dst>` instead

## Fixes

- Non-template HTML files are now copied correctly
- Supports query parameter names using camelcase

## 0.0.3

### Feature

- Add HTTP server to serve generated file
  - the generation is automatically performed when content is modified

### Incompatible changes

- Replace Grunt by Gulp
- ⚠ baked.js can now be runned using `node generate.js <src> <dst>` or `gulp`
  - the old way (`node src/server.js <src> <dst>`) is not working anymore
- remove `.html` from generated files

### Fix

- Fix query escape pattern (`$$` was not escaping)
- baked: Queries can now refer to bookmarks


text:
[![Open in Streamlit](https://static.streamlit.io/badges/streamlit_badge_black_white.svg)](https://share.streamlit.io/polm/fugashi-streamlit-demo/main/demo.py)
[![Current PyPI packages](https://badge.fury.io/py/fugashi.svg)](https://pypi.org/project/fugashi/)
![Test Status](https://github.com/polm/fugashi/workflows/test-manylinux/badge.svg)
[![PyPI - Downloads](https://img.shields.io/pypi/dm/fugashi)](https://pypi.org/project/fugashi/)
![Supported Platforms](https://img.shields.io/badge/platforms-linux%20macosx%20windows-blue)

# fugashi

<img src="https://github.com/polm/fugashi/raw/master/fugashi.png" width=125 height=125 alt="fugashi by Irasutoya" />

fugashi is a Cython wrapper for [MeCab](https://taku910.github.io/mecab/), a
Japanese tokenizer and morphological analysis tool.  Wheels are provided for
Linux, OSX (Intel), and Win64, and UniDic is [easy to install](#installing-a-dictionary).

**issueを英語で書く必要はありません。**

Check out the [interactive demo][], see the [blog post](https://www.dampfkraft.com/nlp/fugashi.html) for background
on why fugashi exists and some of the design decisions, or see [this
guide][guide] for a basic introduction to Japanese tokenization.

[guide]: https://www.dampfkraft.com/nlp/how-to-tokenize-japanese.html
[interactive demo]: https://share.streamlit.io/polm/fugashi-streamlit-demo/main/demo.py

If you are on a platform for which wheels are not provided, you'll need to
install MeCab first. It's recommended you install [from
source](https://github.com/taku910/mecab). If you need to build from source on
Windows, [@chezou's fork](https://github.com/chezou/mecab) is recommended; see
[issue #44](https://github.com/polm/fugashi/issues/44#issuecomment-954426115)
for an explanation of the problems with the official repo.

Known platforms without wheels:

- musl-based distros like alpine [#77](https://github.com/polm/fugashi/issues/77)
- PowerPC
- Windows 32bit

## Usage

```python
from fugashi import Tagger

tagger = Tagger('-Owakati')
text = "麩菓子は、麩を主材料とした日本の菓子。"
tagger.parse(text)
# => '麩 菓子 は 、 麩 を 主材 料 と し た 日本 の 菓子 。'
for word in tagger(text):
    print(word, word.feature.lemma, word.pos, sep='\t')
    # "feature" is the Unidic feature data as a named tuple
```

## Installing a Dictionary

fugashi requires a dictionary. [UniDic](https://unidic.ninjal.ac.jp/) is
recommended, and two easy-to-install versions are provided.

  - [unidic-lite](https://github.com/polm/unidic-lite), a slightly modified version 2.1.2 of Unidic (from 2013) that's relatively small
  - [unidic](https://github.com/polm/unidic-py), the latest UniDic 3.1.0, which is 770MB on disk and requires a separate download step

If you just want to make sure things work you can start with `unidic-lite`, but
for more serious processing `unidic` is recommended. For production use you'll
generally want to generate your own dictionary too; for details see the [MeCab
documentation](https://taku910.github.io/mecab/learn.html).

To get either of these dictionaries, you can install them directly using `pip`
or do the below:

```sh
pip install fugashi[unidic-lite]

# The full version of UniDic requires a separate download step
pip install fugashi[unidic]
python -m unidic download
```

For more information on the different MeCab dictionaries available, see [this article](https://www.dampfkraft.com/nlp/japanese-tokenizer-dictionaries.html).

## Dictionary Use

fugashi is written with the assumption you'll use Unidic to process Japanese,
but it supports arbitrary dictionaries.

If you're using a dictionary besides Unidic you can use the GenericTagger like this:

```python
from fugashi import GenericTagger
tagger = GenericTagger()

# parse can be used as normal
tagger.parse('something')
# features from the dictionary can be accessed by field numbers
for word in tagger(text):
    print(word.surface, word.feature[0])
```

You can also create a dictionary wrapper to get feature information as a named tuple.

```python
from fugashi import GenericTagger, create_feature_wrapper
CustomFeatures = create_feature_wrapper('CustomFeatures', 'alpha beta gamma')
tagger = GenericTagger(wrapper=CustomFeatures)
for word in tagger.parseToNodeList(text):
    print(word.surface, word.feature.alpha)
```

## Citation

If you use fugashi in research, it would be appreciated if you cite this paper. You can read it at [the ACL Anthology](https://www.aclweb.org/anthology/2020.nlposs-1.7/) or [on Arxiv](https://arxiv.org/abs/2010.06858).

    @inproceedings{mccann-2020-fugashi,
        title = "fugashi, a Tool for Tokenizing {J}apanese in Python",
        author = "McCann, Paul",
        booktitle = "Proceedings of Second Workshop for NLP Open Source Software (NLP-OSS)",
        month = nov,
        year = "2020",
        address = "Online",
        publisher = "Association for Computational Linguistics",
        url = "https://www.aclweb.org/anthology/2020.nlposs-1.7",
        pages = "44--51",
        abstract = "Recent years have seen an increase in the number of large-scale multilingual NLP projects. However, even in such projects, languages with special processing requirements are often excluded. One such language is Japanese. Japanese is written without spaces, tokenization is non-trivial, and while high quality open source tokenizers exist they can be hard to use and lack English documentation. This paper introduces fugashi, a MeCab wrapper for Python, and gives an introduction to tokenizing Japanese.",
    }

## Alternatives

If you have a problem with fugashi feel free to open an issue. However, there
are some cases where it might be better to use a different library.

- If you don't want to deal with installing MeCab at all, try [SudachiPy](https://github.com/WorksApplications/sudachi.rs).
- If you need to work with Korean, try [pymecab-ko](https://github.com/NoUnique/pymecab-ko) or [KoNLPy](https://konlpy.org/en/latest/).

## License and Copyright Notice

fugashi is released under the terms of the [MIT license](./LICENSE). Please
copy it far and wide.

fugashi is a wrapper for MeCab, and fugashi wheels include MeCab binaries.
MeCab is copyrighted free software by Taku Kudo<EMAIL_ADDRESS>and Nippon
Telegraph and Telephone Corporation, and is redistributed under the [BSD
License](./LICENSE.mecab).

repository: polm/fugashi

repo_name: polm/fugashi


text:
# ecs289h-2019-p1

As a presentation 1 of [ECS289H 2019 Fall: Immersive Visualization](https://web.cs.ucdavis.edu/~ma/ECS289H/).

# References

- Yang, Y., Dwyer, T., Jenny, B., Marriott, K., Cordeil, M., & Chen, H. (2018). Origin-destination flow maps in immersive environments. IEEE transactions on visualization and computer graphics, 25(1), 693-703.
- Google. (n.d.). Google Maps. Retrieved from https://www.google.com/maps/@38.5347497,-121.7543652,15z (Accessed: 11/14/2019)
- Huang, Z., Wu, X., Garcia, A. J., Fik, T. J., & Tatem, A. J. (2013). An open-access modeled passenger flow matrix for the global air network in 2010. PloS one, 8(5), e64317.


text:
# arduino_1602_jump_game
A simple jumping game for Arduino and 16x2 LCD display.

Instructions:
- connect the LCD via I2C and set the pins on the line `LiquidCrystal_I2C lcd(0x27, 16, 2);`
- connect a button to a digital pin and set the pin number on the line `#define BUTTON_PIN 50`
- compile, upload and play


text:
The contents of this directory can be used to install the HTTP File Upload as a
Linux _systemd_ service. This ensures that the proxy is automatically restarted on
system reboot.

To see if your system supports systemd, check for the existence of the directory
`/lib/systemd`

To install the service:

- Modify the fileupload.service file according to the TODO comments inside.
- Copy the file to `/etc/systemd/system`
- Enable the service to start at boot time by running

        sudo systemctl enable fileupload.service

To uninstall the service

1. Run

        sudo systemctl stop fileupload.service
        sudo systemctl disable fileupload.service

2. remove the file you copied to `/etc/systemd/system/fileupload.service`

To start the service manually use

    sudo systemctl start fileupload.service

_This procedure was tested on Ubuntu 17.04_

repository: cqse/fileupload-service

repo_name: cqse/fileupload-service


text:
This should be a good starting point when you want to create a Sublime Text 2/3 plugin with the help of [node.js](http://nodejs.org/).

This is mostly a stripped down version of [sublime-specificity](https://github.com/keeganstreet/sublime-specificity). Thanks [keeganstreet](https://github.com/keeganstreet/).

## Install & run

Clone this repo to your package folder (usually `/Users/<username>/Library/Application Support/Sublime Text 2/Packages`).

Then open the console in Sublime Text and hit

```
view.run_command("node_bridge")
```

## License

MIT

repository: aronwoost/sublime-plugin-node-bridge

repo_name: aronwoost/sublime-plugin-node-bridge


text:
---
layout: default
---

# 1996-04-14 - Re: No matter where you go, there they are.

## Header Data

From: Adam Shostack<EMAIL_ADDRESS>To<EMAIL_ADDRESS>Message Hash: d653ecaf21747e41c482fcc72ab4344774e18ac9eafc51782720dc3a62e077bb

Message ID<EMAIL_ADDRESS>Reply To<EMAIL_ADDRESS>UTC Datetime: 1996-04-14 01:50:50 UTC

Raw Date: Sun, 14 Apr 1996 09:50:50 +0800

## Raw message

```
{% raw  %}From: Adam Shostack<EMAIL_ADDRESS>Date: Sun, 14 Apr 1996 09:50:50 +0800
To<EMAIL_ADDRESS>Subject: Re: No matter where you go, there they are.
In-Reply-To<EMAIL_ADDRESS>Message-ID<EMAIL_ADDRESS>MIME-Version: 1.0
Content-Type: text

Perry E. Metzger wrote:

| Adam Shostack writes:
| > 	Snow Crash is a book about a future in which governments are
| > ineffective.  Companies run things, and have complete local control.
| > The world has gone to hell, and as a result, life is nasty, poor,
| > brutish and short.  Many people do not look forward to this world.
|
| Snow Crash is hardly scary. You have characterized it as a
| story where life is nasty brutish and short but that isn't the same
| book that I read. at all.

	The CIA privatized & selling data to all comers?  An
unstoppable wave of illegal immigration coming to California?  Sounds
pretty scary to many people.  There are other readings, but that one
is there.

| In any case, however, the future is pretty much not stoppable. There
| was a time where the nobility tried to stop the crossbow, and then
| firearms; there have been those who tried to stop the translation of
| the bible, and to stop factories, and to stop genetic
| engineering. Ideas aren't amenable to restraint. Nothing is as
| inevitable as an idea who's time has come. The key to a liveable
| future is learning how to adapt to the changes, not how to try to
| prevent them.

	I said as much.  I'm not purporting this as my opinions, just
my understanding of Dr. Denning.

Adam

--
"It is seldom that liberty of any kind is lost all at once."
					               -Hume

{% endraw %}
```

## Thread

+ Return to [April 1996](/archive/1996/04)

+ Return to "[Adam Shostack <adam@lighthouse.homeport.org>](/authors/adam_shostack_adam_at_lighthouse_homeport_org_)"
+ Return to "[Alex Strasheim <cp@proust.suba.com>](/authors/alex_strasheim_cp_at_proust_suba_com_)"
+ Return to<EMAIL_ADDRESS>(Jim McCoy)](/authors/mccoy_at_communities_com_jim_mccoy_)"
+ Return to "["Perry E. Metzger" <perry@piermont.com>](/authors/perry_e_metzger_perry_at_piermont_com_)"

+ 1996-04-11 (Fri, 12 Apr 1996 02:32:04 +0800) - [Re: No matter where you go, there they are.](/archive/1996/04/600aa27f3fd89e91432e6574f41a29445ffb7d65657e67db338c9ab363a7e1e9) -<EMAIL_ADDRESS>(Jim McCoy)_
  + 1996-04-12 (Sat, 13 Apr 1996 02:46:39 +0800) - [Re: No matter where you go, there they are.](/archive/1996/04/8e1ad8efb2b4b6aee613788c91c968ec59a7f964daa7fb5c1f2ac530ee6fedd1) - _Adam Shostack<EMAIL_ADDRESS>    + 1996-04-12 (Sat, 13 Apr 1996 07:27:17 +0800) - [Re: No matter where you go, there they are.](/archive/1996/04/90ae2dc5735a3b0504b6f08f611f51b3bf320342908a610e5e7f54cfb047c771) - _Alex Strasheim<EMAIL_ADDRESS>      + 1996-04-14 (Sun, 14 Apr 1996 10:36:42 +0800) - [Re: No matter where you go, there they are.](/archive/1996/04/a9c980e1f0ea0b0f092924d1b6c5ee41bcf2e6ef46bb134979d29bcd6a116771) - _Adam Shostack<EMAIL_ADDRESS>    + 1996-04-13 (Sun, 14 Apr 1996 06:06:44 +0800) - [Re: No matter where you go, there they are.](/archive/1996/04/e59b669f4cc975f1c01143412aeabac832f2021421a902cb0e9a437757653ec6) - _"Perry E. Metzger"<EMAIL_ADDRESS>      + 1996-04-14 (Sun, 14 Apr 1996 09:50:50 +0800) - Re: No matter where you go, there they are. - _Adam Shostack<EMAIL_ADDRESS>        + 1996-04-14 (Sun, 14 Apr 1996 10:23:40 +0800) - [Re: No matter where you go, there they are.](/archive/1996/04/fc0ef61bbf5a3267b0f7f6e274cc68d381a83d5338c9b7ea2bf4d341271c4a72) - _"Perry E. Metzger"<EMAIL_ADDRESS>          + 1996-04-15 (Mon, 15 Apr 1996 13:05:41 +0800) - [Hobsian interpretations of Snow Crash ( was No matter where you go...)](/archive/1996/04/56e36914469a5a3cb76197db1d67733c2672550b6bd9ef593646d9faa757e6e8) - _Adam Shostack<EMAIL_ADDRESS>


text:
# scalaz-reactive

[![Gitter](https://badges.gitter.im/scalaz/scalaz-reactive.svg)](https://gitter.im/scalaz/scalaz-reactive?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)

# Goal

A high-performance, purely-functional library for reactive programming based on efficient incremental computation.

# Introduction

This library aims at faithfully implementing Functional Reactive Programming as defined in [2].
The term _Reactive proramming_
is often used to describe composing streams of discrete events and and handling them with callbacks (by subscribing). That is
different from Functional reactive programming (FRP). FRP is about composing dynamic values changing in continuous time,
and reacting to discrete events.

# Core concepts

`Behavior` - data changing with time. Time is continous, some discretization will occur when consumed at specific moments in time.
Example: the amount of water flowing out of a bucket with a constant rate will be `L = max(W0 - r * t, 0)`
`Event` - stream of (time, event) pairs. Example: Add one liter of water at moment `t`.
Signals may switched by events (e.g adding water will change the signal to `L = max(W0 + X - r * t, 0)`
`Reactive values` change in time and are composed from signals and events going through a signal network.

# Background

* _Functional Reactive Programming_ by Stephen Blackheath and Anthony Jones, Manning Publications
* Push-Pull Functional Reactive Programming [paper](http://conal.net/papers/push-pull-frp/) by Conal Elliot
* Haskell [Functional Reactive Programming](https://wiki.haskell.org/FRP)
* [Overview](https://www.slant.co/topics/2349/~functional-reactive-programming-frp-libraries-for-haskell) of Haskell FRP libraries
* [frp-zoo](https://github.com/gelisam/frp-zoo): Several implementation of a simple program with different FRP libraries
* [Controlling time and space: understanding the many formulations of FRP](https://www.youtube.com/watch?v=Agu6jipKfYw) presentation based on ELM


text:
Any appearance of the name
"President Trump" triggers the 1994 SOUNDGARDEN hit song "Black Hole Sun" to
play in its entirety*.
 Tremendous things. Big league.

But, where hides the face and lies the snake, there is sun in our disgrace;
we’ve included a link to [donate to the
ACLU](https://action.aclu.org/secure/donate-to-aclu.)\*\*.   And you can help.

\* We don’t claim copyright to "Black Hole Sun" and are in no way affiliated
  with SOUNDGARDEN (please don’t be mad at us).

\*\* We are also in no way affiliated with the ACLU.

## Authors

**Andrew Jimenez**
+ [jimenez.andrew<EMAIL_ADDRESS>+ [@o0oo00o0o](https://twitter.com/o0oo00o0o)

**Josh Blum**
+ [jblum18<EMAIL_ADDRESS>+ [@blumua](https://twitter.com/blumua)

repository: joshblum/black-hole-trump

repo_name: joshblum/black-hole-trump