Blog

  • Startcraft_pysc2_minigames

    GitHub license GitHub issues GitHub stars GitHub forks Twitter

    Startcraft PySC2 mini-games and agents

    This repository aims to serve as a guide for open source contributing in minigame pysc2 library for Starcraft II For minigame instalation for execution you should go to the official repository and install requirements

    Direct Links

    Please, if you want to reach directly mini-games click to the following link

    Minigame task description

    Minigames come as a controled environments that might be useful to exploit game features in SC2. General purpose learning system for Startcraft 2 can be a daunting task. So there is a logical option in splitting this tasks into minitask in orther to advance in research . Mini-games focus on different elements of Starcraft II Gameplay .

    To investigate elements of the game in isolation, and to provide further fine-grained steps towards playing the full game, Deepmind has built several mini-games. These are focused scenarios on small maps that have been constructed with the purpose of testing a subset of actions and/or game mechanics with a clear reward structure. Unlike the full game where the reward is just win/lose/tie, the reward structure for mini-games can reward particular behaviours (as defined in a corresponding .SC2Map file).

    Minigame introduction and Repo information

    Before creating a minigame, I encourage you to run the alredy developed ones to see wich task are subdivided into each minigame as the reward function could be important due to the behaviour that leads to learning . The minigame title gives us a description of the goal You might find in this repo new maps created for investigate in explotation-exploration dilema and some programming about the functions of different units .

    SentryDefense , ForceField , HallucinIce and FlowerFields Projects

    In this repo, besides information about current minigames, you will find my own minigames development . In projects section you can know more about the state of the art and in docs and new_minigames folder you can find the map. In SentryDefense, a arrowhead TerranVSProtoss Melee is proposed . In ForceField,an imbalanced situation between Sentry and Zerg units forces sentry to use forcefield, adding terrain disposition.

    1.- SentryDefense: Protoss VS Terran Melee.

    2.- ForceField: Learn about Sentry forcefield function.

    3.- HallucinIce: Learn how to play with hallucination.

    4.- FlowerFields: Defeat protoss photon cannon .

    5.-TheRightPath: Move to beacon finding the optimal route collecting minerals and avoiding mines .

    6.-RedWaves: Choose your race and defend against waves of zerg attacks .

    7.-BlueMoon: Choose unit development to defend against protoss development . (under construction)

    8.-MicroPrism: Learn how to use Warp Prism in a protoss versus protoss stalker melee

    Agents

    Regarding scripted agent, there is a python file with several developments. Scriptedagent.py is focused on HallucinIce map in which makes Archon Hallucination. Besides there is another class that put all hallucination actions on a list and the agent chooses randomly in between those actions .

    Q-Learning and DQN agents are provided for HallucinIce minigame with the new PySC2 release

    An A3C trained agent has been tested with several minigames, reaching some of them a local optima . Please, report problems in issues if you currently find problems .

    How to run mini-games in your environment

    1. Download or clone the repository, or download all minigames clicking here

    2. Place the .SC2 files into /Applications/StarCraft II/Maps/mini_games/ -sometimes the Map folder might not exist. If so, please create it-

    3. Go to pysc2\maps\mini_games.py and add to mini-games array the following mini-games names

    mini_games = [  ## This mini-games names should alredy been in your list
        "BuildMarines",  # 900s
        "CollectMineralsAndGas",  # 420s
        "CollectMineralShards",  # 120s
        "DefeatRoaches",  # 120s
        "DefeatZerglingsAndBanelings",  # 120s
        "FindAndDefeatZerglings",  # 180s
        "MoveToBeacon",  # 120s   ##Now you add this few lines 
        "SentryDefense", # 120s
        "ForceField", # 30s
        "HallucinIce", # 30s
        "FlowerFields", # 60s
        "TheRightPath", # 300s
        "RedWaves", # 180s
        "BlueMoon", # 60s
        "MicroPrism", # 45s
    ]
    1. In your console, you can type the mini-game map name
    my-computer:~ me$ python -m pysc2.bin.agent --map FlowerFields 

    Tutorial

    Find an ongoing tutorial about how to create your own mini-game here

    Other repository

    With features with map placement here

    ‘Making a reward function isn’t that difficult. The difficulty comes when you try to design a reward function that encourages the behaviors you want while still being learnable.’ -Deep Reinforcement Learning Doesn´t work yet , Alex Irpan post

    Visit original content creator repository https://github.com/SoyGema/Startcraft_pysc2_minigames
  • react-amap

    React AMap

    基于 React 封装的高德地图组件,助你轻松的接入高德地图到 React 项目中。

    Forks Stars npm version

    本仓库提供了常用的地图组件,如不满足您的需求:

    1. 请在 issues 提出需求。
    2. 提 PR 扩展组件。
    3. 使用提供的自定义组件的能力,自己封装。

    注意

    由于高德APIv1v2兼容性问题,本仓库提供对应的版本

    • v1.x.x 对应 amap v1
    • v2.x.x 对应 amap v2

    ✨ 特性

    • 📦 开箱即用,封装了大部分常用的地图组件
    • 🎉 可扩展,支持自定义地图组件
    • 💻 使用 TypeScript 编写,提供完善的类型定义,包含高德地图 JS SDK 类型声明

    🏗 安装

    # npm install
    $ npm install @pansy/react-amap --save
    
    # yarn install
    $ yarn add @pansy/react-amap
    
    # pnpm install
    $ pnpm i @pansy/react-amap

    🔨 使用

    <div id="app"></div>
    #app {
      width: 600px;
      height: 400px;
    }
    import React from 'react';
    import ReactDOM from 'react-dom';
    import { Map } from '@pansy/react-amap';
    
    ReactDOM.render(
      <Map mapKey={YOUR_AMAP_KEY} />,
      document.querySelector('#app')
    )

    🎉 组件列表

    地图

    名称 说明
    APILoader JS API加载
    Map 地图组件

    图层

    名称 说明
    Heatmap 热力图
    Satellite 卫星图
    Traffic 实时交通图层

    点标记

    名称 说明
    ElasticMarker 灵活点标记
    Marker 点标记
    MarkerCluster 点聚合
    MassMarks 海量点类

    信息窗体

    名称 说明
    InfoWindow 信息窗体

    右键菜单

    名称 说明
    ContextMenu 右键菜单

    矢量图形

    名称 说明
    BezierCurve 贝塞尔曲线
    Circle 圆形
    CircleMarker 圆点标记
    Ellipse 椭圆
    Polygon 多边形
    Polyline 折线
    Rectangle 矩形

    工具

    名称 说明
    MouseTool 鼠标工具
    RangingTool 距离量测
    BezierCurveEditor 贝瑟尔曲线编辑
    CircleEditor 圆形编辑
    EllipseEditor 椭圆编辑
    PolyEditor 折线/多边形编辑
    PolygonEditor 多边形编辑
    PolylineEditor 折线编辑
    RectangleEditor 矩形编辑

    地图控件

    名称 说明
    ControlBar 3D控制组件
    HawkEye 地图鹰眼
    MapType 地图类型切换
    Scale 比例尺
    ToolBar 工具条

    搜索

    名称 说明
    AutoComplete 关键字搜索
    DistrictSearch 行政区查询

    地理编码

    名称 说明
    Geocoder 地理编码与逆地理编码服务

    AMapUI

    名称 说明
    PathNavigator 轨迹巡航控制
    PointSimplifier 海量点展示

    Loca

    名称 说明
    ScatterLayer 动画图层
    PulseLinkLayer 连接飞线图层

    👥 社区互助

    Github Issue 钉钉群 微信群
    issues
    Visit original content creator repository https://github.com/pansyjs/react-amap
  • redcap

    REDCap

    JavaScript Style Guide current version install size

    classes for interacting with REDCap projects

    REDCapAPI

    an opinionated, JSON-only, zero-dependency REDCap API implementation as an ECMAScript module

    Example

    import REDCapAPI from '@robireton/redcap/api'
    
    const endpoint = process.env.REDCAP_ENDPOINT
    const token = process.env.REDCAP_TOKEN
    
    const project = new REDCapAPI(endpoint, token)
    console.log(await project.metadata())

    Constructor

    REDCapAPI(endpoint, token)

    name value
    endpoint a URL or string to connect to – e.g. https://redcap.server.org/api/
    token the API token specific to your REDCap project and username (each token is unique to each user for each project)

    Instance methods

    name value
    options an optional object with extra parameters for REDCap API calls

    async version()

    returns the current REDCap version number as plain text (e.g., 4.13.18, 5.12.2, 6.0.0)

    async project ()

    returns an object with the following fields:

    • project_id
    • project_title
    • creation_time
    • production_time
    • in_production
    • project_language
    • purpose
    • purpose_other
    • project_notes
    • custom_record_label
    • secondary_unique_field
    • is_longitudinal
    • has_repeating_instruments_or_events
    • surveys_enabled
    • scheduling_enabled
    • record_autonumbering_enabled
    • randomization_enabled
    • ddp_enabled
    • project_irb_number
    • project_grant_number
    • project_pi_firstname
    • project_pi_lastname
    • display_today_now_button
    • missing_data_codes
    • external_modules
    • bypass_branching_erase_field_prompt

    async metadata (options)

    returns an array of data dictionary objects

    options
    • fields: an array of field names specifying specific fields you wish to pull (default: all fields)
    • forms: an array of form names specifying specific data collection instruments for which you wish to pull metadata (default: all instruments)

    async records (options)

    returns an array of record objects

    options
    • type: flat (default) — one record per row or eavone data point per row
    • records: an array of record names specifying specific fields you wish to pull (default: all records)
    • fields: an array of field names specifying specific fields you wish to pull (default: all fields)
    • forms: an array of form names specifying specific data collection instruments for which you wish to pull metadata (default: all instruments)
    • events: an array of unique event names that you wish to pull records for (longitudinal projects only)
    • more… c.f. full REDCap API specification

    async events (options)

    async arms (options)

    async fields (options)

    Returns an array of the export/import-specific version of field name objects for all fields (or for one field, if desired). Each object will contain: original_field_name, choice_value, and export_field_name. The choice_value attribute represents the raw coded value for a checkbox choice. For non-checkbox fields, the choice_value attribute will always be blank/empty. The export_field_name attribute represents the export/import-specific version of that field name.

    async instruments ()

    returns an array of instrument (Data Entry Form) objects

    async mapping (options)

    async repeating ()

    async write (data, options)

    async file (options)

    async upload (file, options)

    REDCapProject

    class for working with project structure and data; uses REDCapAPI or local JSON files

    Example

    import REDCapAPI from '@robireton/redcap/project'
    
    const endpoint = process.env.REDCAP_ENDPOINT
    const token = process.env.REDCAP_TOKEN
    
    const project = new REDCapProject(endpoint, token)
    await project.populate()
    
    console.log(project.info.title)
    for (const instrument of project.instruments) {
      console.log(instrument.label)
      for (const record of instrument.records) {
        
      }
    }

    Constructor

    REDCapProject(endpoint, token)

    name value
    endpoint a URL or string to connect to – e.g. https://redcap.server.org/api/
    token the API token specific to your REDCap project and username (each token is unique to each user for each project)

    Alternately, if endpoint/token resolves to an existing filesystem folder with appropriately-named JSON files, these will be used instead of REDCapAPI.

    Instance methods

    async populate ()

    This must be run before any instance members are accessible.

    getInstrument (name)

    returns a REDCapInstrument object, which includes the records

    REDCapProjectInformation

    REDCapField

    REDCapInstrument

    REDCapDatetime

    Visit original content creator repository https://github.com/robireton/redcap
  • austation

    AuStation 13 Codebase

    forthebadge forthebadge forinfinityandbyond Build Status Open Issues

    Website: https://austation.net Code: https://github.com/austation/austation Wiki: https://wiki.beestation13.com/view/Main_Page (For Now)

    DOWNLOADING

    There are a number of ways to download the source code. Some are described here, an alternative all-inclusive guide is also located at https://wiki.beestation13.com/view/Downloading_the_source_code

    Option 1: Follow this: https://wiki.beestation13.com/view/Guide_to_git Clone the repository using git clone.

    Option 2: Download the source code as a zip by clicking the ZIP button in the code tab of https://github.com/austation/austation (note: this will use a lot of bandwidth if you wish to update and is a lot of hassle if you want to make any changes at all, so it’s not recommended.)

    Option 3: Use our docker image that tracks the master branch (See commits for build status. Again, same caveats as option 2)

    docker run -d -p <your port>:1337 -v /path/to/your/config:/beestation/config -v /path/to/your/data:/beestation/data beestation/beestation <dream daemon options i.e. -public or -params>
    

    INSTALLATION

    You can no longer compile the codebase simply through Dream Maker.

    Building AuStation in Dream Maker directly is now deprecated and might produce errors, such as 'tgui.bundle.js': cannot find file.

    Building with VSCode (Preferred)

    How to compile in VSCode and other build options.

    Building without VSCode

    You will find BUILD.bat in the root folder of BeeStation, double-clicking it will initiate the build. It consists of multiple steps and might take around 1-5 minutes to compile (particularly the first time). Unix users can directly call ./tools/build/build.

    If you see any errors or warnings, something has gone wrong – possibly a corrupt download or the files extracted wrong. If problems persist, ask for assistance in https://discord.gg/Vh8TJp9 or https://discord.gg/ZTGQAqB

    Once that’s done, open up the config folder. You’ll want to edit config.txt to set the probabilities for different gamemodes in Secret and to set your server location so that all your players don’t get disconnected at the end of each round. It’s recommended you don’t turn on the gamemodes with probability 0, except Extended, as they have various issues and aren’t currently being tested, so they may have unknown and bizarre bugs. Extended is essentially no mode, and isn’t in the Secret rotation by default as it’s just not very fun.

    You’ll also want to edit config/admins.txt to remove the default admins and add your own. “Game Master” is the highest level of access, and probably the one you’ll want to use for now. You can set up your own ranks and find out more in config/admin_ranks.txt

    The format is

    byondkey = Rank
    

    where the admin rank must be properly capitalised.

    This codebase also depends on a native library called rust-g. A precompiled Windows DLL is included in this repository, but Linux users will need to build and install it themselves. Directions can be found at the rust-g repo.

    Finally, to start the server, run Dream Daemon and enter the path to your compiled austation.dmb file. Make sure to set the port to the one you specified in the config.txt, and set the Security box to ‘Safe’. Then press GO and the server should start up and be ready to join. It is also recommended that you set up the SQL backend (see below).

    UPDATING

    Just use git, or see the following subsection.

    Manual Update

    To update an existing installation, first back up your /config and /data folders as these store your server configuration, player preferences and banlist.

    Then, extract the new files (preferably into a clean directory, but updating in place should work fine), copy your /config and /data folders back into the new install, overwriting when prompted except if we’ve specified otherwise, and recompile the game. Once you start the server up again, you should be running the new version.

    HOSTING

    Hosting requires the Microsoft Visual C++ 2015 Redistributable. Specifically, vc_redist.x86.exe. Not the 64-bit version. There is a decent chance you already have it if you’ve installed a game on Steam.

    If you’d like a more robust server hosting option, check out tgstation’s server tools suite at https://github.com/tgstation/tgstation-server

    MAPS

    AuStation currently comes equipped with these maps.

    All maps have their own code file that is in the base of the _maps directory. Maps are loaded dynamically when the game starts. Follow this guideline when adding your own map, to your fork, for easy compatibility.

    The map that will be loaded for the upcoming round is determined by reading data/next_map.json, which is a copy of the json files found in the _maps tree. If this file does not exist, the default map from config/maps.txt will be loaded. Failing that, BoxStation will be loaded. If you want to set a specific map to load next round you can use the Change Map verb in game before restarting the server or copy a json from _maps to data/next_map.json before starting the server. Also, for debugging purposes, ticking a corresponding map’s code file in Dream Maker will force that map to load every round.

    If you are hosting a server, and want randomly picked maps to be played each round, you can enable map rotation in config.txt and then set the maps to be picked in the maps.txt file.

    Anytime you want to make changes to a map it’s imperative you use the Map Merging tools

    AWAY MISSIONS

    AuStation supports loading away missions however they are disabled by default.

    Map files for away missions are located in the _maps/RandomZLevels directory. Each away mission includes it’s own code definitions located in /code/modules/awaymissions/mission_code. These files must be included and compiled with the server beforehand otherwise the server will crash upon trying to load away missions that lack their code.

    To enable an away mission open config/awaymissionconfig.txt and uncomment one of the .dmm lines by removing the #. If more than one away mission is uncommented then the away mission loader will randomly select one the enabled ones to load.

    SQL SETUP

    The SQL backend requires a MariaDB server running 10.2 or later. MySQL is not supported. The database is required for the library, stats tracking, admin notes, bans, and persistent characters/preferences. Your server details go in /config/dbconfig.txt, and the SQL schema is in /SQL/beestation_schema.sql.

    More detailed setup instructions are located here: https://wiki.beestation13.com/view/Working_with_the_database#Database_Setup

    WEB/CDN RESOURCE DELIVERY

    Web delivery of game resources makes it quicker for players to join and reduces some of the stress on the game server.

    1. Edit compile_options.dm to set the PRELOAD_RSC define to 0
    2. Add a url to config/external_rsc_urls pointing to a .zip file containing the .rsc.
      • If you keep up to date with BeeStation you could reuse their rsc cdn at http://rsc.beestation13.buzz/beestation.zip. Otherwise you can use cdn services like CDN77 or cloudflare (requires adding a page rule to enable caching of the zip), or roll your own cdn using route 53 and vps providers.
      • Regardless even offloading the rsc to a website without a CDN will be a massive improvement over the in game system for transferring files.

    IRC BOT SETUP

    Included in the repository is a python3 compatible IRC bot capable of relaying adminhelps to a specified IRC channel/server, see the /tools/minibot folder for more

    CONTRIBUTING

    Please see CONTRIBUTING.md

    LICENSE

    All code after commit 333c566b88108de218d882840e61928a9b759d8f on 2014/31/12 at 4:38 PM PST is licensed under GNU AGPL v3.

    All code before commit 333c566b88108de218d882840e61928a9b759d8f on 2014/31/12 at 4:38 PM PST is licensed under GNU GPL v3. (Including tools unless their readme specifies otherwise.)

    See LICENSE and GPLv3.txt for more details.

    tgui clientside is licensed as a subproject under the MIT license. Font Awesome font files, used by tgui, are licensed under the SIL Open Font License v1.1 tgui assets are licensed under a Creative Commons Attribution-ShareAlike 4.0 International License. The TGS3 API is licensed as a subproject under the MIT license.

    See tgui/LICENSE.md for the MIT license. See tgui/assets/fonts/SIL-OFL-1.1-LICENSE.md for the SIL Open Font License. See the footers of code/__DEFINES/server_tools.dm, code/modules/server_tools/st_commands.dm, and code/modules/server_tools/st_inteface.dm for the MIT license.

    All assets including icons and sound are under a Creative Commons 3.0 BY-SA license unless otherwise indicated.

    Other Codebase Credits

    • /tg/, for the codebase.
    • CEV Eris, for the PDA sprites
    • TGMC, for the custom keybinds base
    • Citadel, for their beautiful lighting
    Visit original content creator repository https://github.com/austation/austation
  • glypher

    Glypher

    Browser extension for quick copy’n’paste of miscellaneous characters

    (Psst! See the accompanying presentation about browser extension development! 👍)

    Glypher logo

    Contents:

    1. Installation
    2. Usage
    3. Development
    4. Credits

    1. Installation

    (For now, only as a temporary extension)

    Firefox:

    1. Go to about:debugging#/runtime/this-firefox
    2. Click on Load Temporary Add-on…
    3. Select the manifest (dist/firefox/manifest.json)

    Chrom*:

    1. Go to chrome://extensions/
    2. Click on Developer mode
    3. Click on Load unpacked
    4. Select the directory (dist/chrome/)

    2. Usage

    Bring up the glyphs pop-up by either:

    • Clicking the icon on the toolbar,
      Icon
    • or pressing Alt+U (+U on Mac)

    Then, on the glyphs pop-up, find the symbol you need, double-click it to select, and copy it to the clipboard.

    Screenshot

    Press either Esc or to close the pop-up, and paste the glyph wherever needed.

    NB: this is not the intended final behaviour: usage will be seamless when we implement the ability to move around the glyphs using the cursor keys, and then use to automatically copy the highlighted glyph to the clipboard and immediately close the pop-up. That way, the whole operation is a handful of key strokes, and the user does not need to use the mouse at all.

    3. Development

    Prerequisites: Bash and jq.

    ./build.sh

    Then, find the resulting temporary extensions under dist/firefox/ and dist/chrome/.

    4. Credits

    Copyright © 2019–2021 tripu (t@tripu.info, https://tripu.info)

    This project is licenced under the terms of the MIT licence.

    Logo: A-small glyphs.svg licenced CC0 by Wickey-nl

    Visit original content creator repository https://github.com/tripu/glypher
  • lifxi

    lifxi

    Build Status Crates.io Documentation

    Control LIFX devices over (eventually LAN and) the internet.

    Getting Started

    This crate currently only supports control via the web API. To get started, go to the LIFX account settings page and create an access token.

    The Client struct is the entry point for all functionality in this crate. It’s advised to have a single instance of this client, as it holds a connection pool. Depending on your architecture, the lazy-static crate may be a good choice:

    lazy_static! {
        static ref CLIENT: Client = Client::new("secret");
    }

    Here’s a simple demo to ensure everything’s working:

    use lifxi::http::*;
    fn main() {
        let client = Client::new("your secret here");
        let _result = client
            .select(Selector::All)
            .set_state()
            .power(true)
            .color(Color::Red)
            .brightness(0.4)
            .send();
    }

    If running that example results in all of your LIFX bulbs turning on and changing to red, you’re in business! Head over to the docs to see more.

    Contributing

    Contributions are welcome! Submit a pull request, file an issue, or feel free to just discuss in the comments. The LIFX HTTP API documentation and LAN protocol documentation will likely be helpful in any development efforts.

    Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as below, without any additional terms or conditions.

    License

    Licensed under the Apache License, Version 2.0 or the MIT License, at your option.

    Visit original content creator repository https://github.com/Aehmlo/lifxi
  • vlsi-release-plugins

    CI Status

    About

    This is a set of Gradle plugins to simplify release tasks

    Checksum Dependency Plugin

    Enables to validate the checksums of the project dependencies (both plugins and regular dependencies). Note: this plugin has nothing to do with generating checksums. What it does it prevents man-in-the middle attack by enabling developers to declare the expected checksums.

    See checksum-dependency-plugin description for installation and configuration options.

    Jandex Gradle Plugin

    Allows building Jandex class index. An alternative use case is verification of the class files: if jandex fails to parse the file, then the bytecode might be invalid.

    See jandex-plugin description for configuration options.

    Stage Vote Release Plugin

    Enables to stage and vote on release artifacts before they are released.

    See stage-vote-release-plugin description for configuration options.

    Gradle Extensions Plugin

    See gradle-extensions-plugin description for configuration options.

    Enables to access Project properties in a type-safe way:

    val skipJavadoc by props()     // defaults to false
    val enableTests by props(true) // defaults to true
    val hello by props("world")    // defaults to "world"
    if (project.props.bool("isOk", default=true)) { ... }

    It improves test output and build failures as well: Sample GitHub Actions log that shows test results highlighting

    CRLF Plugin

    Adds Kotlin DSL to specify CRLF/LF filtering for CopySpec. Enables to use .gitignore and .gitattributes for building CopySpec.

    See crlf-plugin description for configuration options.

    IDE Plugin

    • Configures copyright profile
    • Configures “generated sources”
    • Enables to configure “post import” tasks (== call task on project import to generate sources)

    License Gather Plugin

    The purpose of the plugin is to analyze and infer license names for the dependencies, and verify license compatibility.

    See license-gather-plugin description for configuration options.

    Gettext Plugin

    The plugin adds the following task classes to execute GNU gettext binaries:

    • GettextTask collects messages from the source files into .pot
    • MsgAttribTask processes .po files (e.g. for removal of obsolete messages)
    • MsgMergeTask updates .po files with missing messages from .pot
    • MsgFmtTask generates the resource bundle (e.g. Java source files for the resources)

    License

    This library is distributed under terms of Apache License 2.0

    Change log

    v1.90

    • stage-vote-release: generate and publish checksums to SVN even if release artifact is UP-TO-DATE (regression since 1.75)
    • stage-vote-release: added previewSvnDist task to preview SVN dist contents without publishing it

    v1.89

    • checksum-dependency: reduce the number of idle threads
    • crlf: ignore inaccessible files/folders in gitignore filter

    v1.88

    • stage-vote-release: avoid failures when “init” does not exist
    • chore: fixed build warnings
    • checksum-dependency: infer artifact classifier from the file name
    • checksum-dependency: copy requested attributes to the configuration that resolves PGP signatures

    v1.87

    • gradle-extensions: requiredString, requiredBool, requiredInt, requiredLong property accessors
    • gradle-extensions: display TestNG initialization failures

    Thanks to Endor H for contributing.

    v1.86

    • checksum-dependency: use full fingerprint for PGP verification

    v1.85

    • licence-gather: better support for build cache by adding PathSensitivity
    • checksum-dependency: cache PGP public keys under %{ROOT_DIR}/gradle/checksum-dependency-plugin/cached-pgp-keys
    • checksum-dependency: bump org.bouncycastle:bcpg-jdk15on to 1.70

    v1.84

    • no-op release, since some of the plugins failed to publish to Gradle Plugin Portal in v1.83

    v1.83

    • stage-vote-release: bump grgit to 4.1.1

    v1.82

    • gradle-extensions: render class name for JUnit4 parameterized tests with several test methods (they treated as suites in Gradle 7)

    v1.81

    • jandex: add @IgnoreEmptyDirectories to fix Gradle 7 warning
    • gettext: add @IgnoreEmptyDirectories to fix Gradle 7 warning

    v1.80

    • license-gather: use META-INF/licenses/$group/$module-$version for storing license files in jar
    • jandex: support Gradle Configuration Cache

    v1.79

    • license-gather: avoid generating directories that end with .jar to workaround OpenJDK’s JarIndex issue

    v1.78

    • chore: bump Gradle 6.7 -> 6.9.1
    • license-gather: ignore xml namespaces when parsing POM files (see issue #43)
    • license-gather: fix license inference from Bundle-License manifest attribute (see issue #48)
    • license-gather: implement VerifyLicenseCompatibilityTask for verifying license compatibility (see pr #49)
    • checksum-dependency: retrieve keys from https://keyserver.ubuntu.com, and https://keys.openpgp.org by default (drop SKS keyserver pool since it has been deprecated)

    Thanks to Florian Dreier for identifying bugs and suggesting fixes.

    v1.77

    • crlf-plugin: bump jgit to 5.13.0.202109080827-r
    • stage-vote-release: bump jgit to 5.13.0.202109080827-r

    v1.76

    • jandex-plugin: workaround warnings with forbiddenApis and compileTestJava

    v1.75

    • crlf-plugin: remove input specification from FindGitAttributes task properties to workaround non-declared task dependency warning (see gradle/gradle#18882)
    • license-gather-plugin: support jars that have both /LICENSE and /META-INF/LICENSE files
    • gradle-extensions: avoid printing stacktrace when Kotlin compilation fails
    • gradle-extensions: avoid printing stacktraces for autostyle failures
    • stage-vote-release: use task.state instead of archiveFile.exists() to skip sha512 and sign tasks
    • jandex-plugin: add dependency for javadoc and sourcesJar tasks on processJandexIndex

    v1.74

    • checksum-dependency: skip checksum verification when artifact resolves to a directory
    • stage-vote-release: add workaround for Gradle 7.0 compatibility (see gradle/gradle#16777)

    v1.73

    • jandex-plugin: fixed “Task with name ‘check’ not found” when the plugin is applied with plugins { ... }

    v1.72

    • jandex-plugin: add maxErrors option to show several errors rather than stop on the first one
    • gradle-extensions-plugin: fix output of exceptions with multiple nested suppressed exceptions

    v1.71

    • Add CI jobs with nightly and RC Gradle versions
    • jandex-plugin: build class file index via Jandex or verify the bytecode

    v1.70

    • stage-vote-release: fix Gradle 6.0 warnings

    v1.69

    • license-gather-plugin: fix ignoreMissingLicenseFor annotations

    v1.68

    • license-gather-plugin: remove @Internal annotation from ignoreMissingLicenseFor

    v1.67 Same as 1.66 (re-published because 1.66 artifacts were corrupted by Gradle Plugin Portal issue)

    v1.66

    • gradle-extensions-plugin: MavenPom.simplifyXml() to trim scope=compile and dependencyManagement from pom.xml
    • gradle-extensions-plugin: MavenPublication.versionFromResolution() to map versions in pom.xml to Gradle resolution results
    • gradle-extensions-plugin: Project.extraMavenPublications() to add extra Maven publications (e.g. publish shadow jar)

    v1.65

    • stage-vote-release-plugin: add nexus.connectTimeout and nexus.operationTimeout with default of 15 minutes (Maven Central is slow at times)
    • stage-vote-release-plugin: create rc and release tags only after artifacts are pushed to Nexus (e.g. if javadoc build fails, the tag is not required)
    • gradle-extensions-plugin: skip stacktrace for TaskSelectionException issue#35

    v1.64

    • stage-vote-release-plugin: upate nexus-staging 0.2.0 -> 0.4.0; gradle-nexus-staging-plugin 0.20.0 -> 0.21.2
    • update jgit: 5.6.0.201912101111-r -> 5.6.1.202002131546-r
    • update grgit: 3.1.1 -> 4.0.1

    v1.63

    • gradle-extensions-plugin: refine condition for stacktrace printing

    v1.62

    • gradle-extensions-plugin: add DomainObjectCollection.configureEach<T> extension
    • gradle-extensions-plugin: reduce verbosity of the default exception printer (print only well-known exceptions and stacktraces by default like NPE)
    • stage-vote-release-plugin: refine -Prc input parameter validation
    • license-gather-plugin: refine Apache2LicenseRenderer to render custom licenses
    • all plugins: publish to Maven Central with PGP signatures

    v1.61

    • gradle-extensions-plugin: significantly improve stacktrace formatting, add task failure summary
    • checksum-dependency-plugin: removed http://keys.fedoraproject.org/ from keyserver list as it no longer works

    v1.60

    • gradle-extensions-plugin: add GitHub Actions error markers to test output
    • gettext-plugin: cleanup Gradle annotations

    v1.59

    • Skipped

    v1.58

    • gradle-extensions-plugin: enable coloring in test results by default (-Pnocolor, -Pnocolor=true|false)

    v1.57

    • Add gettext-plugin
    • Add Test.printTestResults (print test results, color output) function to gradle-extensions-plugin

    v1.56

    • Skipped

    v1.55

    • Build with Gradle 6.1.1

    v1.54

    • Replace Spotless -> Autostyle for simpler code style management
    • Update org.eclipse.jgit: 5.4 -> 5.6
    • stage-vote-release-plugin: fix race condition in nexus-publish afterEvaluate: provide username/password always
    • stage-vote-release-plugin: generate description for nexus staging repository
    • ide-plugin: update gradle-idea-ext: 0.5 -> 0.7

    v1.53

    • stage-vote-release-plugin: expose NexusConfig#mavenCentral to enable publishing to Central

    v1.52

    • stage-vote-release-plugin: integrate signing, and support skipSign and useGpgCmd properties

    v1.51

    • stage-vote-release-plugin: expose releaseParams.svnDistEnabled to skip SVN publication
    • stage-vote-release-plugin: publish Git tag after publishing Nexus and SVN

    v1.50

    • stage-vote-release-plugin: expose releaseParams.gitRepoName to customize Git repository name

    v1.49.0

    • gradle-extensions-plugin: expose Project.props(Int), props(Long), props.string(…), props.int(…), props.long(…)
    • gradle-extensions-plugin: change Project.lastEditYear to find the maximum 4-digit integer
    • ide-plugin: expose ide.licenseHeader, ide.licenseHeaderJava, and ide.copyright(…). Fix default ASF copyright

    v1.48.0

    • stage-vote-release-plugin: workaround publishDist issue when SVN 1.9 is used

    v1.47.0

    • gradle-extensions-plugin: plugin for type-safe Project property access in build.gradle.kts

    v1.46.0

    • stage-vote-release-plugin: avoid failures in pushPreviewSite on Gradle version upgrade
    • stage-vote-release-plugin: allow uncommitted changes for generateVoteText / publishDist
    • crlf-plugin: fix handling of .gitignore files in subfolders

    v1.45.0

    • stage-vote-release-plugin: preserve **/.git/** in syncPreviewSiteRepo
    • stage-vote-release-plugin: avoid NPE in GitPushTask when pushing new tag
    • stage-vote-release-plugin: avoid rebuilding artifacts for generateVoteText/publishDist (fetch files from SVN dist)
    • ide-plugin: support generatedJavaSources for different sourceSets (main, test)
    • license-gather-plugin: use Gradle 7-compatible API workerExecutor.noIsolation instead of .submit

    v1.44.0

    • stage-vote-release-plugin: disable automatic execution of removeStaleArtifacts when publishing the release

    v1.43.0

    • stage-vote-release-plugin: support Gradle 6.0

    v1.42.0

    • stage-vote-release-plugin: fix logging in RemoveStaleArtifactsTask

    v1.41.0

    • stage-vote-release-plugin: implement removeStaleArtifacts task to cleanup dist.apache.org
    • stage-vote-release-plugin: hide technical tasks
    • stage-vote-release-plugin: improve logging in GitPushTask
    • stage-vote-release-plugin: detect “stage SVN revision”

    v1.40.0

    • stage-vote-release-plugin: avoid including artifact name in ReleaseArtifact.getSha512

    v1.39.0

    • stage-vote-release-plugin: validate asfTest…Username and asfTest…Password properties

    v1.38.0

    • stage-vote-release-plugin: release tag should be created for release candidate commit, not the current HEAD

    v1.37.0

    • stage-vote-release-plugin: execute sha512 and signing tasks only when input files exist

    v1.36.0

    • checksum-dependency-plugin: use MD5SUM format for .sha512 files so the checkums can be verified with shasum -c *.sha512

    v1.35.0

    v1.34.0

    • crlf-plugin: proper support of absolute paths in non-root gitignore files

    v1.33.0

    • checksum-dependency-plugin: reduce verbosity by using the actual duration of “PGP key retrieval” to decide if the timeout is loggable or not
    • stage-vote-release-plugin: treat generateVoteText as non-incremental task (avoid caching of the mails between rc1, rc2, and so on)
    • stage-vote-release-plugin: skip SHA-512 computation when the original artifact task is skipped

    v1.32.0

    • stage-vote-release-plugin: add releaseArtifacts {…} extension to pass artifacts across Gradle’s modules
    • stage-vote-release-plugin: validate Git username/password before release starts

    v1.31.0

    • checksum-dependency-plugin: added pgpMinLoggableTimeout (default 4 seconds) to reduce the verbosity of the plugin
    • checksum-dependency-plugin: added checksumUpdateAll property for simplified checksum.xml update without build failure

    v1.30.0

    • checksum-dependency-plugin: show PGP signature resolution time (#21)
    • checksum-dependency-plugin: disable verification when dependencyUpdates task is present on the task execution graph (#20)

    v1.29.0

    • checksum-dependency-plugin: resolve and verify PGP in parallel, compute SHA in parallel

    v1.28.0

    • checksum-dependency-plugin: fix resolution of copied configurations (== fix compatibility with https://github.com/ben-manes/gradle-versions-plugin)
    • checksum-dependency-plugin: add checksumIgnore property for disabling the plugin (e.g. when certain tasks are not compatible with verification)

    v1.27.0

    • checksum-dependency-plugin: support Gradle 4.4.1

    v1.26.0

    • checksum-dependency-plugin: fix logging for “PGP key…download time: 0ms”

    v1.24.0

    • checksum-dependency-plugin: failover across multiple keyservers and DNS responses

    v1.23.0

    • checksum-dependency-plugin: support Gradle 4.10.2

    v1.22.0

    • checksum-dependency-plugin: add <ignored-keys> to prevent resolution of known to be absent keys

    v1.21.0

    v1.20.0

    • checksum-dependency-plugin: properly track .pom artifacts (and other non-jar artifacts with default classifier)

    v1.19.0

    • checksum-dependency-plugin: include classifier and extension to artifact key

    v1.18.0

    • checksum-dependency-plugin: improve logging

    v1.17.0

    • checksum-dependency-plugin: new plugin to verify the downloaded dependencies on resolution
    • all plugins: remove Implementation-Version manifest attribute to make jars have consistent checksums across versions
    • stage-vote-release-plugin: make sitePreviewEnabled configurable via property

    v1.16.0

    • stage-vote-release-plugin: make -Prc optional for pushPreviewSite

    v1.15.0

    • stage-vote-release-plugin: validate Git credentials
    • stage-vote-release-plugin: use $it-site.git and $it-site-preview.git name conventions

    v1.14.0

    • stage-vote-release-plugin: use property value instead of name for Git credentials

    v1.13.0

    • stage-vote-release-plugin: allow to publish to AFF repository via -Pasf

    v1.12.0

    • Add .editorconfig
    • stage-vote-release-plugin: take RepositoryType.PROD/TEST from “asf” property
    • stage-vote-release-plugin: add releaseParams.rc, releaseParams.release and releaseParams.committerId properties
    • stage-vote-release-plugin: add GitCreateTagTask, GitPushTask
    • stage-vote-release-plugin: add option to automatically generate SHA512
    • stage-vote-release-plugin: allow to select between GitHub and GitBox push alternatives
    • stage-vote-release-plugin: add pre-release validations
    • stage-vote-release-plugin: create and push RC and Release tags
    • stage-vote-release-plugin: add ReleaseExtension#componentName (a sub-component under TLP)
    • stage-vote-release-plugin: load stagingRepositoryId for release task
    • stage-vote-release-plugin: avoid parallel execution of initializeNexusStagingRepository to improve task concurrency
    • ide-plugin: support generatedSources in Eclipse
    • license-gather-plugin: exclude txt-based licenses from the jar to save some space

    v1.11.0

    • stage-vote-release-plugin: require Nexus username/password only when release task is used

    v1.10.0

    • stage-vote-release-plugin: fix asfSvnUsername should be used instead of asfasfSvnUsername

    v1.9.0

    • stage-vote-release-plugin: properly support username/password for Nexus and SVN
    • stage-vote-release-plugin: make sitePreview optional

    v1.8.0

    • stage-vote-release-plugin: add ReleaseExtension#validateReleaseParams(Runnable) to enable fail-fast on releasing SNAPSHOT versions

    v1.7.0

    • crlf-plugin: add CrLfSpec { CopySpec.textAuto() } for simplified handling of text files

    v1.6.0

    • license-gather-plugin: build “predict license by text” model at the build time

    v1.5.0

    • stage-vote-release-plugin: Project.licensesCopySpec includes NOTICE and license by default

    v1.3.0

    • Move gitattributes and gitignore to crlf plugin (from stage-vote-release-plugin)
    • Add workaround for gradle/gradle#1191 (Copy tasks do not consider filter/eachFile/expansion properties in up-to-date checks)

    v1.2.0

    • stage-vote-release-plugin: support .gitignore and .gitattributes in building CopySpec

    v1.0.0

    • Initial release: basic license gathering

    Author

    Vladimir Sitnikov sitnikov.vladimir@gmail.com

    Visit original content creator repository https://github.com/vlsi/vlsi-release-plugins
  • ljshred

    This is a horribly dangerous tool, the only purpose of which is to actively destroy the content of a LiveJournal account. I wrote it so I could remove my content from LJ in protest at the April 2017 ToS change.

    You must have clicked-to-accept the LJ ToS change in order to use this tool! The API is locked out until you log in in person and click the box. (Note that if you routinely disable JavaScript, you probably need to enable it for the clickwrap license to work.)

    About this tool

    I don’t offer any support or warranty. You use this tool at your own risk.

    You will be prompted for your LJ login and password, and asked to accept that this is a dangerous program which will destroy your data.

    You have to explicitly tell the script what you want to do to your entries. The options are:

    • --block-out to replace all non-whitespace text with the unicode block character ‘█’ (U+2588)
    • --random-garbage to replace all non-whitespace text with randomly chosen letters and numbers
    • --mixed-mode to randomly choose whether to block-out or random-garbage each entry in turn
    • --chicken to replace all words with the word “chicken”
    • --zalgo to zalgoise the text
    • --delete to just delete the entry text, which has the effect of deleting the entry completely.
    • --printout is a test mode which doesn’t change anything.

    (There are other options on the command line — check out the help message below.)

    Note that all the text of an entry is replaced, including any inline HTML-like tags such as <lj-cut>.

    Entry subjects are affected in the same way as the entry text. The posting date, mood, userpic, entry tags and comments are left unchanged.

    NOTE: If you are importing your content to another site, you should make sure that that import has finished before you run this tool.

    This program will take some time to run. LJ does not allow an account to make or update too many posts too quickly so there is a --throttle-time option (default 3 seconds, which worked for me). If you only have a small number of entries you can set it to 0.

    As the program runs you get a progress report. The –start-date option is provided so you can pick up where you left off if you encounter errors.

    Installation

    You will need to install Python 2.7 if you haven’t already got it. I don’t believe you need any extension libraries.

    You can download the script on its own here: https://raw.githubusercontent.com/crazyscot/ljshred/master/ljshred.py

    Command-line options

    $ python ljshred.py --help
    usage: ljshred.py [-h] [--cleartext_password] [--except-latest]
                      [--start-date YYYY-MM-DD] [--end-date YYYY-MM-DD]
                      [--throttle-time THROTTLE_TIME]
                      [--printout | --block-out | --random-garbage | --chicken | --mixed-mode | --delete | --zalgo]
    
    Shreds all the entries in a LiveJournal.
    
    optional arguments:
      -h, --help            show this help message and exit
      --cleartext_password  Sends the password in (nearly) clear text, which is
                            faster but less secure
      --except-latest       Doesn't affect the latest entry
      --start-date YYYY-MM-DD
                            If given, starts shredding at the given date (e.g.
                            2017-12-31)
      --end-date YYYY-MM-DD
                            If given, stops shredding at the given date
      --throttle-time THROTTLE_TIME
                            Attempts to defeat the LJ API posting limit by waiting
                            this many seconds (default 3) between successive entry
                            updates.
    
    Action modes (specify one):
      --printout            Only prints out all the entries it would touch,
                            doesn't actually change anything.
      --block-out           Replaces all non-whitespace text in all entries with a
                            solid block character
      --random-garbage      Replaces entries with random garbage text
      --chicken             Replaces all words with the word "chicken"
      --mixed-mode          Applies one of --random-garbage, --block-out or
                            --chicken to each entry in turn
      --delete              Deletes entries
      --zalgo               Zalgoises the text (adds a bunch of Unicode combining
                            characters which smear a mess over them). This
                            conversion is largely reversible, and it doesn't look
                            very good in all browsers.
    
    This program is DANGEROUS and IRREVERSIBLE. Use at your own risk.
    

    Example

    $ python ljshred.py --mixed-mode --except-latest
    
    ====== DANGER, LASER GUIDED DRAGONS =================================
    
    This program makes irreversible changes to the contents of your LiveJournal
    account.
    
    THERE IS NO UNDO FUNCTION.
    
    Do not run this program "just to see what it does".
    It does what it says on the tin. It DESTROYS YOUR DATA.
    
    If you are sure you want to do this, type the phrase:
        I want to destroy my data
    and press Enter.
            
    Are you sure? I want to destroy my data
    OK, proceeding. Don't say you weren't warned.
    Username on livejournal.com: crazyscot
    Password: 
    Using challenge-response
    There are 1723 entries
    2002-12-31 has 1 entry
    2003-01-01 has 3 entries
    

    (output truncated for brevity)

    FAQs

    What does it mean to zalgoise text?

    Adding a bunch of Unicode combining characters which smear over the top of the existing text. Something like this. Zalgoised text example

    Why does my zalgoised text look different to yours?

    Not all web browsers support Unicode combining characters properly. Chrome on Linux doesn’t, showing a load of boxes; Firefox seems OK. Chrome and Safari on OSX show the characters but don’t combine them correctly. I haven’t tried any other combinations.

    Visit original content creator repository https://github.com/crazyscot/ljshred
  • SocialSync

    Social Sync

    Attempts to follow your Bluesky (bsky.brid.gy) follows and Threads follows via the Mastodon API

    Setup

    • Clone repo
    • pip install -r requirements.txt (or use a virtual environment, python -m virtualenv .venv, source .venv/bin/activate) If you’re running python3.12+ please use requirements312.txt instead
    • Copy config.toml.example to config.toml.
    • Edit Bluesky config with username (or email) and password
    • Edit Mastodon config with domain, username, and api_key
    • Navigate to Threads account center -> Your Information and permissions -> Download your information -> Download or transfer your information -> Instagram -> Some of your information -> Select Threads -> Export as JSON
    • Extract downloaded Threads data
    • Copy following.json from instagram-idnumbers/your_instagram_activity/threads/following.json to the cloned repo
    • execute python main.py this will grab all your follows from both services and saves to a database, then it attempts to follow them all
    • The next time you run it, it will just use the database and not use the API
    • If you want it to grab the follows again just use python main.py --refresh
    • I suggest setting it on a cron routine (unfortunately Threads doesn’t seem to have API access to the follows so you have to redownload data if you want up-to-date following accounts)

    Visit original content creator repository
    https://github.com/TomCasavant/SocialSync

  • waiter-js

     __     __     ______     __     ______   ______     ______    
    /\ \  _ \ \   /\  __ \   /\ \   /\__  _\ /\  ___\   /\  == \   
    \ \ \/ ".\ \  \ \  __ \  \ \ \  \/_/\ \/ \ \  __\   \ \  __<   
     \ \__/".~\_\  \ \_\ \_\  \ \_\    \ \_\  \ \_____\  \ \_\ \_\ 
      \/_/   \/_/   \/_/\/_/   \/_/     \/_/   \/_____/   \/_/ /_/ 
                                                                   
    
    A simple module that enables you to perform and handle
    requests among your apps on the browser.

    🧭 Overview

    It allows micro-frontends to handle requests and responses, simplifying application flow and data exchange between
    components.

    🚀 Features

    • Dead simple: Handles requests and responses with a simple interface, simplifying application flow and data exchange between
      components.
    • Controller-based: Organizes requests using controllers for better manageability.
    • Promise-based API: Facilitates async programming with promises.
    • Lightweight: Is a lightweight tool with no dependencies, making it easy to integrate into your project.
    • TypeScript Support: Is written in TypeScript and provides type definitions out of the box.

    🎬 Demo

    👉 Check it out here 👈

    ⚙️ Installation

    NPM

    npm i @strange-bytes/waiter

    Yarn

    yarn add @strange-bytes/waiter

    PNPM

    pnpm add @strange-bytes/waiter

    🧩 Usage

    To use Waiter, you need to import it into your project:

    // ES6
    import Waiter from 'waiter';
    // CommonJS
    const Waiter = require('waiter');

    Then you can create a new instance of Waiter to add controllers and handle requests:

    // App A
    const waiter = new Waiter();
    
    waiter.createController('fetchUserState', () => {
      const { user } = userStore();
      return user;
    });

    // App B
    const waiter = new Waiter();
    
    const user = await waiter.request('fetchUserState');

    📖 API

    constructor(options)

    Creates an instance of Waiter. You can optionally specify configuration options.

    • options: Object with optional properties:
      • namespace: The namespace to use for the Waiter configuration. Defaults to __WAITER_CONFIG_COMMON__.
      • outputPrefix: The prefix to use for output messages. Defaults to ‘[Waiter]’.
      • token: Optional authorization token required for creating/removing controllers.

    createController(endpoint, callback, token?)

    Registers a new controller that handles requests to a specific endpoint.

    • endpoint: string – The name of the endpoint.
    • callback: Function – The function to execute when the endpoint is called. It should return the response.
    • token: string (optional) – Authorization token. Required if the Waiter instance was created with a token.

    removeController(endpointName, token?)

    Removes a previously registered controller.

    • endpointName: string – The name of the endpoint to remove.
    • token: string (optional) – Authorization token. Required if the Waiter instance was created with a token.

    request(endpointName, payload, options)

    Sends a request to a specific endpoint and returns a promise that resolves with the response.

    • endpointName: string – The name of the endpoint to send the request to.
    • payload: any – The payload to send with the request.
    • options: Object with optional properties:
      • timeout: number – Optional timeout in milliseconds. Defaults to 1000ms.

    config

    Provides access to the current Waiter configuration. This is a read-only property.

    🤝 Contributing

    We welcome contributions! Feel free to open an issue or submit a pull request from your fork if you have any ideas or
    suggestions.

    License

    This project is licensed under the ISC License – see the LICENSE file for details.

    Visit original content creator repository
    https://github.com/antonisPanos/waiter-js