text:
---
layout: splash
read_time: false
comments: true
share: true
author_profile: false
title:

Selected Talks
permalink: /talks/
header:
  overlay_color: "#000"
  overlay_filter: "0.5"
  overlay_image: /assets/images/trinity.jpg
  caption: "Photo: [Olly McMillan](https://www.youtube.com/watch?v=kQkZeXHfgwA&t=1s)"

feature_row_cvpr21:
  - image_path: /assets/images/cvpr_2021_wad_alex_kendall.jpg
    alt: "Alex Kendall, Wayve, Workshop on Autonomous Driving, CVPR 2021"
    title: 'CVPR Workshop on Autonomous Driving, June 2021.'
    excerpt: "Keynote talk."
    btn_label: "Recorded Talk (youtube)"
    btn_class: "btn--inverse"
    url: "https://youtu.be/Va-F4qtTQ6g"
    btn_class2: "btn--inverse"
    btn_label2: "Workshop (website)"
    url2: "http://cvpr2021.wad.vision/"

feature_row_cvpr20:
  - image_path: /media/presentations/cvpr2020_alex_kendall.jpg
    alt: "Alex Kendall, End-to-End Deep Learning for Autonomous Driving, CVPR 2020"
    title: 'Keynote at CVPR Workshop, Seattle (Virtually), USA, June 2020.'
    excerpt: "Workshop on Scalability in Autonomous Driving, co-organised by Waymo and Oxford's VGG."
    btn_label: "Recorded Talk (youtube)"
    btn_class: "btn--inverse"
    url: "https://youtu.be/rfXQH3CyL4Q"
    btn_class2: "btn--inverse"
    btn_label2: "Workshop (website)"
    url2: "https://sites.google.com/view/cvpr20-scalability"

feature_row_icvss19:
  - image_path: /assets/images/icvss_2019.jpg
    alt: "Alex Kendall, Deep Learning for Scene Understanding, ICVSS, Sicily, 2019"
    title: 'Lecture on Deep Learning for Scene Understanding and Mobile Robotics'
    excerpt: '

The International Computer Vision Summer School, Sicily, July 2019

'
    btn_label: "Presentation (.pdf)"
    btn_class: "btn--inverse"
    url: "/media/presentations/2019_icvss_sicily_kendall.pdf"
    btn_class2: "btn--inverse"
    btn_label2: "Presentation (.pptx, 2.5gb!)"
    url2: "https://drive.google.com/open?id=1hBnHdbuHAu827VlFcgOliJZWeItRUlLc"

feature_row_cvpr19:
  - image_path: /media/presentations/kendall_cvpr_2019.jpg
    alt: "Alex Kendall, Representation Learning for Autonomous Driving, CVPR 2019"
    title: 'Keynotes at CVPR Workshops, Long Beach, USA, June 2019.'
    excerpt: '

Workshop on Autonomous Driving

Safe Artificial Intelligence for Autonomous Driving

Uncertainty and Robustness in Deep Visual Learning

'
    btn_label: "Autonomous Driving (.pdf)"
    btn_class: "btn--inverse"
    url: "/media/presentations/kendall_autonomous_driving_workshop_cvpr_2019.pdf"
    btn_class2: "btn--inverse"
    btn_label2: "Uncertainty & Robustness (.pdf)"
    url2: "/media/presentations/kendall_uncertainty_workshop_cvpr_2019.pdf"
    btn_class3: "btn--inverse"
    btn_label3: "Uncertainty & Robustness (.pptx, 2gb!)"
    url3: "https://drive.google.com/open?id=1gFm-b4yaNQWDmneoYsXrED3Wu4o9kG9k"

feature_row_cogx:
  - image_path: /media/presentations/kendall_cogx_2019.jpg
    alt: "Alex Kendall, Machine Learning to Drive, CogX, June 2019"
    title: 'Machine Learning to Drive'
    excerpt: '

CogX Keynote, The Festival of AI and Emerging Technology, London, June 2019

'
    url: "https://youtu.be/YY0tFJa9GoA?t=874"
    btn_label: "Video (YouTube)"
    btn_class: "btn--inverse"
    btn_class2: "btn--inverse"
    btn_label2: "Presentation (.pdf)"
    url2: "/media/presentations/cogx_kendall_2019.pdf"

feature_row_websummit:
  - image_path: /media/presentations/websummit.jpg
    alt: "Alex Kendall: WebSummit PITCH"
    title: 'WebSummit PITCH Competition Final'
    excerpt: 'The "greatest startup competition in the world", WebSummit PITCH Final, Lisbon, Portugal, November 2018'
    url: "https://youtu.be/sn-_29bknz8?t=548"
    btn_label: "Video (YouTube)"
    btn_class: "btn--inverse"

feature_row_trinity:
  - image_path: /assets/images/presentations/alex_google.jpg
    alt: "Alex Kendall: Trinity College Fellows' Research Talk"
    title: 'Teaching Robots to See with Computer Vision?'
    excerpt: "

Trinity College Fellows' Research Talk, May 2018

"
    url: "https://www.youtube.com/watch?v=NdlKvVe7Vy4"
    btn_label: "Video (YouTube)"
    btn_class: "btn--inverse"

feature_row_mllondon:
  - image_path: /assets/images/presentations/london_ml_meetup.png
    alt: "Alex Kendall: Is recognition enough to learn how to see? London Machine Learning Meetup"
    title: 'Is recognition enough to learn how to see?'
    excerpt: '

London Machine Learning Meetup, January 2018

'
    url: "/media/presentations/london_ml_meetup.pdf"
    btn_label: "Presentation (.pdf)"
    btn_class: "btn--inverse"

feature_row_lsvpr:
  - image_path: /assets/images/presentations/localisation.png
    alt: "Alex Kendall: Large-Scale Visual Place Recognition and Image-Based Localization, CVPR Tutorial"
    title: 'Learning-based	Visual	Localization'
    excerpt: '

Large-Scale Visual Place Recognition and Image-Based Localization, CVPR Tutorial, Hawaii, 2017

'
    btn_class: "btn--inverse"
    btn_label: "Presentation (.pdf)"
    url: "/media/presentations/lsvpr_2017_cvpr_tutorial_alex_kendall.pdf"
    btn_class2: "btn--inverse"
    btn_label2: "Tutorial Website"
    url2: "https://sites.google.com/view/lsvpr2017/home"

feature_row_geo_unc:
  - image_path: /assets/images/presentations/geo_unc.jpg
    alt: "Alex Kendall: Geometry and Uncertainty in Deep Learning for Computer Vision"
    title: 'Geometry and Uncertainty in Deep Learning for Computer Vision'
    excerpt: '

Imperial College, July 3rd 2017, London, UK.

Oxford University, March 20th 2017, Oxford, UK.

Bristol University, March 21st 2017, Bristol, UK.

'
    btn_class: "btn--inverse"
    btn_label: "Presentation (.pdf)"
    url: "/media/presentations/oxford_seminar.pdf"

feature_row_cucl:
  - image_path: /assets/images/presentations/learning_to_see.jpg
    alt: "Alex Kendall: Learning to See"
    title: 'Learning to see'
    excerpt: '

Cambridge University Computer Lab, May 26th 2016, Cambridge, UK.

Google [X], 2nd May 2016, Mountain View, USA.

British Machine Vision Association, "Computer Vision for Automotive Applications – The Road Ahead", April 13th 2016, London, UK.

'

feature_row_tti:
  - image_path: /assets/images/tti_presentation.jpg
    alt: "Alex Kendall: TTI/ Vanguard, 'Networks, Sensors, & Mobility'"
    title: 'TTI/ Vanguard, "Networks, Sensors, & Mobility"'
    excerpt: '3rd May 2016, San Francisco, USA.'
    url: "https://www.youtube.com/watch?v=hyEPnLb5abU"
    btn_label: "Video (YouTube)"
    btn_class: "btn--inverse"

feature_row_perse:
  - image_path: /assets/images/presentations/stephen_perse.png
    alt: "Alex Kendall: Stephen Perse Foundation, 'Computer Vision: Making Machines See'"
    title: 'Computer Vision: Making Machines See'
    excerpt: 'Stephen Perse Foundation, 4th Feb 2016, Cambridge, UK.'
    url: "/media/presentations/perse_computer_vision_making_machines_see.pdf"
    btn_label: "Presentation (.pdf)"
    btn_class: "btn--inverse"

---

{% include feature_row id="feature_row_cvpr21" type="left" %}
{% include feature_row id="feature_row_cvpr20" type="left" %}
{% include feature_row id="feature_row_icvss19" type="left" %}
{% include feature_row id="feature_row_cvpr19" type="left" %}
{% include feature_row id="feature_row_cogx" type="left" %}
{% include feature_row id="feature_row_websummit" type="left" %}
{% include feature_row id="feature_row_trinity" type="left" %}
{% include feature_row id="feature_row_mllondon" type="left" %}
{% include feature_row id="feature_row_lsvpr" type="left" %}
{% include feature_row id="feature_row_geo_unc" type="left" %}
{% include feature_row id="feature_row_cucl" type="left" %}
{% include feature_row id="feature_row_tti" type="left" %}
{% include feature_row id="feature_row_googlex" type="left" %}
{% include feature_row id="feature_row_bmva" type="left" %}
{% include feature_row id="feature_row_perse" type="left" %}


text:
PickPocket

    A python script to transfer all your Pocket links to a database in Notion.

    Explore the docs
    ·
    File issues and feature requests here

## Table of Contents

- [Table of Contents](#table-of-contents)
- [About The Project](#about-the-project)
- [Getting Started](#getting-started)
  - [Prerequisites](#prerequisites)
  - [Setup & Installation](#setup--installation)
- [Usage](#usage)
- [Roadmap](#roadmap)
- [Contributing](#contributing)
- [License](#license)
- [Contact](#contact)
- [Acknowledgements](#acknowledgements)

## About The Project

A python script to copy all your Pocket saves to a database in Notion. Current iteration is based off the HTML export option provided by the folks at Pocket.

**Intended for**
- Those who are looking to transfer their reading lists from Pocket to Notion.
- Those who want to keep track and analyze what they read.

## Getting Started

To get a local copy up and running follow these simple steps.

### Prerequisites

* A Pocket account to retreive your saved content from.
* A Notion account to store your links.
* Python 3 on your system to run the code.

### Setup & Installation

1. Clone this repository.
    ```sh
    git clone https://github.com/paperboi/PickPocket.git
    ```
2. Navigate to the directory and install the pre-requisite packages using
   ```sh
   pip install -r requirements.txt
   ```

## Usage
1. Export your Pocket saves from [here](https://help.getpocket.com/article/1015-exporting-your-pocket-list).
2. Duplicate this [database template](https://www.notion.so/personaljeff/e4a0751a114842c6b2b238218e52e7d2?v=062127a6aa4341fb98e6d74b0eadfc4c) to your Notion workspace.
3. Since this code requires access of non-public pages, an authentication token from your Notion page is required. This token is stored in the `token_v2` cookie. This can be found in the *Storage* tab of your browser's developer tools.
   - For Chrome: Open Developer Tools (*Menu > Other tools > Developer Tools*), navigate to Application tab and go to *Storage\Cookies* to find the token.
4. Store the path to your HTML file, the address to your database and the `token_v2` value as `PATH_POCKET_FILE`, `NOTION_TABLE_ID` and `NOTION_TOKEN` respectively in a `.env` file in the same directory you have cloned this repository to.
5. To execute the script, navigate to the directory and run
   ```sh
   python pocket2notion.py
   ```

## Roadmap

See the [open issues](https://github.com/paperboi/PickPocket/issues) for a list of proposed features (and known issues).

## Contributing

Any contributions you make are **greatly appreciated**.

1. Fork the Project
2. Create your Feature Branch (`git checkout -b feature/AmazingFeature`)
3.  Push to the Branch (`git push origin feature/AmazingFeature`)
5. Open a Pull Request

## License

Distributed under the MIT License. See [LICENSE](https://github.com/paperboi/PickPocket/blob/master/LICENSE.md) for more information.

## Contact

Jeffrey Jacob - [@DullBlackWall](https://twitter.com/DullBlackWall) -<EMAIL_ADDRESS>
Project Link: [https://github.com/paperboi/PickPocket](https://github.com/paperboi/PickPocket)

## Acknowledgements

* [K.P. Govind](https://github.com/reisub0) for clearing my doubts every step of the way.
* [Jamie Alexandre](https://github.com/jamalex/) for the powerful [notion-py](https://github.com/jamalex/notion-py) API.

license: MIT

repository: fmhyman/PickPocket

branch_name: refs/heads/master

extension: md

license_type: permissive

repo_name: fmhyman/PickPocket


text:
# Retainer

Retainer is an Android library that helps you retain objects in an Activity / Fragment during configuration changes.

It auto-generates a Fragment internally by using annotation processing.
A generated Fragment is called `setRetainInstance(true);` in its `onCreate()` to preserve stateful objects.

If you need more information about the handling of configuration changes, please check the following document.

https://developer.android.com/guide/topics/resources/runtime-changes.html

## How to use

### Activity

Supports only `android.support.v4.app.FragmentActivity` or its subclasses.

```java
import net.divlight.retainer.Retainer;
import net.divlight.retainer.annotation.Retain;

public class ExampleActivity extends AppCompatActivity {
    // This field will be automatically preserved by Retainer.
    @Retain
    int retainedValue;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Retainer.onCreate(this);
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        Retainer.onDestroy(this);
    }
}
```

### Fragment

Supports only `android.support.v4.app.Fragment` or its subclasses.

```java
import net.divlight.retainer.Retainer;
import net.divlight.retainer.annotation.Retain;

public class ExampleFragment extends Fragment {
    // This field will be automatically preserved by Retainer.
    @Retain
    int retainedValue;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Retainer.onCreate(this);
    }

    @Override
    public void onDestroy() {
        super.onDestroy();
        Retainer.onDestroy(this);
    }
}
```

**IMPORTANT**: You should never add `@Retain` to an object that is tied to the activity context, such as a Drawable, an Adapter, or a View.
If you do, it will cause serious memory leaks.

## Download

### Gradle

Add it in your root build.gradle at the end of repositories:

```groovy
allprojects {
    repositories {
        ...
        maven { url 'https://jitpack.io' }
    }
}
```

Add the dependency in your module's build.gradle:

```groovy
compile 'com.github.nakamuuu.retainer:library:{{latest_version}}'
annotationProcessor 'com.github.nakamuuu.retainer:processor:{{latest_version}}'
```

## Requirements

Android 4.0.3+ (API Level: 15+)

## License

```
Copyright 2017 Keita Nakamura

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

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

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

repository: hkurokawa/retainer

repo_name: hkurokawa/retainer


text:
###Protect your users

DNSChanger is malware that was active for years and infected millions of computers.
The FBI gained control of the servers that were used, and has been operating them
safely for some time, but they will be shut down on July 9, 2012.

###What it does
Visitor DNSChanger Detector shows infected visitors a warning banner
to help them remove the malware and remain online.

![Banner example image](/images/apps/dnschanger_detector/banner_example.png)

Infected computers will lose access to the Internet on July 9. Help your visitors stay
online!

For more information, visit
[the FBI's information page.](http://www.fbi.gov/news/stories/2011/november/malware_110911)


text:
# Changelog

All notable changes to the LaunchDarkly React Native SDK will be documented in this file. This project adheres to [Semantic Versioning](http://semver.org).

## [8.0.0] - 2023-08-25
### Added:
- Added Automatic Mobile Environment Attributes functionality which makes it simpler to target your mobile customers based on application name or version, or on device characteristics including manufacturer, model, operating system, locale, and so on. To learn more, read [Automatic environment attributes](https://docs.launchdarkly.com/sdk/features/environment-attributes).
- Support for RN 0.72.

### Removed
- Removed LDUser and related functionality. Use LDContext instead. To learn more, read https://docs.launchdarkly.com/home/contexts.

## [7.1.8] - 2023-08-21
### Fixed:
- In iOS the `defaultValue` argument types for `numberVariation` and `numberVariationDetail` were incorrect so defaultValues were not being passed correctly to the iOS SDK. This affected only iOS the Android counterpart is unaffected.

## [7.1.7] - 2023-08-15
### Fixed:
- On Android there was a bug where application tags are not being passed correctly to the Android SDK. This affected only Android, the iOS counterpart is unaffected.

## [7.1.6] - 2023-06-22
### Fixed:
- Fix #160 null pointer exceptions on `getLastSuccessfulConnection` and `getLastFailedConnection`

## [7.1.5] - 2023-06-07
### Fixed:
- Flag listeners are now called correctly after identify results in flag value changes.

## [7.1.4] - 2023-04-06
### Changed:
- Bumped js-sdk-common to [5.0.3](https://github.com/launchdarkly/js-sdk-common/releases/tag/5.0.3) to allow context key to be optional.

## [7.1.3] - 2023-03-21
### Fixed:
- Updating underlying Android dependency to include fix for allFlagsChangeListener.

## [7.1.2] - 2023-03-15
### Fixed:
- On Android if proguard is enabled, the sdk crashes on init because the consumer-proguard-rules.pro file is missing.

## [7.1.1] - 2023-03-06
### Added:
- Added react-native 0.71.x to the list of supported versions in README.

## [7.1.0] - 2023-03-06
### Added:
- Support for react-native 0.71

## [7.0.4] - 2023-03-03
### Fixed:
- Fixed wrong parameter order in configureWithTimeout function on Android. Thank you for your contributions again [adamivancza](https://github.com/launchdarkly/react-native-client-sdk/pull/193)!

## [7.0.3] - 2023-03-02
### Fixed:
- Remove extra resolve in the jsonVariation call. (Thanks, [adamivancza](https://github.com/launchdarkly/react-native-client-sdk/pull/191)!)

## [7.0.2] - 2023-03-01
### Changed:

- In Android, most promise rejects have been replaced with warning log and a promise resolve of default values. This behavior is now consistent with iOS.

- In Android `allFlags` will never reject. If an exception occurs the sdk logs a warning and resolves an empty Map. This behavior is also now consistent with iOS.

## [7.0.1] - 2023-02-27
### Changed:

- Updated readme to reflect supported versions.

## [7.0.0] - 2023-02-24
The latest version of this SDK supports LaunchDarkly's new custom contexts feature. Contexts are an evolution of a previously-existing concept, "users." Contexts let you create targeting rules for feature flags based on a variety of different information, including attributes pertaining to users, organizations, devices, and more. You can even combine contexts to create "multi-contexts."

For detailed information about this version, please refer to the list below. For information on how to upgrade from the previous version, please read the [migration guide](https://docs.launchdarkly.com/sdk/client-side/react/react-native-migration-6-to-7).

### Added:

- The types `LDContext`, `LDSingleKindContext`, and `LDMultiKindContext` define the new "context" model.

### Changed:

- `LDConfig` changes to be consistent with the Javascript SDK:

  - `pollUri`, `streamUri`, `eventsUri` are now `pollUrl`, `streamUrl` and `eventsUrl`.
  - `eventsCapacity` is now `eventCapacity`
  - `eventsFlushIntervalMillis`, `connectionTimeoutMillis`, `pollingIntervalMillis`, `backgroundPollingIntervalMillis` are now `flushInterval`, `connectionTimeout`, `pollingInterval`, `backgroundPollingInterval`.
  - `diagnosticRecordingIntervalMillis` is now `diagnosticRecordingInterval`
  - `maxCachedUsers` is now `maxCachedContexts`
  - `allUserAttributesPrivate`, `privateAttributeNames` are now `allAttributesPrivate` and `privateAttributes`

- `LDUser` type is now imported from the Javascript sdk common package.
- All SDK methods that took an `LDUser` parameter now take an `LDContext`. `LDUser` is now a subset of `LDContext`, so existing code based on users will still work.

### Removed:

- Support for React Native versions < 0.69 have been removed. The LaunchDarkly React Native SDK now supports only React Native versions >=0.69.0 <0.71.0.
- Removed the `secondary` meta-attribute in `LDUser`.
- The `alias` method no longer exists because alias events are not needed in the new context model.
- The `autoAliasingOptOut` and `inlineUsersInEvents` options no longer exist because they are not relevant in the new context model.

### Deprecated:

- The `LDUser` object has been deprecated. Support for `LDUser` is maintained to simplify the upgrade process, but it is recommended to use `LDContext` in the shape of either `LDSingleKindContext` or `LDMultiKindContext`.

## [6.3.1] - 2023-02-23
### Changed:
- Update ManualTestApp iOS pod dependency launchdarkly-react-native-client-sdk to 6.3.0.

### Fixed:
- iOS bug where force unwrapping of nil LDClient cause crashes. [Issue #152](https://github.com/launchdarkly/react-native-client-sdk/issues/152).

## [6.3.0] - 2023-01-30
### Added:
- Support for application id and version configuration options

### Changed:
- Updated iOS client SDK to 7.1.0. This requires at minimum iOS 11 so the podspec has been updated to 11
- Updated android client SDK to 3.6.0
- Updated gradle version to 7.4.0

### Fixed:
- Android build failures for RN 0.64.3 due to a [facebook release issue](https://github.com/facebook/react-native/issues/35210)
- Android local build issues due to outdated gradle version and repository configuration

## [6.2.4] - 2022-10-06
### Fixed:
- Reverted the `isInitialized` fix that is not working in 6.2.3 ([#157](https://github.com/launchdarkly/react-native-client-sdk/issues/157))
- Fixed RN 0.70.x support. ([#158](https://github.com/launchdarkly/react-native-client-sdk/issues/158))

## [6.2.3] - 2022-09-29
### Added:
- React Native 0.70 Support
- Xcode 14.0 Support

### Fixed:
- Android: Updated Android SDK dependency to [3.2.0](https://github.com/launchdarkly/android-client-sdk/releases/tag/3.2.0).
- Android: Updated `isInitialized` to return false instead of a Promise rejection if the native Android client is not available.

## [6.2.2] - 2022-08-16
### Added:
- React Native 0.69 Support

## [6.2.1] - 2022-08-02
### Fixed:
- Android: Updated Android SDK dependency to [3.1.6](https://github.com/launchdarkly/android-client-sdk/releases/tag/3.1.6).

## [6.2.0] - 2022-05-17
### Changed:
- iOS: Using "custom" as a private attribute name in `LDConfig.privateAttributeNames` or `LDUser.privateAttributeNames` will no longer set all `LDUser` custom attributes private.
- iOS: The automatically set `device` and `operatingSystem` custom attributes can now be set private.
- iOS: Significant internal changes from updating to the [6.0.0 release](https://github.com/launchdarkly/ios-client-sdk/releases/tag/6.0.0) of the iOS SDK.

### Fixed:
- The TypeScript definitions for `LDClient.jsonVariation` and `LDClient.jsonVariationDetail` no longer restrict the `defaultValue` and result type to `Record<string, any>`. These methods can accept `any` for `defaultValue` and return `any` type.

## [6.1.3] - 2022-04-14
### Added:
- React Native 0.68 Support

### Fixed:
- Android: `variationDetail` methods return the correct variation when the reason is not present
- Android: The object returned by `variationDetail` methods will now include the `inExperiment` field when appropriate.
- ManualTestApp Int and Float options now work correctly

## [6.1.2] - 2022-03-25
### Fixed:
- Android: Prevent multiple allocations of the `DiagnosticEventProcessor`.

## [6.1.1] - 2022-03-18
### Fixed:
- iOS: Fixed race condition in `LDSwiftEventSource` that could cause a crash if the stream is explicitly stopped (such as when `identify` is called) while the stream is waiting to reconnect.

## [6.1.0] - 2022-02-25
### Added:
- Added `privateAttributeNames` configuration option for `LDConfig` allowing the configuration of private attributes for all users. ([#102](https://github.com/launchdarkly/react-native-client-sdk/issues/102))

### Fixed:
- Android: Updated Android SDK dependency to [3.1.3](https://github.com/launchdarkly/android-client-sdk/releases/tag/3.1.3).
- Android: Added missing native module API stubs to prevent warning on `NativeEventEmitter`. ([#116](https://github.com/launchdarkly/react-native-client-sdk/issues/116))
- iOS: Fixed ownership handling of native callbacks to avoid garbage collection of all flags and connection mode listeners that are still in use. ([#106](https://github.com/launchdarkly/react-native-client-sdk/issues/106))

## [6.0.0] - 2022-02-10
### Added:
- Expanded supported versions of React Native to include 0.65, 0.66, and 0.67 releases.
- Added a manual testing application to the repository.
- Extensive testing of build configurations in CI to allow quicker validation of compatibility against multiple React Native releases and XCode versions.

### Changed:
- iOS: The native `podspec` for iOS has been renamed to fix automatic linking. Updating may require removing references to the old `podspec`.

### Fixed:
- iOS: Fixed an issue that prevented using `jsonVariation` and `jsonVariationDetail` with array default values. ([#112](https://github.com/launchdarkly/react-native-client-sdk/issues/112))

### Removed:
- Support for React Native 0.63.

## [5.1.1] - 2022-01-21
### Changed:
- The `key` property on `LDUser` objects is now optional, if it is not provided the SDK will automatically generate a key and mark the user as anonymous. See the [API documentation](https://launchdarkly.github.io/react-native-client-sdk/index.html#lduser) for more details.
- Updated native Android and iOS SDK to the [3.1.2 release](https://github.com/launchdarkly/android-client-sdk/releases/tag/3.1.2) and [5.4.4 release](https://github.com/launchdarkly/ios-client-sdk/releases/tag/5.4.4) respectively.

### Fixed:
- Android: Removed reference of `jcenter` from the Gradle build to reflect the shutdown of the JCenter artifact repository.
- iOS: `isOffline` has been corrected to no longer return `true` when online and `false` when offline.
- iOS: Fixed memory leak when stream connections are terminated caused by the native server sent events implementation.

## [5.1.0] - 2021-09-30
### Added:
- Added the `inlineUsersInEvents` configuration option which can be used to configure the SDK to include full user details in all analytics events.

### Changed:
- Restored compatibility with React Native 0.63, this version of the SDK can be used with either 0.63 or 0.64 React Native releases.

### Fixed:
- Added missing TypeScript definition for `autoAliasingOptOut` configuration field.
- Fixed an outdated `LDClient#isInitialized` description (Thanks, [christophby](https://github.com/launchdarkly/react-native-client-sdk/pull/97)!)

## [5.0.1] - 2021-09-03
### Fixed:
- Android: Fixed an inconsistency in the argument type given to all flags listeners. On Android the callback was given a string with a JSON representation of an array of strings, rather than an actual array of strings. (Thanks, [rodperottoni](https://github.com/launchdarkly/react-native-client-sdk/pull/91)!) ([#89](https://github.com/launchdarkly/react-native-client-sdk/issues/89))
- Android: Fixed runtime crashes caused by code shrinking when compiling with Proguard/R8. The SDK now specifies consumer Proguard rules for Android SDK methods accessed with runtime reflection.
- Android: Removed the `android:allowBackup` tag from the SDK's `AndroidManifest.xml` file to avoid requiring applications to explicitly replace the tag if given a different value. ([#138](https://github.com/launchdarkly/android-client-sdk/issues/138))
- Android: Changed the SDK's network detection check to consider network transport over a VPN as a connected state. This fixes an issue where the SDK would prevent network requests on a VPN due to considering the network to be unavailable. (Thanks, [lguipeng](https://github.com/launchdarkly/android-client-sdk/pull/137)!)

## [5.0.0] - 2021-08-20
### Added:
- The SDK now supports the ability to control the proportion of traffic allocation to an experiment. This works in conjunction with a new platform feature now available to early access customers.
- Added `numberVariation` and `numberVariationDetail` to LDClient.
- Added the `alias` method to LDClient. This can be used to associate two user objects for analytics purposes with an alias event.
- Added the `autoAliasingOptOut` configuration option. This can be used to control the new automatic aliasing behavior of the `identify` method; by setting `autoAliasingOptOut` to true, `identify` will not automatically generate alias events.
- Improved testing of JavaScript wrapper using mock native modules.

### Changed (requirements/dependencies/build):
- iOS: The underlying SDK version has been updated from 5.4.1 to 5.4.3. See the [release notes](https://github.com/launchdarkly/ios-client-sdk/releases) for details.
- Android: The underlying SDK version has been updated from 2.14.1 to 3.1.0. See the [release notes](https://github.com/launchdarkly/android-client-sdk/releases) for details.
- Android: Migrated from using the Android Support Libraries to using AndroidX from Jetpack.
- Android: The minimum API version has been raised from API level 16 (Android 4.1 Jelly Bean) to API level 21 (Android 5.0 Lollipop).
- Android: The SDK no longer has a dependency on Google Play Services. This dependency was only used on pre-21 Android API levels to improve TLS 1.2 compatibility, as the minimum Android version has been raised to 21, the dependency is no longer necessary.
- Android: The SDK is now built with modern Gradle (6.7, Android plugin 4.1.3) and uses Java 8.

### Changed (API/behavioral):
- The `LDClient.identify` method will now automatically generate an alias event when switching from an anonymous to a known user. This event associates the two users for analytics purposes as they most likely represent a single person. This behavior can be disabled with the `autoAliasingOptOut` configuration option.
- The `LDClient` `<type>Variation` and `<type>VariationDetail` methods (e.g. `boolVariation`) now validate that default values are the correct type. If the default value fails validation the `Promise` will be rejected.
- The primitive variation methods, `LDClient.boolVariation`, `LDClient.boolVariationDetail`, `LDClient.numberVariation`, and `LDClient.numberVariationDetail`, now require a default value parameter (rather than being optional). If missing, the `Promise` will be rejected.
- Android: `LDClient.allFlags` will no longer convert `String` flags into JSON `Array`s or `Object`s when the value can be parsed into JSON `Array`s or `Object`s.
- Android: For compatibility with older SDK behavior, the `LDClient.stringVariation` method could be used to retrieve JSON flags in a serialized representation. This compatibility behavior has been removed, and attempts to request a JSON valued flag using stringVariation will behave the same as other mismatched type variation calls.
- Android: All log messages are now tagged `LaunchDarklySdk` for easier filtering. Thanks to @valeriyo for the suggestion ([#113](https://github.com/launchdarkly/android-client-sdk/issues/113)).
- Android: The when the `country` user is set, the SDK will no longer attempt to look up the country from the provided `String` (attempting to match it as an ISO-3166-1 alpha-2, alpha-3 code; or a country name) and set the country to the resultant IOS-3166-1 alpha-2 only if successful. The SDK no longer gives this attribute special behavior, and sets the user's country attribute directly as the provided `String`.
- Android: If the `debugMode` configuration option is set to `true`, the SDK will now enable detailed timber logging.
- Android: Custom user attributes that are `Object`s will no longer be ignored.
- Android: Elements of `Array` custom user attributes will no longer be ignored if they are not `String`s or `Number`s.
- Android: `Array` custom user attributes with mixed types will no longer ignore non-`String` elements.

### Fixed (Android):
- Catch `SecurityException` when thrown on call to `getNetworkCapabilities` used to detect current network availability. ([#129](https://github.com/launchdarkly/android-client-sdk/issues/129))
- Explicitly flag `PendingIntent`s as `FLAG_IMMUTABLE` on Android SDK versions that support doing so. Explicitly specifying mutability is required when targeting Android S+. ([#133](https://github.com/launchdarkly/android-client-sdk/issues/133))
- Increased the compile-time dependency on `jackson-databind` to <IP_ADDRESS>, due to [CVE-2020-25649](https://nvd.nist.gov/vuln/detail/CVE-2020-25649).
- Update the dependency on the shared [launchdarkly/java-sdk-common](https://github.com/launchdarkly/java-sdk-common) to 1.1.2 to prevent Jackson from showing up as a transitive dependency in tools that inspect module metadata.
- The Android manifest has been updated to explicitly specify the `android:exported` attribute on declared `receiver` elements. This is to meet [new requirements](https://developer.android.com/about/versions/12/behavior-changes-12#exported) in the upcoming Android 12 release.
- Fixed an issue where the SDK could log error level messages when attempting to send diagnostic events without an internet connection. The SDK will no longer attempt to send diagnostic events when an internet connection is known to be unavailable, and will not log an error level message if the connection fails. Thanks to @valeriyo for reporting ([#107](https://github.com/launchdarkly/android-client-sdk/issues/107)).
- Fixed an issue where flags listeners would be informed of changes to unchanged flags whenever the SDK receives an entire flag set (on a new stream connection, a poll request, or any stream updates behind a relay proxy).
- Fixed an issue where a `NullPointerException` is thrown if `LDClient.close()` is called multiple times.
- Improved the proguard/R8 configuration to allow more optimization. Thanks to @valeriyo for requesting ([#106](https://github.com/launchdarkly/android-client-sdk/issues/106))
- Fixed a potential issue where the SDK could cause additional throttling on requests to the backend service when previously throttled requests had been cancelled before completion.

### Fixed (iOS):
- Fixed an issue where `304 NOT_MODIFIED` responses to SDK polling mode requests would be considered error responses. This could cause the completion on a `identify` request to not complete, and gave erroneous connection information data and logging output.
- Fixed a crash when attempting to cache flag data containing variation JSON values containing a JSON `null` value nested within a JSON array.
- Avoid crash when timeout/interval configuration options are set to sufficiently large values. This was caused when converting these values to an `Int` value of milliseconds. (Thanks, [@delannoyk](https://github.com/launchdarkly/ios-client-sdk/pull/246)!)
- Update `Quick` test dependency to 3.1.2 to avoid build warnings and adopt security fixes. ([#243](https://github.com/launchdarkly/ios-client-sdk/issues/243))
- Use `AnyObject` over `class` in protocol inheritance to avoid compiler warnings. ([#247](https://github.com/launchdarkly/ios-client-sdk/issues/247))

### Removed:
- `LDClient.intVariation` and `LDClient.floatVariation`. Please use `LDClient.numberVariation` instead.
- `LDClient.intVariationDetail` and `LDClient.floatVariationDetail`. Please use `LDClient.numberVariationDetail` instead.

## [4.2.2] - 2021-06-15
### Fixed:
- Correct usages of undeclared variables when registering or un-registering connection mode or all flags listeners. ([#82](https://github.com/launchdarkly/react-native-client-sdk/issues/82))

## [4.0.4] - 2021-06-02
### Fixed:
- iOS: Fixed an issue where an exception was thrown when calling `LDClient.configure` with an optional `timeout` ([#80](https://github.com/launchdarkly/react-native-client-sdk/issues/80)).

## [4.2.1] - 2021-06-01
### Fixed:
- iOS: Fixed an issue where an exception was thrown when calling `LDClient.configure` with an optional `timeout` ([#80](https://github.com/launchdarkly/react-native-client-sdk/issues/80)).
- iOS: Improved consistency with Android for `LDClient.isInitialized`. Both implementations will now reject the promise if the client has not been configured.
- iOS: Avoid exceptions on iOS when certain methods are called after `LDClient.close`. (Thanks, [andvalsol](https://github.com/launchdarkly/react-native-client-sdk/pull/78))! ([#75](https://github.com/launchdarkly/react-native-client-sdk/issues/75))
- Android: Fixed an issue where the promise for `LDClient.configure` could be resolved before the client had finished initializing when not providing the optional `timeout` parameter.
- Android: Fixed an issue where `LDClient.allFlags` would reject the promise when the client was configured but not yet initialized, rather than resolving with any cached flags.

## [4.2.0] - 2021-05-19
### Added:
- `LDUser` now has an optional `secondary` attribute to match other LaunchDarkly SDKs. For more on the behavior of this attribute see [the documentation on targeting users](https://docs.launchdarkly.com/home/flags/targeting-users).
- Support for multiple LaunchDarkly projects or environments. Each set of feature flags associated with a mobile key is called an environment. ([#10](https://github.com/launchdarkly/react-native-client-sdk/issues/10))
  - `secondaryMobileKeys` is now a config option which allows a mapping of names to the SDK keys for each additional environment. `mobileKey` is still required, and represents the primary environment.
  - Many methods including variations, track, and listeners now support an optional `environment` parameter to evaluate the method against the given `environment`.

## [4.1.2] - 2021-04-28
### Fixed:
- The `LDEvaluationReasonErrorKind`, `LDEvaluationReasonKind`, `LDConnectionMode`, and `LDFailureReason` enum TypeScript types were undefined when evaluated at runtime due to being defined in an ambient context. This was also fixed in SDK version 4.0.3 with React Native 0.63 compatibility.

## [4.0.3] - 2021-04-28
### Fixed:
- The `LDEvaluationReasonErrorKind`, `LDEvaluationReasonKind`, `LDConnectionMode`, and `LDFailureReason` enum TypeScript types were undefined when evaluated at runtime due to being defined in an ambient context.

## [4.1.1] - 2021-04-23
### Fixed:
- Android: Fixed an issue where the `jsonVariationDetail` method in `LDClient` returned `Promise<Record<string, any>>` instead of the declared return type of `Promise<LDEvaluationDetail<Record<string, any>>>`. This was also fixed in SDK version 4.0.2 with React Native 0.63 compatibility.

## [4.0.2] - 2021-04-23
### Fixed:
- Android: Fixed an issue where the `jsonVariationDetail` method in `LDClient` returned `Promise<Record<string, any>>` instead of the declared return type of `Promise<LDEvaluationDetail<Record<string, any>>>`.

## [4.1.0] - 2021-04-13
### Added:
- The SDK is now compatible with React Native version 0.64.x. ([#69](https://github.com/launchdarkly/react-native-client-sdk/issues/69))

### Removed:
- The SDK no longer requires React as a peer dependency. React compatibility is dictated based on its compatibility with the React Native version.

## [4.0.1] - 2021-04-06
### Fixed:
- iOS: Internal throttling logic would sometimes delay new poll or stream connections even when there were no recent connections. This caused switching active user contexts using `identify` to sometimes delay retrieving the most recent flags, and therefore delay the completion of the returned Promise.

## [4.0.0] - 2021-03-31
### Added:
- Added `getConnectionMode`, `getLastSuccessfulConnection`, `getLastFailedConnection`, and `getLastFailure` methods to `LDClient`. These methods can be used to report on the SDK's connection to LaunchDarkly. The new `LDConnectionMode` and `LDFailureReason` enum types have been added to support these methods. These methods replace the `getConnectionInformation` method which behaved differently across platforms.
- Added a `getVersion` method to `LDClient` to get the version of the React Native SDK.
- Added an optional `timeout` value to the `configure` method to specify that the SDK should block up to a specified duration while initializing.
- Added a new client configuration option, `maxCachedUsers`, to `LDClientConfig`. You can now specify the number of users to be cached locally on the device or use `-1` for unlimited cached users.
- Added new user configuration options, `ip` and `avatar`, to `LDUserConfig`.
- The SDK now periodically sends diagnostic data to LaunchDarkly, describing the version and configuration of the SDK, the operating system the SDK is running on, the device type (such as "iPad"), and performance statistics. No credentials, device IDs, or other identifiable values are included. This behavior can be disabled or configured with the new `LDClientConfig` properties `diagnosticOptOut` and `diagnosticRecordingInterval`.
- Added reporting of the SDK's "wrapper name" and "wrapper version" for internal reporting purposes.
- iOS: Added XCode 12 support ([#64](https://github.com/launchdarkly/react-native-client-sdk/issues/64))
- iOS: Added support for the `isInitialized` method. Previously this method only worked when running on Android.

### Changed:
- Renamed the `LDClientConfig` type to `LDConfig` for consistency with other LaunchDarkly SDKs. Corresponding parameter names and documentation have also been updated to reflect this change.
- Renamed the `LDUserConfig` type to `LDUser` for consistency with other LaunchDarkly SDKs. Corresponding parameter names and documentation have also been updated to reflect this change.
- Renamed `baseUri` in `LDConfig` (formerly `LDClientConfig`) to `pollUri` to clarify that this URI is only used when polling.
- The `fallback` parameter of all `LDClient` variation methods has been renamed to `defaultValue` to help distinguish it from `fallback` values in rules specified in the LaunchDarkly dashboard.
- Changed the default polling domain from `app.launchdarkly.com` to `clientsdk.launchdarkly.com`.
- Android: Updated the Android SDK native module from 2.10.0 to [2.14.1](https://github.com/launchdarkly/android-client-sdk/releases/tag/2.14.1)
- Android: Error stacktrace logging in the bridge layer now uses Timber instead of `System.err`
- iOS: Updated the iOS SDK native module from 4.5.0 to [5.4.0](https://github.com/launchdarkly/ios-client-sdk/releases/tag/5.4.0) ([#65](https://github.com/launchdarkly/react-native-client-sdk/issues/65))
- iOS: The minimum iOS deployment target has been updated from 8.0 to 10.0.
- iOS: The maximum backoff delay between failed streaming connections has been reduced from an hour to 30 seconds. This is to prevent being unable to receive new flag values for up to an hour if the SDK has reached its maximum backoff due to a period of network connectivity loss.
- iOS: The backoff on streaming connections will not be reset after just a successful connection, rather waiting for a healthy connection for one minute after receiving flags. This is to reduce congestion in poor network conditions or if extreme load prevents the LaunchDarkly service from maintaining an active streaming connection.
- iOS: When sending events to LaunchDarkly, the SDK will now retry the request after a one second delay if it fails.
- iOS: When events fail to be sent to LaunchDarkly, the SDK will no longer retain the events. This prevents double recording events when the LaunchDarkly service received the event but the SDK failed to receive the acknowledgement.

### Fixed:
- The `getConnectionInformation` method in `LDClient` had inconsistent return types across the iOS and Android platforms. This API has been split into separate methods which are consistently typed across platforms - see the notes above. ([#59](https://github.com/launchdarkly/react-native-client-sdk/issues/59))
- Android: Fixed an issue where `identify` ran on the current thread instead of on a background thread (thanks, [orthanc](https://github.com/launchdarkly/react-native-client-sdk/pull/66) and [hackdie](https://github.com/launchdarkly/react-native-client-sdk/pull/58)!)
- Android: Fixed an issue where an exception was thrown if `configure` was invoked multiple times. Now, subsequent invocations result in a rejected promise. ([#40](https://github.com/launchdarkly/react-native-client-sdk/issues/40))
- Android: Fixed an issue where the `evaluationReasons` option in `LDClientConfig` was not used when configuring the Android SDK native module.
- Android: Fixed an issue where `NullPointerException`s were possible if certain methods were invoked while the client was initializing (discussed in [#55](https://github.com/launchdarkly/react-native-client-sdk/issues/55#issuecomment-681173212))
- Android: Fixed an issue where initialization may never complete if the network status of foreground state changed before the future had completed.
- Android: Fixed an issue where a `NullPointerException` could occur when calling a variation method with a flag key that does not exist locally or is of the wrong type. This issue could only occur if a null fallback value was provided.
- Android: Improved event summarization logic to avoid potential runtime exceptions.
- Android: Internal throttling logic would sometimes delay new poll or stream connections even when there were no recent connections. This caused switching active user contexts using `identify` to sometimes delay retrieving the most recent flags, and therefore delay the completion of the returned Promise.
- Android: Previously, the SDK manifest required the SET_ALARM permission. This permission was never used, so it has been removed.
- Android: Improved handling of exceptions thrown by the alarm manager on Samsung devices.
- iOS: Fixed an issue preventing private custom attribute names being recorded in events when all custom attributes are set to be private by including "custom" in the `LDUserConfig.privateAttributeNames` or `LDClientConfig.allUserAttributesPrivate` properties.
- iOS: Fixed an issue to prevent a crash that would rarely occur as the SDK transitioned to an online state for a given configuration or user. This issue may have been exacerbated for a short period due to a temporary change in the behavior of the LaunchDarkly service streaming endpoint.
- OS: Fix `metricValue` argument to `track` to work with all numbers.

### Removed:
- Removed the `LDClientConfig` type.
- Removed the `LDUserConfig` type.
- Removed the `getConnectionInformation` method in `LDClient`.
- Removed the `isDisableBackgroundPolling` method in `LDClient`.
- Removed the `baseUri` attribute in `LDConfig` (formerly `LDClientConfig`).

## [3.2.2] - 2020-12-02
### Fixed:
- Changed iOS all flags listener to only return `[LDFlagKey]` instead of `[LDFlagKey: LDChangedFlag]`. ([#61](https://github.com/launchdarkly/react-native-client-sdk/issues/61))

## [3.2.1] - 2020-08-26
### Fixed:
- `isInitialized` was failing when run in Android due to accessing an undefined variable. ([#55](https://github.com/launchdarkly/react-native-client-sdk/issues/55))

## [3.2.0] - 2020-07-10
### Changed:
- The SDK is now compatible with React Native version 0.63.x and React version 16.13.x.

### Removed:
- The SDK no longer supports iOS 9. This change was made to correspond to React Native 0.63's dropped support for iOS 9.

## [3.1.2] - 2020-05-21
### Fixed:
- The `track` method failed when called with a boolean `data` value and a non-null `metricValue`. (Thanks, [bolak](https://github.com/launchdarkly/react-native-client-sdk/pull/51)!)

## [3.1.1] - 2020-04-24
### Changed:
- Updated the Android target and compile versions to 28

## [3.1.0] - 2020-04-01
### Changed:
- The SDK is now compatible with React Native version 0.62.x and React version 16.11.x

## [3.0.2] - 2020-03-31
### Changed:
- Updated SDK code to build, run, and test on Xcode 11.4.

## [3.0.1] - 2020-02-26
### Added:
- Generated TypeDoc documentation for all types, properties, and methods is now available online at https://launchdarkly.github.io/react-native-client-sdk/. Currently this will only be for the latest released version.

### Fixed:
- Fixed some incorrect and incomplete typedoc comments.

## [3.0.0] - 2020-02-20
### Added:
- Added TypeScript type definitions (thanks, [eeynard](https://github.com/launchdarkly/react-native-client-sdk/pull/32)!)
- Added TypeDoc comments
- The SDK now specifies a uniquely identifiable request header when sending events to LaunchDarkly to ensure that events are only processed once, even if the SDK sends them two times due to a failed initial attempt.

### Changed:
- Changed the default value for the `anonymous` user property has been changed to `false`. Previously this default was inconsistent; the default value was `true` when running in iOS and `false` when running in Android.
- Changed the default value for the `backgroundPollingIntervalMillis` SDK configuration property has been changed to `3600000` (one hour). Previously this default was inconsistent; the default value was `900000` (15 minutes) when running in iOS and `3600000` (one hour) when running in Android.
- Changed the default value for the `disableBackgroundUpdating ` SDK configuration property has been changed to `false`. Previously this default was inconsistent; the default value was `true` when running in iOS and `false` when running in Android.

### Fixed:
- Fixed the `*VariationDetail` methods so that they now always return a promise containing the variation detail information. Previously, when running in Android, this promise would have instead contained just the variation value if the underlying process threw an exception.
- Fixed an issue where React Native apps could crash after reloading when running in iOS (thanks, [shercoder](https://github.com/launchdarkly/react-native-client-sdk/pull/39)!)

## [2.2.0] - 2020-01-24
### Added:
- Adds `evaluationReasons` configuration option.
- Adds `user.country` user option.

### Fixed:
- Fixes iOS start completion by adding new method `startCompleteWhenFlagsReceived`. This change creates feature parity between the start completion on iOS and Android. They now both complete when flag values are received.
- Fixes `EvaluationDetail` parsing from native to JS.

## [2.1.0] - 2019-12-23
### Added:
- Implemented `variationDetail` which returns an Evaluation Reason giving developers greater insight into why a value was returned.
- Added `allFlagsListener` method, this returns flag keys whenever any flag key is updated.
- Added `metricValue` parameter to `track` method.
- The Connection Status API allows greater introspection into the current LaunchDarkly connection and the health of local flags.
	- This feature adds a new method called `getConnectionInformation` that returns an object that contains the current connection mode e.g. streaming or polling, when and how a connection failed, and the last time flags were updated.
	- Additionally, a new observer function called `registerCurrentConnectionModeListener` allows your application to listen to changes in the SDK's connection to LaunchDarkly.
- A `close()` method which flushes the event queue and closes all open connections to LaunchDarkly. This method should be invoked as part of your application's termination lifecycle event.

### Changed:
- Updated the iOS SDK to version 4.3.2. This enables the removal of `use_frameworks!` from the Podfile in a project using the LaunchDarkly React Native SDK.
- Updated the Android SDK to version 2.9.0.
- Switched iOS user switching from the deprecated `user` object to the `identify` method.

## [2.0.3] - 2019-11-25
### Changed:
- The SDK's dependency on React Native has been expanded to include subsequent patch releases after `0.61.2`.

### Fixed:
- The Android package is properly namespaced now as `com.launchdarkly.reactnative`. Previously the Android module's package was `com.reactlibrary` which was prone to clash with other third-party modules' packages. ([#25](https://github.com/launchdarkly/react-native-client-sdk/issues/25))

## [2.0.2] - 2019-10-04
### Changed
- Updated React Native to version 0.61.2 and updated React to version 16.9.0

## [2.0.1] - 2019-06-27
### Fixed
- Listeners on Android now have the proper event emitter key and work properly.
- Flag values in the object returned by `allFlags`  will no longer be Strings when they should be JSON Objects on Android.

### Changed
- Updated Android Client SDK to version 2.8.5
- Updated iOS Client SDK to version 4.1.2

## [2.0.0] - 2019-06-27
### Fixed
- Changes polling mode to not be ignored in config.

### Changed
- Updated Android Client SDK to version 2.8.4
- Updated iOS Client SDK to version 4.1.0
- Updated React Native to version 0.59.9 and updated React to version 16.8.3
- Updated to allow usage with Xcode 10.2.1
- Updated Swift to version 5.0

 This is a major version because of breaking version updates.

## [1.0.1] - 2019-05-03
### Changed
- Changed the package name from `launchdarkly-react-native-client` to `launchdarkly-react-native-client-sdk`
- Changed repository references to use the new URL

There are no other changes in this release. Substituting `launchdarkly-react-native-client` version 1.0.0 with `launchdarkly-react-native-client-sdk` version 1.0.1 will not affect functionality.

## [1.0.0] - 2019-04-18
### Changed
- Android and iOS client versions
### Fixed
- Added correct anonymous property
- Removed dependencies and added caret to peer dependencies

### Note on future releases

The LaunchDarkly SDK repositories are being renamed for consistency. This repository is now `react-native-client-sdk` rather than `react-native-client`.

The package name will also change. In the 1.0.0 release, it is still `launchdarkly-react-native-client`; in all future releases, it will be `launchdarkly-react-native-client-sdk`.

## [1.0.0-beta.1] - 2019-03-01
### Added
- CHANGELOG.md and CONTRIBUTING.md
### Changed
- Moved `LaunchDarklyReactNativeClient.podspec` into `ios/`
### Fixed
- Changed `config.yml` to run against `hello-react-native`.

repository: launchdarkly/react-native-client-sdk

branch_name: refs/heads/main

gha_language: Java

gha_license_id: NOASSERTION

repo_name: launchdarkly/react-native-client-sdk


text:
@module {{}} can-event
@parent can-observables
@collection can-infrastructure
@test can/event/test.html
@link ../docco/event.html docco
@group can-event.static static
@release 2.1
@package ./package.json

@description

Add event functionality into your objects.

The `canEvent` object provides a number of methods for handling events in objects. This functionality is best used by mixing the `canEvent` object into an object or prototype. However, event listeners can still be used even on objects that don't include `canEvent`.

All methods provided by `canEvent` assume that they are mixed into an object -- `this` should be the object dispatching the events.

@signature `assign(YourClass.prototype, canEvent)`

Adds event functionality to `YourClass` objects. This can also be applied to normal objects: `assign(someObject, canEvent)`.

The `assign` function can be any function that assigns additional properties on an object such as [Object.assign](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign) or lodash's [_.assign](https://lodash.com/docs#assign) or [can-util/js/assign/assign].

```js
import assign from "can-util/js/assign/assign";
import canEvent from "can-event";

function Thing() {

}

assign( Thing.prototype, canEvent );

const thing = new Thing();
thing.addEventListener( "prop", function() { /* ... */ } );
```

@body

## Using as a mixin

The easiest way to add events to your classes and objects is by mixing [can-event] into your object or prototype.

```
var SomeClass = Construct("SomeClass", {
	init: function() {
		this.value = 0;
	},
	increment: function() {
		this.value++;
		this.dispatch("change", [this.value]);
	}
});
Object.assign(SomeClass.prototype, canEvent);
```

Now that `canEvent` is included in the prototype, we can add/remove/dispatch events on the object instances.

```
var instance = new SomeClass();
instance.on("change", function(ev, value) {
	alert("The instance changed to " + value);
});

// This will dispatch the "change" event and show the alert
instance.increment();
```

## Using without mixing in

The same event functionality from `canEvent` can be used, even if the given object doesn't include `canEvent`. Every method within `canEvent` supports being called with an alternate scope.

```
var obj = {};

canEvent.addEventListener.call(obj, "change", function() {
	alert("object change!");
});

// This will dispatch the "change" event and show the alert
canEvent.dispatch.call(obj, "change");
```

repository: canjs/can-event

gha_language: JavaScript

gha_license_id: MIT

repo_name: canjs/can-event


text:
# News-Bot 🤖
# Introduction
News-bot is a telegram bot which will show you news from any country, in any language about topics specified by you.
# About the Bot
## Features 📰
* This bot is trained to fetch news from any **country** and in **any language**.
* It is equipped for small talk.
* It is also equipped with a custom keyboard which will show you all the available topics.
* Also, the bot is trained for fuzzy matching i.e. it can identify the topics even if you mispell them.
  - E.g.  If you mispell "sports" as "sprts","spots" etc, the bot can understand that you meant "sports".
## News-Topics 📕
* Top Stories
* World
* Nation
* Business
* Technology
* Entertainment
* Sports
* Science
* Health
## Inside the bot ⚒
It is a Python-Flask application, deployed using Heroku.
Shortest way to explain my code:
* I trained the bot using **dialogflow**.
* Connected a service account from Google Cloud to the code.
* Added **gnewsclient** which helps the bot fetch news.
* Set up the webhook with Heroku.
# Demo 🎥
Click on the picture to watch the demo:

[![IMAGE ALT TEXT HERE](https://img.youtube.com/vi/tq9lXJCJki0/0.jpg)](https://www.youtube.com/watch?v=tq9lXJCJki0)
# Try it yourself 🏃🏾♀
Search for **user_456bot** on telegram, hopefully it will work.
PS: There might be a few seconds lag after your first command as the server shuts down when its not in use.
# Tech Stack 👾

repository: RishikaGhosh/News-Bot

repo_name: RishikaGhosh/News-Bot


text:
# F-X-Cord-Member-Info-and-Gif-Bot

![alt text](https://upload.wikimedia.org/wikipedia/en/b/ba/F%28x%29_-_All_Mine.jpg)

Discord bot for the F(X) Discord Channel (https://discord.gg/c6c6zXh) made to display member info or a gif with predefined commands. Uses discord.js module. Currently messy, could clean up code using a map for the commands, but it functions well as is.

Command List: https://docs.google.com/spreadsheets/d/1Os3eVHcrpr8Rw1K6QkJN_euqpqF5ExhPfddkmWvsCCU/edit#gid=0

Example: .cheeky:

![alt text](http://i.imgur.com/SQqbsOq.gif)


text:
---
layout:     post
title:      LeetCode 191 Number of 1 Bits (Python)
number:     191
level:      Easy
lcurl:      number-of-1-bits
youtube:    u-ehcQZLCD0
bilibili1:  //player.bilibili.com/player.html?aid=458931068&bvid=BV1i5411J7SA&cid=291325109&page=1
xigua:
date:       2021-02-01
author:     小明MaxMing
header-img: img/post-bg-coffee.jpeg
catalog: false
tags:
    - Bit Manipulation
---

### 题目

Write a function that takes an unsigned integer and returns the number of '1' bits it has (also known as the Hamming weight).

### 解题思路

每次&1判断是否最后一位为1，之后右移一位

### 代码
```python
class Solution:
    def hammingWeight(self, n: int) -> int:
        res = 0
        while n:
            res += n & 1
            n >>= 1
        return res
```


text:
# Javascript Design Patterns

## Creational Patterns
| Pattern | Description |
|:-------:|:----------- |
| [Singleton](/creational/singleton) | A class with only a single instance with global access point |
| [Prototype](/creational/prototype) | A fully initialized instance used for crying or cloning |
| [Factory](/creational/factory) | This makes an instance of several derived classes based on interfaced data or events |

## Behavioral Design Patterns
| Pattern | Description |
|:-------:|:----------- |
| [Observer](/behavioral/observer) | A way of notifying change to a number of classes to ensure consistency between the classes |

## Structural Design Patterns
| Pattern | Description |
|:-------:|:----------- |
| [Adapter](/structural/adapter) | Match interfaces of different classes therefore classes can work together despite incompatible interfaces |

## License

[MIT License](./LICENSE.md) © Ardak Tileu

repository: ardakkk/design-patterns

repo_name: ardakkk/design-patterns


text:
# [EDDIE](https://eddie-webapp.netlify.com)

[![codecov](https://codecov.io/gh/fac-13/SBSHS/branch/master/graph/badge.svg)](https://codecov.io/gh/fac-13/SBSHS)

Sexual Well-being for men with ED

## General Information

At any point in time 30-40% of men report experiencing some form of sexual health difficulty that impacts on their emotional, physical and relational wellbeing. One most common sexual health problem is erectile difficulties (ED).

On the other hand, there is very limited information about basic physiology and understanding of our bodies in sex, which has a major impact on how far people will go to avoid or hide such issues from their partners and others.

The application aims to introduce helpful information regarding the sexual well-being of men with ED.

## Design Sprint

After a one day Design Thinking workshop with our client and Product Owner, we decided to create EDDIE; an informative web based app for men with ED. The application aims to help men understand the underlying causes of ED, navigate through some user stories and find relevant resources quickly, instead of going via the NHS patient route.

### Aims of the project:

- Simple to use and accessible
- User friendly and engaging
- Read about realistic user stories and find out how they coped
- Understand the main causes and mechanism behind ED
- Access some basic exercises and interventions
- Adhere to current data protection laws

## Prototype

An initial prototype was created for user testing, that can be accessed via this link:
[Prototype v.1](https://projects.invisionapp.com/share/FWJZAFVSC7R)

And an updated version of the prototype, based on corrections and user feedback :
[Prototype v.2](https://www.figma.com/proto/fWZHGTWYoIqpfdevZw8FXrm0/CuCu?scaling=contain&node-id=17%3A0)

## Target User

Edmund wants to enjoy sex but has been experiencing erectile difficulties recently and finds it difficult to discuss this issue with partner. Instead of waiting to be seen by a healthcare specialist, he wishes to find some basic information about this situation online and some simple steps he can take to tackle the issue.

### User Journey

- [x] Edmund can see a intro message on landing page
- [x] When the "stories" button is clicked, Edmund can see all available case studies
- [x] When the "theory" button is clicked, Edmund can see links to more educational material
- [x] Edmund can click on a character to find out more about this case study
- [x] Edmund can learn about ways the character coped with their particular issue
- [x] Edmund can also find links to basic exercises and suggested material for further advice and guidance

## Content

### STORIES

1.  Daniel - married 25 years, has 1 child,
2.  Jorge - 22 years old,
3.  Martin - 32 years old,
4.  Peter - 19 years old,
5.  Mohamed - 36 years old, 9 years married,
6.  Ralph - 44 years old

### THEORY

#### CAUSES

1.  Physical
2.  Psychological
3.  Relational

##### Steps you can take

1.  Cultivate your curiosity
2.  Cultivate openness
3.  Cultivate communication

#### MECHANISM

1.  Appetitive state
2.  Aversive state

#### MYTHS

### RESOURCES

1.  Male Mindful Self Practice
2.  Kegel exercises for men
3.  Sensate focus

## Tech Stack

- React
- React Router
- Pure React Carousel
- Sass
- Styled Components
- Jest
- Travis
- Babel

## How to run/setup local environment

```
$ git clone https://github.com/fac-13/EDDIE.git
```

To build and run the server:

```
$ npm i
$ npm run start
```

### Testing

```
$ cd client
$ npm run test
```


text:
# Normalisation

- Disallow anomalies by removing data redundancy
- What is it?
  - A technique for producing a set of relations with desirable properties, given the data requirements of an enterprise

## First Normal Form

- It's not yet about redundancy
- Each row must only contain one value for each column
- I.e no multi-valued attributes for each column
- Relations obtained by our translation from
  conceptual to logical design are automatically
  in 1NF

## Second Normal Form

- A relation in 1NF such that every non-primary-key attribute is fully functionally dependent on the primary key, is in 2NF

## Third Normal Form

- A relation that is in 2NF and in which no non-primary-key attribute is transitively dependent on the primary key is in 3NF

### Transitive Dependency

- If A -> B and B -> C, then C is transitively dependent on A via B

## Summary

- Every field in a record must depend on
  - The key, (1NF)
  - The whole key (2NF)
  - And nothing but the key (3NF)

## Keys

- Candidate keys
  - It can be used as a key
- Primary keys
  - Primary key attribute replaced by
    - Prime attribute: an attribute which is part of any candidate key

## General Definition Of 2NF/3NF

- 2NF:
  - A relation in 1NF such that every non-prime attribute is fully functionally dependent on all candidate keys, is in 2NF
- 3NF:
  - A relation that is in 2NF and for which no non-prime attribute is transitively dependent on some candidate key, is in 3NF

## Boyce-Codd Normal Form (BCNF)

- A relation is in BCNF, if and only if, every determinant of a full dependency is a candidate key
  - BCNF is a stronger form of 3NF
  - Can we have X -> A where A is a prime attribute and X is not a key?
    - Yes in 3NF, not in BCNF

## More Normalisation

- There is 4NF and 5NF
- In practice, many DBs are de-normalised to a certain extent

## Pros/Cons

- For online transactional DBs, one usually normalises to 3NF to avoid anomalies (OLTP)
- For onine analytical processing, where one works with "fixed" data it is advantageous to use de-normalised DBs because it's faster since there's no need to use joins (OLAP)

repository: eniallator/Databases-Notes

repo_name: eniallator/Databases-Notes


text:
# About mkmf-cu

mkmf-cu is a gem to build Ruby extensions written in C/C++ with NVIDIA CUDA.
It consists of a simple wrapper command for nvcc and a monkey patch for mkmf.

## How to use it.

Instead of require "mkmf", just
```ruby
require "mkmf-cu"
```

## How does it work?

By requiring "mkmf-cu", compiler commands defined in mkmf
will be replaced with mkmf-cu-nvcc, a command included in this gem.

When mkmf-cu-nvcc is called with arguments for gcc or clang,
it convert them to ones suitable for nvcc and execute nvcc with them.

For example,

    mkmf-cu-nvcc -I. -fno-common -pipe -Os -O2 -Wall -o culib.o -c culib.cu

will execute

    nvcc -I. -O2 -o culib.o -c culib.cu --compiler-options -fno-common --compiler-options -Wall

## Example

* https://github.com/ruby-accel/ruby-cuda-example

## Notice

When the suffix of the name of a file containing CUDA code is not .cu,
you must add the option "-x cu" to $CFLAGS or $CXXFLAGS in extconf.rb.

repository: ruby-accel/mkmf-cu

gha_language: Ruby

repo_name: ruby-accel/mkmf-cu


text:
# serverless-package-external 📦

[![serverless](http://public.serverless.com/badges/v3.svg)](http://www.serverless.com)
[![semantic-release](https://img.shields.io/badge/%20%20%F0%9F%93%A6%F0%9F%9A%80-semantic--release-e10079.svg)](https://github.com/semantic-release/semantic-release)
[![npm version](https://badge.fury.io/js/serverless-package-external.svg)](https://badge.fury.io/js/serverless-package-external)
[![Build Status](https://travis-ci.com/epsagon/serverless-package-external.svg?branch=master)](https://travis-ci.com/epsagon/serverless-package-external)

> Deploy a Serverless Python Function services with external code

Before deploying, this plugin symlinks folders containing shared code into the root directory of your Serverless function.
This plugin works also with `serverless-offline` plugin.

### Installation

```
npm i serverless-package-external --save-dev
```

### Usage

```yml
service: service-name

plugins:
  - serverless-package-external

functions:
  # Your functions here

custom:
  packageExternal:
    external:
      - '../common'
      - '../service-a/module'
```

#### Example Directory Structure

```
└── common
    └── resource.py
└── service-a
    └── handler.py
    └── serverless.yml
    └── module
        └── main.py
└── service-b
    └── handler.py
    └── serverless.yml
```

In handler.py, external code can be imported:
```py
from common.resource import shared_resource
```

#### Licensing

serverless-package-external is licensed under the [MIT License](./LICENSE.txt).

It is originally based on [serverless-package-common](https://github.com/onlicar/serverless-package-common).

repository: epsagon/serverless-package-external

repo_name: epsagon/serverless-package-external


text:
+++
Categories = ["Plone","Volto"]
Description = ""
Tags = ["Plone","Volto"]
date = "2019-12-11T21:35:24+01:00"
title = "A Volto gotcha when dealing with async calls"

+++

Just some quick notes, in case this might help someone. After quite a bit of time and tests in trying to use ``asyncConnect`` to get data in a Volto component view (strictly focusing on the SSR side), I've realized that what I'm trying to do is not supported by the redux-connect library.

In Volto, right now there are two components that use asyncConnect: App.jsx and Search.jsx. The purpose of asyncConnect is to have the server side rendered page "dynamic", depending on the input from the originating request. So, for example, a curl grab on https://volto.kitconcept.com/search?SearchableText=Plone will generate HTML that comes prefilled with the search results, instead of those results being loaded on the client, when they arrive. The use of asyncConnect calls in those two components makes the rendering of those components first wait for the backend data to arrive, then it will render them on the server and feed the populated HTML to the client.

So why couldn't I make use of asyncConnect in my components? There's a ticket on the react-redux Github page that better explains it: https://github.com/makeomatic/redux-connect/issues/45
In short, react-connect loads the async data on router load and is only aware of asyncConnected components if they are a component referenced directly by the router.

I think it's important for Volto to overcome this issue, as it imposes some limitations on what is possible in regular component views. For the moment, these are the options, if you need data that's not already provided by the App.jsx asyncConnect (which loads breadcrumbs, content, navigation, types and workflow):

- customize App.jsx or View.jsx (or any other component that's referenced in ``defaultRoutes``) and asyncConnect your own actions there
- override Plone's serializers to include the data you need, so that you can grab it from the ``state.content``
- move your view to a separate route, where you can use asyncConnect.
- customize routes.js and process the defaultRoutes so that you can point the ``/`` View route to your own asyncConnect wrapper over View.

For the future, here are some libraries that might provide a solution to this problem:

- An article by Mozilla explaining how to do a double rendering: http://farmdev.com/thoughts/107/why-server-side-rendering-in-react-is-so-hard/
- Vue's solution in dealing with this problem: https://github.com/vuejs/vue/pull/9017
- https://github.com/FormidableLabs/react-ssr-prepass
- https://github.com/overlookmotel/react-async-ssr
- https://github.com/ctrlplusb/react-async-component

As far as I understand, there's no drop-in solution, some sort of API needs to be developed on the Volto side, to provide a way for components to declare their SSR prefetch dependencies.

Many thanks to my colleague Mihai Macaneata who has patiently walked with me through understanding the source of this problems. Cheers!


text:
# jme3-recast4j-test-1
This project was born with the aim of creating a bridge API between the recast4j library and jMonkeyEngine.

⚠ This library is still under active development!
Follow me to stay updated on the improvements I am working on.
Write me your suggestions or report any bugs.

⚠ The com.jme3.recast4j.Detour.Crowd package is in the design phase and could vary a lot with each update.

### Recently added features:
- NavMeshAgent that allows you to move the character in the Scene using the NavMesh.
- NavMeshQueryFilter - Specifies which areas to consider when searching the NavMesh.
- NavMeshTools - Use the NavMesh class to perform spatial queries such as pathfinding and walkability tests.
- NavMeshBuildMarkup allows you to control how certain objects are treated during the NavMesh build process, specifically when collecting sources for building.
- IORecast to export **NavMesh** in .obj format.
- Graphic editor to modify the NavMesh generation parameters at Runtime.

# Requirements
The individual projects and their respective requirements used in this demo can be found by following these links.

- [jmonkeyengine](https://github.com/jMonkeyEngine/jmonkeyengine) - A complete 3D game development suite written purely in Java.
- [recast4j](https://github.com/ppiastucki/recast4j) - Java Port of Recast & Detour navigation mesh toolset.
- [Lemur](https://github.com/jMonkeyEngine-Contributions/Lemur) - jMonkeyEngine-based UI toolkit.
- java 11+

The gradle dependencies are as follows.

Gradle
```
ext.jmeVersion = '3.4.0-stable'
ext.recast4jVersion = '1.2.8'

dependencies {
    // Engine
    implementation 'org.jmonkeyengine:jme3-core:' + jmeVersion
    implementation 'org.jmonkeyengine:jme3-desktop:' + jmeVersion
    implementation 'org.jmonkeyengine:jme3-effects:' + jmeVersion
    implementation 'org.jmonkeyengine:jme3-terrain:' + jmeVersion
    implementation 'org.jmonkeyengine:jme3-jbullet:' + jmeVersion
    runtimeOnly 'org.jmonkeyengine:jme3-lwjgl:' + jmeVersion
    runtimeOnly 'org.jmonkeyengine:jme3-jogg:' + jmeVersion
    runtimeOnly 'org.jmonkeyengine:jme3-plugins:' + jmeVersion

    // recast4j
    implementation 'org.recast4j:parent:' + recast4jVersion
    implementation 'org.recast4j:detour-tile-cache:' + recast4jVersion
    implementation 'org.recast4j:detour-crowd:' + recast4jVersion
    implementation 'org.recast4j:detour-extras:' + recast4jVersion
    implementation 'org.recast4j:recast:' + recast4jVersion
    implementation 'org.recast4j:detour:' + recast4jVersion

    // Lemur GUI and Groovy:
    implementation 'com.simsilica:lemur:1.15.0'
    implementation 'com.simsilica:lemur-props:1.1.1'
    implementation 'com.simsilica:lemur-proto:1.12.0'
    runtimeOnly 'org.codehaus.groovy:groovy-jsr223:3.0.8'
}
```

# Documentation
- [jme3-recast4j](https://github.com/MeFisto94/jme3-recast4j-demo/wiki)
- [Recast Navigation for JME](https://wiki.jmonkeyengine.org/docs/3.4/contributions/ai/recast.html)
- [Building Process Slides](https://github.com/capdevon/jme3-recast4j-test-1/blob/main/docs/MikkoMononen_RecastSlides.pdf) - A series of slides that explain the build process of Recast.

# Youtube videos
[Demo](https://www.youtube.com/watch?v=XVWxy30IH7Q)

#
⭐NEW Editor
![Screenshot](images/editor-2.jpg)
Solo NavMesh
![Screenshot](images/buildSoloModified-2.jpg)
Tiled NavMesh
![Screenshot](images/buildTileCache.jpg)
IORecast export .obj
![Screenshot](images/navmesh-obj-export.jpg)

# Credits
Huge thanks to MeFisto94 ad mitm001 for writing the original project this is based on.

license: Unlicense

gha_license_id: Unlicense


text:
Upgrading
=========

v2.x -> v3.x
------------

### Move React+ to `peerDependencies`

Avoids bugs with singleton modules like `react-document-meta`.

#### v2.x

Only the dependency on this module was required.

`package.json`
```javascript
{
  "dependencies": {
    "create-render-4r": "^2.0.0",
  }
}
```

#### v3.x

Universal/React dependencies must be specified, so that they are installed in production.

`package.json`
```javascript
{
  "dependencies": {
    "create-render-4r": "^3.0.0",
    "radium": "^0.15.3",
    "react": "^0.14.6",
    "react-document-meta": "^2.0.0",
    "react-dom": "^0.14.6",
    "react-redux": "^4.0.6",
    "react-router": "^1.0.0",
    "redux": "^3.0.6"
  }
}
```

### `createStore` renamed to `loadStore`

#### v1.x

```javascript
var createStore = require('./my-create-store');

var render4r = createRender4r({
  createStore:  createStore,
  // …
});
```

#### v2.x

```javascript
var loadStore = require('./my-load-store');

var render4r = createRender4r({
  loadStore:    loadStore,
  // …
});
```

v1
--
Initial Release


text:
---
layout: podcast_post
title: "60: Todd Kashdan | The Bright Truth about Your Dark Side"
date: "2018-08-21 05:02"
categories:
tags: [podcast, nonfiction, life, the-jordan-harbinger-show]
author: The Jordan Harbinger Show
rating: 2
play_time: 70
date_published: 2018-06-25
summary: "Channelling anger and frustration positively"
---

## Notes

* There is positive anger, positive frustration
* If a coach gives an angry halftime speech but is not normally angry, it has an
effect vs. a normal passive one
* Entrepreneurs must balance harsh criticism with high praise and giving credit
* Guilt is about a wrong behavior. Shame is about your character. Criminals who
  feel guilt are less likely to recidivide


text:
## 822. Card Flipping Game

You are given two **0-indexed** integer arrays ```fronts``` and ```backs``` of length ```n```, where the ```i```-th card has the positive integer ```fronts[i]``` printed on the front and ```backs[i]``` printed on the back. Initially, each card is placed on a table such that the front number is facing up and the other is facing down. You may flip over any number of cards (possibly zero).

After flipping the cards, an integer is considered **good** if it is facing down on some card and **not** facing up on any card.

Return *the minimum possible good integer after flipping the cards*. If there are no good integers, return ```0```.

It can be shown that 2 is the minimum possible good integer obtainable after flipping some cards.
```
### Example 2:
```
Input: fronts = [1], backs = [1]
Output: 0
Explanation:
There are no good integers no matter how we flip the cards, so we return 0.
```

### Constraints:

* ```n == fronts.length == backs.length```
* ```1 <= n <= 1000```
* ```1 <= fronts[i], backs[i] <= 2000```

repository: stdstring/leetcode

repo_name: stdstring/leetcode


text:
# Redux Certification
##  Store
### what does it do?
 -  Contains all the states of our application.
 -  Can access the statewith the function **getState()**.
 - Updates the state with the function **dispatch(action)**
 - Listens for changes using the **subscribe(listener)** method.
 - Stops listening for changes returning the function of the **subscribe(listener)**  method
 ### how to create a store?

    import { createStore } from 'redux

It is composed by:
1. **Reducer** is a pure function that returns the next state
2. **PreloadState/InitialState** is the initial state of the application the first load call the api. It can be formed by any type of data.
3. **Enhancer** is a function that has the ability to extend redux abilitys using third party libraries. This is an optional parameter.

Usage:

    const store = createStore(
	    reducer,
	    initialState,
	    enhancer
    )

## Action
### what does it do?

 - They are sent using the method **dispatch()** from the store
 - They are the only source of information from the store.
 - They are plain javascript objects.

        const newSong = {
		    type: 'ADD_SONG',
		    payload: 'Despacito'
		}

 - Sending data to the store.

	 `  store.dispatch(newSong)`

## Reducer
### what does it do?

 - It is a pure function.
 - There can be more than one reducer in the application but only ONE store can exists.
 - Returns next state.
### Reducers should not!!!!
 - Modify its arguments/parameters.
 - Do secondary tasks like calling API's.
 - Call NOT-pure functions like Date.now() or Math.random().

        const reducer(state, action) {
	        switch(action.type) {
		        case 'ADD_SONG':
			        return[...state, { title: action.payload }]
	        }
	        default:
		        return state
        }

##Normilizr

Normilizr formats the information that is received by a data base or API.

Normilizr standardization objective is to reduce the redundancy of the information and makes data be more accessible.


text:
---
date: '2007-05-31 22:13:04'
layout: post
comments: true
slug: vpn-between-osx-and-linksys-rv042048
status: publish
title: VPN between OSX and Linksys RV042/048
wordpress_id: '337'
categories:
- Macintosh
- Networking
---

![](http://www.phfactor.net/wp-pics/linksysrv042.jpg)

I've been considering a different firewall router for the home network, and am looking at the [Linksys/Cisco RV042.](http://www.amazon.com/Linksys-RV042-100-4-Port-Router/dp/B0002I7288
)

The unit ships with decent Windows software, but they're silent on the issue of Mac support. From [this excellent article](http://slowcruisin.wordpress.com/2007/01/17/vpn-using-mac-os-x-and-linksys-rv042/) come the instructions and three key tidbits:

  1. It won't work if your Mac is behind a NAT router.

  2. You configure the router under 'PPTP server' and **not **VPN server.

  3. Enter the username/password into 'Internet Connect' and you're good to go.

If you're lucky enough to have [OSX server](http://www.maclive.net/sid/132), a VPN server is built in. I'm not.

Hmm, looks like the RV042 is ~$170 as of 6/07. Not bad. It can do 5 PPTP connections at once, which'd be fine for me. It'd be nice to be able to print from offsite sometimes, and SSH tunnels are a PITA.

repository: phubbard/fnord

extension: markdown

repo_name: phubbard/fnord


text:
# ContainerSSH quick start

This is a quick start example for [ContainerSSH](https://containerssh.io), an SSH server that launches Docker containers and Kubernetes pods.

This example utilizes [docker-compose](https://docs.docker.com/compose/) in a Docker environment to launch ContainerSSH together with a dummy authentication server.

Launch it using `docker-compose up` and then SSH into `localhost` port 2222. You can use the following users:

- `foo` with any password to get an Ubuntu container with SFTP support
- `busybox` with any password to get a Busybox container

Read the [Getting Started](https://containerssh.io/getting-started/) documentation for more information.

repository: ardikabs/ContainerSSH

repo_name: ardikabs/ContainerSSH


text:
# Overview
The extensions of NPOI, which provides IEnumerable<T> save to and load from excel functionality.

![NPOI.Extension demo](images/demo.PNG)

# Features
- [x] Support POCO, so that if your mother langurage is Engilish, none any configuration;
- [x] Support attribute base configuration, this feature will be very useful for English not their mother language developers
- [ ] Decouple the configuration from the POCO model, like `FluentValidation`

# Get Started
## Using Package Manager Console to install NPOI.Extension

        PM> Install-Package NPOI.Extension

## Reference NPOI.Extension in code

        using NPOI.Extension;

## Apply attribute to the model

```csharp
        [Filter(FirstCol = 0, FirstRow = 0, LastCol = 2)]
        [Freeze(ColSplit = 2, RowSplit = 1, LeftMostColumn = 2, TopRow = 1)]
        [Statistics(Name = "合计", Formula = "SUM", Columns = new[] { 6, 7 })]
        public class Report {
            [Column(Index = 0, Title = "城市", AllowMerge = true)]
            public string City { get; set; }
            [Column(Index = 1, Title = "楼盘", AllowMerge = true)]
            public string Building { get; set; }
            [Column(Index = 2, Title = "成交时间")]
            public DateTime HandleTime { get; set; }
            [Column(Index = 3, Title = "经纪人")]
            public string Broker { get; set; }
            [Column(Index = 4, Title = "客户")]
            public string Customer { get; set; }
            [Column(Index = 5, Title = "房源")]
            public string Room { get; set; }
            [Column(Index = 6, Title = "佣金(元)")]
            public decimal Brokerage { get; set; }
            [Column(Index = 7, Title = "收益(元)")]
            public decimal Profits { get; set; }
        }
```

## Export POCO to excel.

```csharp
        var len = 1000;
        var reports = new Report[len];
        for (int i = 0; i < len; i++) {
            reports[i] = new Report {
                    City = "ningbo",
                    Building = "世茂首府",
                    HandleTime = new DateTime(2015, 11, 23),
                    Broker = "RigoFunc 18957139**7",
                    Customer = "RigoFunc 18957139**7",
                    Room = "2#1703",
                    Brokerage = 125M,
                    Profits = 25m
            };

            // other data here...
        }

        // save the excel file
        reports.ToExcel(@"C:\demo.xlsx");
 ```
## Load IEnumerable<T> from excel

```csharp
        // load from excel
        var loadFromExcel = Excel.Load<Report>(@"C:\demo.xlsx");
```

## Custom excel export setting

The POCO export use following setting, so, the end user can costomize the setting like `Excel.Setting.DateFormatter = "yyyy-MM-dd";`

```csharp
    public class ExcelSetting
    {
        public string Company { get; set; } = "rigofunc (xuyingting)";

        public string Author { get; set; } = "rigofunc (xuyingting)";

        public string Subject { get; set; } = "The extensions of NPOI, which provides IEnumerable<T>; save to and load from excel.";

        public bool UserXlsx { get; set; } = true;

        public string DateFormatter { get; set; } = "yyyy-MM-dd HH:mm:ss";
    }
```


text:
# Stuck-Splash-Screen-Fixer-for-P3Dv4.3-5

INFO
--------------------------------------------------------------------------------------------------------------------------------
* Fixes the Splash Screen Freeze when opening P3D. Might work on other versions but only confirmed on v4.3.
* Its just a few minitues effort so Nothing fancy here; it just backs-up your sceanery.cfg, dll.xml, exe.xml and simobjects.cfg file and deletes them. (I just saved you the effort of renaming/deleting the files form the program data/Lockheed/Prepar3d directory)

REQUIREMENTS
--------------------------------------------------------------------------------------------------------------------------------
* This program requires you to have java installed so that you can run the JAR. I will upload an exe build soon.
* If the directory "program data/Lockheed/Prepar3d directory" is not in C:\, this wont work. Let me know if you are one of the few who has the OS loaded in D:\, E:\,...you get it, Let me know (email me) and I will cook something up for you
* Windows 7/8/10 only

RUNNING THE FIX
--------------------------------------------------------------------------------------------------------------------------------
* Unless you want to contribute your coding skills, you only need the "P3DFixer.JAR" file.
* Run as Administrator (Feel free to scan it for what ever)
* The next step is self-explanatory

FUTURE
--------------------------------------------------------------------------------------------------------------------------------
* Its bleak but I will add a 'fix every P3D related problems' magic button on it.
* In seriousness though, I will try to incorporate more bug fixes. Let me know if you stumble on annoying bugs lockheed is ignoring and I will take a look.

DISCLAMER
--------------------------------------------------------------------------------------------------------------------------------
Copyright 2019, OMAOPS

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

 IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


text:
---
title: About Us
feature_text: |
  ## Game Development Society, IIT Kanpur
feature_image: "https://picsum.photos/1300/400?image=989"
layout: page
---

We're passionate about creating video games. With improvements in technology, games are further pushing boundaries and redefining themselves. We're interested in testing these limits and continuously exploring where games can take us as an art form. We’re about creating games and the sheer knowledge one would gain by working on a game would be beneficial in all spheres of life.

[Facebook](https://www.facebook.com/gamedev.iitk/) \| [Discord](https://discord.gg/pThvGHs) \| [GitHub](https://github.com/gamedev-iitk/)

## Activities

We regularly host lectures, workshops, game jams and more! Here are some of them.

### Introduction to Video Game Development

![lec1](/assets/lec1.jpg)

An introductory lecture to give an overview of what game development is about. We split the process into three broad sections - programming, design and art. The programming section went over frameworks, game engines, gameplay programming and graphics programming. The design section went over gameplay systems, story and level design. The art section went over choosing a style to complement the game, some popular tools to create 3D art and some examples of actual games. Slides can be found [here](https://docs.google.com/presentation/d/1KRyublzorT5SvWph-tumIEEnLkqCrWzOOCH7cuQMYVw/edit?usp=sharing).

### Making Games with Unity

![work1](/assets/work1.jpg)

A 3-hour hands-on workshop with Unity. We created a very simple game from scratch but with free assets from the Unity marketplace to demonstrate the entire process of creating a game. Concepts were emphasized, which allows one to switch to some other engine in the future if Unity is not suited to their needs. The final result was meant to cover all important areas of game development like coordinate systems, cameras, rigidbody physics, animation graphs, AI and navigation meshes, character controllers and input handling, etc. The complete code can be seen [here](https://github.com/gamedev-iitk/low-poly-dodgeball).

### Introduction to Art in Games

Notes to help people start creating 3D assets for games with Blender. Mainly refers to the excellent doughnut tutorial by [BlenderGuru](https://www.youtube.com/playlist?list=PLxLGgWrla12dEW5mjO09kR2_TzPqDTXdw), with links to helpful resources to further explain the concepts behind what is what. Covers meshes and modelling with modifiers, sculpting, materials and textures, UV mapping, texture painting, particles, basics of lighting, rendering and compositing. We also go through two GDC talks ([Fortnite](https://www.youtube.com/watch?v=498KToofNf8) and [Firewatch](https://www.youtube.com/watch?v=SdxQ3HlhTE8)) explaining their art design choices and the reasons behind what makes their styles successful. Slides can be found [here](https://docs.google.com/presentation/d/1ssNHy0QoTJPN7iKaRXsq1DeZal9rQTwYrj-TicSZj2c/edit?usp=sharing).

### The Indefinite Break Jam

A 72-hour gamejam in the COVID-19 break to do something productive with the free time at home and create a fun game. The jam was hosted on itch.io and the page can be found [here](https://itch.io/jam/iitk-game-jam).

### Summer Tower Defense

We are currently working on a fantasy tower defense game with Unity.


text:
# NgSelect

Simple wrapper around [ng-select](https://github.com/ng-select/ng-select), intended to align look and feel plus some common behavior for ng-holistic.

use with
`@import "~@ng-select/ng-select/themes/default.theme.css";`

Requires `ng-select` as peer dependency

You may want to add this field to you layout definition type

```
    export interface NgSelectField
        extends ClrFormFields.BaseField<
            'NgSelectField',
            string,
            {
                placeholder?: FormFields.FormFieldProp<any>;
                items?: FormFields.FormFieldProp<any>;
                typeaheadFun?: (term$: Observable<string>) => Observable<any[]>;
                multiple?: boolean;
                appendTo?: string;
                searchable?: boolean;
                dropdownPosition?: 'top';
                oneRow?: boolean;
            }
        > {}
```

repository: scalio/ng-holistic

gha_language: TypeScript

repo_name: scalio/ng-holistic


text:
# `BCB420-2019 Resources`

###### [Boris Steipe](https://orcid.org/0000-0002-1134-6758),
###### Department of Biochemistry and Department of Molecular Genetics,
###### University of Toronto
###### Canada
######<EMAIL_ADDRESS>
----

This repository contains course material for the 2019 course in Computational Systems Biology at the University of Toronto. It is unlikely to be useful to anyone not actively participating in the course.

----

### Utilities

`source()` these files to use the functions.

* `toBrowser.R`: Render a markdown file to html in `tempdir()` and display it in the user's default browser.

### Data resources, templates and scripts

* `HGNC.RData`: reference symbols and identifiers for human genes from the Human Gene Nomenclature Committee.
* `HGNCdata.R`: The script that produced `HGNC.RData` (for reference)
* `dataModel.md`: Introduction to the systemDB database schema. Type ```toBrowser("dataModel.md")``` to study it.
* `dataSources.md`: Overview of data sources for the data project. Type ```toBrowser("dataSources.md")``` to access the document.
* `exampleGeneSet.md`: background to a set of genes associated with the phagosome-lysosome fusion system. This forms our example set for data annotation as a basis to develop data integration workflows.  Type ```toBrowser("exampleGeneSet.md")``` to study it.

* `PHALY_facts.txt`: a sample file of facts from the PHALY system, in a structured text format.
* `text2tsv.R`: an R script to parse a file of structured-text system facts and write tsv text to console that is suitable to be copy/pasted into an Excel spreadsheet for preparation of the systems database.
* `BCB420-2019-System-XXXXX-0.0.xlsx`: an Excel spreadsheet template with a sheets to hold a system table, a system components table, and a components table.
* `BCB420-2019-System-PHALY-0.1.xlsx`: an Excel spreadsheet example, filled with data from the PHALY system.

<!-- END -->


text:
---
title: Kubes vs Custom Solutions
nav_text: Custom Solutions
categories: vs
---

Kubernetes provides a great platform to run and manage Docker containers. The `kubectl` command is usually how you interact with a Kubernetes cluster.  It does its job well and is quite a powerful tool.

{% include vs/article.md %}

## Kubernetes Questions

With Kubernetes, you usually use `kubectl` commands to deploy Docker images and run them on a Kubernetes cluster. As you get your Kubernetes applications production-ready, you'll have to answer many questions:

* How do you create multiple environments like dev and prod with the same code and not duplicate the YAML?
* How you handle creating service accounts and managing cloud permissions like AWS IAM, Google Service Accounts, etc?
* How will we build the Docker image and update Docker image?
* How do you deploy updated Kubernetes YAML settings in a controlled manner?

## Kubectl with Simple Wrappers

Most folks start off with `kubectl` commands to create their Kubernetes resources. It's simple. It's also important to learn how to use `kubectl` commands to establish fundamentals. Eventually, you grow tired of typing the same commands repeatedly, though.  Example:

kubectl-wrapper.sh

    kubectl apply -f service.yaml
    kubectl apply -f deployment.yaml

Bash shines for simple scripts and light glue, but it can quickly get messy as the script takes on more things to do.

## Multiple Envs Duplication

One way to create different env like dev and prod is to copy their YAML files. Here's a naive example structure:

    ├── dev
    │   ├── deployment.yaml
    │   └── service.yaml
    └── prod
        ├── deployment.yaml
        └── service.yaml

We then write a wrapper script that selects the folder:

kubectl-wrapper.sh

    KUBE_ENV=${1:-dev}
    kubectl apply -f $KUBE_ENV/service.yaml
    kubectl apply -f $KUBE_ENV/deployment.yaml

We've duplicated `service.yaml` and `deployment.yaml`, though. Instead, it'll be nice if we use the same YAML and create a different env like dev and prod with it. Things like `envsubst` to replace variables from the same "template" YAML files can help. As requirements increases, the simple bash glue scripts end up getting messy.

## PreBuilt Docker Image

Additionally, the Docker image is expected to be prebuilt. Because you must first build the Docker image, folks will usually write bash script that performs these additional steps and then glue things together.

## Kubernetes Resources Galore

Kubernetes has a large service area, and there are so many resource Kinds that we can create that it's difficult for a simple wrapper script to handle enough control for your needs.

## Kubes Makes It Easier

Kubes is a Kubernetes Deployment Tool that automates the following:

1. It builds the docker image
2. Creates the Kubernetes YAML
3. Runs kubectl apply

Kubes works transparently and straightforwardly. The deploy command simply do all 3 steps: build, compile, and apply.

    kubes deploy

### Layering: Multiple Environments like dev and prod

To deploy and create multiple environments like dev and prod with the same YAML, we use a different KUBES_ENV setting:

    KUBES_ENV=dev kubes deploy
    KUBES_ENV=prod kubes deploy

The same code is used to create different environments. Kubes achieves this with a feature called Layering. The concept is similar to Kustomize overlays. Here's the general layering processing order that Kubes takes.

* [Layering Docs]({% link _docs/layering.md %})

## Hooks

Kubes support a variety of hooks run scripts at any part of the `kubectl` commands. This allows you to customize and add app-specific logic needed. Example:

.kubes/config/hooks/kubectl.rb

```ruby
before("apply",
  on: "web/deployment",
  execute: "echo 'before apply hook test'",
)

after("delete",
  on: "web/deployment",
  execute: "echo 'after delete hook test'",
)
```

There are also [cloud helpers]({% link _docs/helpers.md %}) that will handle things like Secrets and IAM Account creation.

* [Kubes Kubectl Hooks Docs]({% link _docs/config/hooks/kubectl.md %})

## Summary

Many companies roll their own custom solutions. Chances are that the `kubectl` wrapper scripts eventually grow into messy glue. Every time you go to another company, you must relearn and figure out the home-grown solution's particularities. Even within companies, going from team to team, there may be different scripts that are their own unique beasts. It's a science project.

Kubes provides a tool that streamlines the `kubectl` deployment already. Kubes also works in a transparent and straightforward manner. You know what's going on. It's also extendable and customizable. You can add business logic that you wish.  Kubes provides convenient tooling and helps you get things done quickly.

repository: edwinitdekker/kubes

repo_name: edwinitdekker/kubes