Blog

  • My-Data-Science-Learning-Projects

    ๐Ÿš€ My Data Science Learning Projects.

    Welcome to my personal collection of hands-on data science projects! This repository showcases my journey exploring and mastering various data science concepts, tools, and techniques.
    ๐ŸŒŸ Stay tuned as I continue to expand this repository with more exciting projects!

    Note

    Have a look at this repo about my Machine Learning Subject wich contains even more projects written in R.

    ๐ŸŒธ Iris Classification.

    • ๐Ÿ“„ Notebook
    • ๐Ÿ› ๏ธ Technologies: Pandas, PyTorch.
    • ๐Ÿงช Summary: A classic classification problem using the Iris dataset to practice data manipulation, visualization, and building simple neural networks.

    ๐Ÿฉบ Diabetes Prediction.

    • ๐Ÿ“„ Notebook
    • ๐Ÿ› ๏ธ Technologies: Scikit-learn, TensorFlow.
    • ๐Ÿงช Summary: Predicting the likelihood of diabetes using machine learning models, focusing on data preprocessing and model evaluation.

    ๐Ÿง‘โ€โš•๏ธ Breast Cancer.

    • ๐Ÿ“„ Notebook
    • ๐Ÿ› ๏ธ Technologies: Autokeras, Scikit-learn.
    • ๐Ÿงช Summary: Automated approach to classify breast cancer cases. The project leverages AutoKeras to find optimal deep learning models with minimal manual tuning.

    ๐Ÿท Wine.

    • ๐Ÿ“„ Notebook
    • ๐Ÿ› ๏ธ Technologies: Pyspark, Pandas.
    • ๐Ÿงช Summary: The script processes the Wine dataset using Apache Spark, performing data cleaning, exploration, and applying custom pandas UDFs for additional transformations.

    ๐Ÿ  California Housing.

    • ๐Ÿ“„ Notebook
    • ๐Ÿ› ๏ธ Technologies: Dask, Scikit-learn.
    • ๐Ÿงช Summary: This time, we will use an alternative to Pandas so that parallel computing is considered when manipulating dataframes thanks to the library Dask.

    ๐Ÿ’ญ Movie Reviews.

    • ๐Ÿ“„ Notebook
    • ๐Ÿ› ๏ธ Technologies: NLTK, Scikit-learn.
    • ๐Ÿงช Summary: The notebook analyzes movie reviews using the NLTK library, focusing on text preprocessing, feature extraction, and sentiment classification with a Naive Bayes model.

    ๐Ÿ“Š ManageYourData.

    • ๐Ÿ’ป Repository
    • ๐Ÿ› ๏ธ Technologies: Pandas, Matplotlib, FPDF, Openpyxl, Streamlit.
    • ๐Ÿงช Summary: A self-made tool for generating PDF reports from data files locally.

    ๐ŸŽ›๏ธ Data analysis.

    • ๐Ÿ“‹ Carprice report and Titanic report
    • ๐Ÿ› ๏ธ Technologies: Power BI.
    • ๐Ÿงช Summary: My first two dashboards ever made with Power BI allowed me to learn the basics of visualizing and manipulating data.

    Visit original content creator repository
    https://github.com/MarkosHB/My-Data-Science-Learning-Projects

  • TFC-Quick-Pockets

    TFC+ Quick Pockets

    The TFC+ Addon that tries to simplify and streamline inventory management – one unnecessary click at a time. So that you can focus on playing this incredible game instead of being bogged down by inventory screens.

    If you find inventory management tedious, this is for you!

    Features

    Hotbar Cycling

    TFC adds so many great new tools to minecraft, and this is absolutely awesome! However it also means that your hotbar is constantly filled with tools that you have to swap between very often, which brings your momentary experience to a halt.

    This mod tackles this issue by allowing you to swap items in your hotbar without ever having to go to your inventory screen. Simply press and hold ALT and a preview window will appear showing you whats in the inventory slots above, and below your hotbar.

    While holding ALT you can then SCROLL UP or SCROLL DOWN to swap the items in your hotbar, giving you quick and convenient access to your whole inventory.

    Auto-Refill

    You’re chopping a tree, and your axe suddenly breaks. Aw snap – well thankfully you’ve come prepared! You have another axe in your inventory just for situations like this. But now you have to open up the inventory menu and swap it into your hand – completely breaking your tree-cutting flow. Not anymore.

    With the auto-refill feature enabled, whenever you break a tool, a new one will be placed into your hand – provided you have a backup in your inventory to begin with. This also works for weapons, food, drinks, building blocks, as well as other items like stone flakes, flowers, etc.

    Quick Bag Access

    Moving items to and from vessels and leather bags can be very tedious, as you first have to open up your inventory, drop the first bag in your hotbar, close the menu, right click on the bag from your hotbar, move the items from the bag to your inventory, then open up your inventory again, move the second bag to the hotbar, right click on the second bag…

    With this mod, you can simply RIGHT CLICK on any bag from any inventory screen and the bag will be placed in your hotbar and open right there on the spot. This allows you to swap items in your bag without ever leaving your inventory screen.

    Quick Tool Swapping

    You want the right tool for the job, but it’s not in your hotbar! It’s god knows where in your inventory, oh brother. This mod adds hotkeys that allow you to instantly cycle through the tools you want without you ever having to look through your inventory. There’s hotkeys for axes, saws, pickaxes, chisels, …

    These hotkeys are not bound to anything by default, but you can bind them yourself in the Controls section of the Options menu, under the Inventory category.

    Walk in Inventory

    Have you ever found it kind of strange how your character cannot move at all while your inventory screen is open. Well if this ever bothered you before, this mod allows you to run and jump inside of your inventory screen when you hold the SPRINT key. Be free.

    Note that it wouldn’t make much sense to allow the player to move around while inspecting a chest’s inventory, so this feature only works for the player inventory, as well as for container inventories for containers that you can carry around with you, like the small vessel and the leather bag.

    Additional Sounds

    Minecraft 1.7.10 is oddly quiet, especially compared to the newer versions. There are no bucket sounds, no weapon sounds, not even a chest closing sound. This addon adds these newer sounds back in, along with additional TFC+ specific sounds.

    For a full list of added sounds, as well as the volume sliders that control them, expand the list below. Most of these sounds can be toggled on or off on an individual basis from the config menu.

    Click to expand.
    sound variants when it plays volume slider source
    attack-axe 1 2 3 when dealing damage with an axe Players Minecraft
    attack-mace 1 2 3 4 when dealing damage with a mace Players Minecraft
    attack-sword 1 2 3 4 5 6 7 when dealing damage with a sword Players Minecraft
    attack-strong 1 2 3 4 5 when dealing damage with a tool Players Minecraft
    attack-weak 1 2 3 4 when dealing damage with anything except the above Players Minecraft
    bag-open 1 2 when changing hotbar slots, opening player inventory, or cycling through hotbar rows Players MAtmos
    barrel-seal 1 when sealing a barrel Blocks Minecraft
    barrel-unseal 1 2 when unsealing a barrel Blocks Minecraft
    beehive-close 1 when closing a beehive’s inventory Blocks Minecraft
    beehive-drip 1 2 3 4 5 6 when taking honey from a beehive Blocks Minecraft
    beehive-open 1 when opening a beehive’s inventory Blocks Minecraft
    bow-nock 1 when charging the bow Players MAtmos
    bucket-empty 1 2 3 when emptying a bucket Blocks Minecraft
    bucket-empty-viscous 1 2 3 when emptying a bucket with a viscous fluid such as pitch Blocks Minecraft
    bucket-fill 1 2 3 when filling a bucket Blocks Minecraft
    bucket-fill-viscous 1 2 3 when filling a bucket with a viscous fluid such as pitch Blocks Minecraft
    chest-close 1 2 3 when closing a chest Blocks Minecraft
    cow-milk 1 2 3 when milking a cow Blocks Minecraft
    fire-crackle 1 2 3 4 5 6 when near a lit fire pit Blocks Minecraft
    fluid-empty 1 2 when emptying a barrel Blocks Minecraft
    fluid-empty-viscous 1 when emptying a barrel full of viscous fluid such as pitch Blocks Minecraft
    fluid-soak 1 2 3 when placing an item in a barrel full of liquid Blocks Minecraft
    fluid-soak-viscous 1 2 when placing an item in a barrel full of a viscous liquid Blocks Minecraft
    fluid-unsoak 1 2 3 when taking an item from a barrel full of liquid Blocks Minecraft
    fluid-unsoak-viscous 1 2 3 when taking an item from a barrel full of a viscous liquid Blocks Minecraft
    large-vessel-seal 1 when sealing a large vessel Blocks freesound.org
    large-vessel-unseal 1 when unsealing a large vessel Blocks freesound.org
    leash-break 1 2 3 when a lead/rope breaks Blocks Minecraft
    leash-place 1 2 3 when attaching a lead/rope to a fence Blocks Minecraft

    I do not take credit for making the sounds themselves. The credits for each sound are listed above.

    Skip Empty Hotbar Slots

    Lets say you have your sword in the left-most slot of your hotbar, and your food is in the right-most slot of the hotbar. If every other slot on your hotbar is empty, then you shouldn’t need to scroll through every single empty slot to get from one useful item to another.

    With this mod, empty hotbar slots will be skipped over when you scroll. This is configurable from the Hotbar Cycling config menu.

    Inventory Fixes

    Apart from the core features, this mod also fixes a few small visual inconsistencies. Things that you probably won’t notice for a while but that you can’t stop noticing if you’ve seen them.

    The player model in the inventory screen is supposed to be looking directly at your cursor – but they don’t! They look slightly off to the side. This was fixed.

    Click to expand.

    The basket and large vessel inventory screens hava a small inconsistency on their left-most inventory slots. This has also been fixed.

    Click to expand.

    The textures of 9 chest variants were slighly incorrect leading to these chests noticeably flickering due to z-fighting. Baobab, ebony, fever, fruitwood, gingko, limba, mahogany, mangrove, and palm chest had this problem. This mod fixes this problem.

    No Useless Drops

    Spider eyes and rotten flesh have absolutely no use in TFC+. Their only purpose is to bog down your inventory – well not anymore. This mod stops rotten flesh and spider eyes from spawning.

    Config Options

    All of the above features are fully customizable. You can completely choose whatever combination of features works best for you. There configuration categories for each of the above features in the mod’s Config menu. For features that require pressing keys, these keys can be bound through the key bindings menu, under the Inventory category.

    Click to expand.

    Requirements

    This mod is build as an addon for TerraFirmaCraft+, a minecraft mod which you can download here if you haven’t already. It was tested and working with TFC+ versions 0.84.1 — 0.86.2, however it should also work with newer versions as long as they don’t change the GUI too much.

    The mod was build using Minecraft Forge 10.13.4.1558 for minecraft 1.7.10. Forge is required for running this mod, and you can download it here if you haven’t already.

    Build from Source

    Download the source and open a terminal in the folder containing the gradlew file. Run:

    $ gradlew setupDecompWorkspace

    This will take a while to complete. After it’s done run:

    $ gradlew build

    After it has finished, the mod you built should be in the ./build/libs/ directory.

    Download and Install

    Download the latest version here.

    Put the downloaded jar file in your mods folder, right alongside TFC+. Tested and working with TFC+ 0.84.1 — 0.87.0.

    All features of this addon that move items around in the inventory require server support to function. If you want to play with this addon on a server that does not have it installed, you need to enable “Client Only Mode” from the config menu. If you do not do this you could crash the game, or the server itself.

    Note This mod manipulates your inventory. This means that in case of buggy code, the mod could duplicate or delete items from your inventory too. I try to fix critical bugs like this as soon as possible, and the mod has been tested somewhat thoroughly at this point, but some problems may still have slipped through the cracks. Only use this if you understand the risks. Back up your beloved save games before using this mod.

    Version History

    Click to expand.
    version TFC+ versions changes
    1.1.6 0.87 โ€ข removed waterskin fix as it’s no longer necessary
    โ€ข added option to skip empty hotbar slots when scrolling
    1.1.5 0.84.1 – 0.86.2 โ€ข fixed raw grains stacking with cut grains when picked up
    1.1.4 0.84.1 – 0.85.6 โ€ข fixed salads and sandwiches not being considered food and water jugs not being considered drinks
    1.1.3 0.84.1 – 0.85.6 โ€ข fixed crash when certain keys were bound to mouse buttons
    1.1.2 0.84.1 – 0.85.3 โ€ข added bloomery and blast furnace sounds
    โ€ข fixed bug with bow sounds
    1.1.1 0.84.1 – 0.85.3 โ€ข fixed some chests had textures that caused them to flicker
    โ€ข various bug fixes
    1.1 0.84.1 – 0.85.3 โ€ข added additional sounds
    โ€ข food is now automatically stacked when picked up
    โ€ข improved how auto-refill looks for replacement items
    โ€ข added client-side only mode for playing on servers
    โ€ข “remove dark filter in inventory” is now turned off by default
    1.0 0.84.1 – 0.85.2 โ€ข fixed inconsistencies with large vessel and basket GUI
    beta 1.2.2 0.84.1 – 0.85.2 โ€ข improved how auto-refill looks for replacement items
    โ€ข added config option to enable walk in inventory without the SPRINT key
    beta 1.2.1 0.84.1 – 0.85.2 โ€ข you now have to hold SPRINT to walk in the inventory
    beta 1.2 0.84.1 – 0.85.1 โ€ข can now walk in inventory screens
    โ€ข organized config into neat categories
    beta 1.1 0.84.1 – 0.85.1 โ€ข tool cycling now correctly cycles through all tools
    โ€ข zombies and spiders no longer drop rotten flesh and spider eyes
    โ€ข added auto-refill
    beta 1.0.1 0.84.1 – 0.85.1 โ€ข fixed item duplication and other item temperature related weirdness
    โ€ข added config options to disable quick container access on certain items
    โ€ข most features now require server assistance to work
    beta 1.0 0.84.1 – 0.85.1 initial release
    Visit original content creator repository https://github.com/blat-blatnik/TFC-Quick-Pockets
  • spronk

    โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ
    

     โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ  โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ   โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ โ–ˆโ–ˆ   โ–ˆโ–ˆ โ–ˆโ–ˆ โ–ˆโ–ˆ    โ–ˆโ–ˆ โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ  
    โ–ˆโ–ˆ   โ–ˆโ–ˆ โ–ˆโ–ˆ   โ–ˆโ–ˆ โ–ˆโ–ˆ      โ–ˆโ–ˆ   โ–ˆโ–ˆ โ–ˆโ–ˆ โ–ˆโ–ˆ    โ–ˆโ–ˆ โ–ˆโ–ˆ      โ–ˆโ–ˆ   โ–ˆโ–ˆ 
    โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ  โ–ˆโ–ˆ      โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ โ–ˆโ–ˆ โ–ˆโ–ˆ    โ–ˆโ–ˆ โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ   โ–ˆโ–ˆ   โ–ˆโ–ˆ 
    โ–ˆโ–ˆ   โ–ˆโ–ˆ โ–ˆโ–ˆ   โ–ˆโ–ˆ โ–ˆโ–ˆ      โ–ˆโ–ˆ   โ–ˆโ–ˆ โ–ˆโ–ˆ  โ–ˆโ–ˆ  โ–ˆโ–ˆ  โ–ˆโ–ˆ      โ–ˆโ–ˆ   โ–ˆโ–ˆ 
    โ–ˆโ–ˆ   โ–ˆโ–ˆ โ–ˆโ–ˆ   โ–ˆโ–ˆ  โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ โ–ˆโ–ˆ   โ–ˆโ–ˆ โ–ˆโ–ˆ   โ–ˆโ–ˆโ–ˆโ–ˆ   โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ  
    

    This project was built over seven years ago as a quick-use utility and fun project not meant for production purposes. It has since been archived.

    However, feel free to peruse, fork, modify, and so forth!

    โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ
    

    spronk

    Easily cluster your apps via the CLI or with code.

    Installation

    # NPM
    $ npm install spronk
    $ npm install spronk -g
    
    # Yarn
    $ yarn add spronk
    $ yarn global add spronk

    Getting Started

    With CLI

    # View Help
    $ spronk --help
    
    # Basic Usage
    $ spronk <file> [options]
    
    # Basic Example
    $ spronk example.js --workers 4

    With Code

    const spronk = require('spronk')
    
    spronk({
    	workers: 4, // number of workers to start [#CPUS]
    	grace: 1000, // ms grace period after worker SIGTERM [5000]
    	lifetime: 10000, // ms to keep cluster alive if workers exit [Infinity]
    	start: function() {} // worker functions, this would typically contain your server code
    })

    Testing

    Simply run npm test or yarn test (depending on your package manager) and all of the tests in the test/ directory will be run.

    Issues

    We don’t accept issues; we accept pull requests.

    Changelog

    For milestones, visit the project’s releases.

    License

    For license information, visit the project’s license.

    Visit original content creator repository
    https://github.com/alecmekarzel/spronk

  • modernweb_course

    Modern Web Development

    The Egyptian software development market suffers from a scarcity of expert talent as compared to the international market. In this course we will cover the latest stable software development practice, project architecture, design patterns, and technology, in the field of web development.

    This course is aimed at those who intend to pursue a career in software development, or want to create a low cost MVP for a startup. After this course you should be familiar with the current state of the art, capable of making educated decisions about your development stack.

    The structure of this course is largely motivated by the notion that novice developer start out adopting frameworks and using libraries without critically thinking about wether this tool is the right fit for the job.

    Course Flow

    • This course will be composed of 13 sessions
    • Each session will have 2 parts, exercise and discussion
      • During exercise you will be solving the course assignment
      • During discussion we will discuss the next assignment
      • All concepts discussed are documented in the assignments
      • I will be explaining concepts that are unclear
    • After each session I will be updating the course material based on our progress.
    • Assignments are 10% each because I have to grade you on something.
      • Grades are awarded on completion (deemed complete by me).
      • Assignments are graded during sessions.
      • Grades can be partial depending on completion level.
      • Best 10 assignments are considered
      • Preferably read or start solving the assignment before the session.
      • If your are incapable of completing the assignment you can be granted the permission to complete it before the next exercise slot.
    • The first session is a discussion only session.
    • The last session is an assignment only session.
    • We should all eat pizza at the end of the course.

    You will need

    • A Laptop with a bash shell (Unix bases OS or Windows 10 with ubuntu terminal)
    • A modern browser e.g. latest google chrome
    • Internet
    • NodeJS
    • Git
    • Text Editor such as Atom

    Course Sessions

    In this course we will introduce

    1. Web Applications History

    In this Session we will talk about the existing landscape of things a developer can learn and what we will cover during this course.

    • Setting expectations for the course.
    • The problems we will be solving.
    • Web application history.
    • Setting up an ES6 project with babel and node
    • Webpack

    Assignment for next time

    • Build a simple webapp without any libraries
    • The basic problems we face
    • Split code into sepret files
    • OOCSS and BEM

    2. Life of a Modern Application: Data renders View

    In this session we will start with an recap on the basic Javascript Features and go through Functional Programming Concepts.

    • Flexbox
    • es6 feature template strings
    • components rendering data to html

    Assignment for next time

    • Complete rendering code to HTML

    3. Life of a Modern Application: Actions update Data

    • DOM Events
    • Scoping our code
    • Event based Programming with the Observer Pattern

    Assignment for next time

    • Flux architecture (data down action up)

    4. Life of a Modern Application: Testing

    • Unit Testing HTML render
    • Pure Functions
    • State Store
    • Mocks and Stubs
    • Dependency Injection

    Assignment for next time

    • Testing our render functions
    • Testing our action dispachers
    • Testing our actions mutating the store

    5. Life of a Modern Application: Views trigger Events

    • NodeJS: modules
    • build tools: gulp
    • rendering a virtual dom
    • running our test task
    • browserify

    Assignment for next time

    • Develop a new kind of todo item called a counter
    • todo items can now be edited

    6. Life of a Modern Application: Asynchronous code

    • The Javascript Event Loop
    • Promises with fetch
    • Creating a simple REST server with express
    • Sockets
    • Asynchronous
    • Reactive Programming

    					_MIDTERM BREAK_
    

    7. Continuous Integration and Deployment

    1. Front end with Git pages
      * Resisting Git
      * Deploying your code on github with a CI
      * SSH with Nginx and letโ€™s encrypt
    2. Backend with Capistrano (node flight)
      * Deploying on a server with ssh
      * Automating with the CI our git pull request acceptance
      * Using flightplan for deployment

    8. All you need for an MVP

    1. Firebase
      *
      *
    2. Testing with Firebase
      *
      *

    8. Architecture for massive apps: Problems

    1. React
      *
      *
    2. Progressive Webapps
      *
      *

    9. Architecture for massive apps: Frameworks

    1. React
      *
      *
    2. GraphQL
      *
      *

    10. React Native Script

    1. Setup
      *
      *
    2. Push notification
      *

    11. Extra For Lost Time

    1. Electron
      *
      *

    12. Extra For Lost Time

    Notes

    • Use FAQ sheet

    #Course

    Visit original content creator repository
    https://github.com/amrdraz/modernweb_course

  • trendify

    Trendify

    Trendify is a React-based e-commerce application designed for seamless online shopping. It offers a wide range of products across categories such as clothing, shoes, and home appliances. Users can browse products, add items to their cart or wishlist, and complete their purchase effortlessly through a streamlined checkout process.

    Preview:

    screenshot

    screenshot

    screenshot

    Built With

    • HTML
    • CSS
    • Tailwind
    • JavaScript
    • TypeScript
    • REACT
    • Redux
    • Webpack
    • Jest

    Live version

    Trendify

    Getting Started

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

    Prerequisites

    • A text editor(preferably Visual Studio Code)
    • Node
    • Web browser

    Install

    Using it Locally

    • Clone the project
    git clone git@github.com:thecodechaser/trendify.git
    
    cd trendify
    • Install dependencies
    npm i 
    or
    npm install
    • To Start the development server
    npm run dev
    • To test the project
    npm run test

    Visit And Open Files

    Visit Repo

    Download Repo

    Download Repo

    Authors

    ๐Ÿ‘ค Ranjeet Singh

    ๐Ÿค Contributing

    Contributions, issues, and feature requests are welcome!

    Feel free to check the issues page.

    Show your support

    Give a โญ๏ธ if you like this project!

    Acknowledgments

    • Inspiration: Microverse

    ๐Ÿ“ License

    This project is MIT licensed.

    Visit original content creator repository https://github.com/thecodechaser/trendify
  • menu

    The number of menu items depends on the installed modules | ะšะพะปะธั‡ะตัั‚ะฒะพ ะฟัƒะฝะบั‚ะพะฒ ะผะตะฝัŽ ะทะฐะฒะธัะธั‚ ะพั‚ ัƒัั‚ะฐะฝะพะฒะปะตะฝะฝั‹ั… ะผะพะดัƒะปะตะน

    (If the merchants in the menu do not work, apparently there was a server restart, you need to visit them on city near the vanguard and the forge and the great square of freedom as well as the balderon) just be near the NPC and they will work.

    (ะ•ัะปะธ ั‚ะพั€ะณะฐัˆะธ ะฒ ะผะตะฝัŽัˆะบะต ะฝะต ั€ะฐะฑะพั‚ะฐัŽั‚ ะฒะธะดะธะผะพ ะฑั‹ะป ั€ะตัั‚ะฐั€ั‚ ัะตั€ะฒะตั€ะฐ, ะฝัƒะถะฝะพ ะทะฝะฐั‡ะธั‚ ะฟั€ะพะฒะตะดะฐั‚ัŒ ะธั… ะฒ ะดะพะทะพั€ะต ะฒะพะทะปะต ะฐะฒะฐะฝะณะฐั€ะดะฐ ะธ ะบัƒะทะฝะธั†ัƒ ะดะพะทะพั€ะฐ ะธ ะฒะตะปะธะบะฐ ะฟะปะพั‰ะฐะดัŒ ัะฒะพะฑะพะดั‹ ะฐ ั‚ะฐะบะถะต ะฑะฐะปะดะตั€ะพะฝ) ะฟั€ะพัั‚ะพ ั€ัะดะพะผ ั ะฝะฟั ะพะบะฐะทะฐั‚ัŒัั ะธ ะพะฝะธ ะทะฐั€ะฐะฑะพั‚ะฐัŽั‚.

    Commands

    Toolbox(/8) Hotkey Command description ะžะฟะธัะฐะฝะธะต
    m Ctrl+Shift+M Open menu, also you can use ะ”ะปั ะฒั‹ะทะพะฒะฐ ะผะตะฝัŽ ะธัะฟะพะปัŒะทัƒะนั‚ะต ัะพั‡ะธั‚ะฐะฝะธะต
    m $dang Ctrl+Alt+H Vanguard teleport, also you can use ะ”ะปั ะฒั‹ะทะพะฒะฐ ั‚ะตะปะตะฟะพั€ั‚ะฐ ะฟะพ ะฐะฒะฐะฝะณะฐั€ะดัƒ ะบ ะดะฐะฝะถะฐะผ
    m $setting Ctrl+Alt+S Other settings menu ะฃะฟั€ะฐะฒะปัะตั‚ ะดะพะฟ. ั„ัƒะฝะบั†ะธัะผะธ ะธ ะฝะฐัั‚ั€ะพะนะบะฐะผะธ ะผะตะฝัŽ

    Supports mods

    ะŸะพะดะดะตั€ะถะธะฒะฐะตั‚ ั‡ะฐัั‚ะธั‡ะฝะพะต ัƒะฟั€ะฐะฒะปะตะฝะธะต ัะปะตะดัƒัŽั‰ะธะผะธ ะผะพะดัƒะปัะผะธ:

    Mod URL
    Boss Helper ะŸะพะธัะบ ั‚ะพั€ะณะพะฒั†ะตะฒ ะผะพะฝะตั‚ะบะฐะผะธ ะฐะผะฐะดัŽะฐะบ https://github.com/hsdn/Boss-Helper
    Tera Guide ะŸะพะดัะบะฐะทะบะธ ะฒ ะฟะพะดะทะตะผะตะปัŒัั… https://github.com/hsdn/tera-guide
    Translate chat ะะฒั‚ะพะฟะตั€ะตะฒะพะด ั‡ะฐั‚ะฐ https://github.com/hsdn/translate-chat
    Box-opener ะะฒั‚ะพะพั‚ะบั€ั‹ั‚ะธะต ัั‰ะธะบะพะฒ https://github.com/tera-private-mods/generic-box-opener-item-user
    Rootbeer ะะฒั‚ะพะดะพะฑั‹ั‡ะฐ ะฟะธะฒะฐ ะธะท ัั‰ะธะบะพะฒ ะ‘ะฐะผะฐั€ะฐะผะฐ https://github.com/hsdn/rootbeer
    Auto accept lfg ะะฒั‚ะพะฟั€ะธะตะผ ะฒ ะฟะฐั‚ะธ ั ะปั„ะณ https://github.com/hsdn/auto-lfg-accept
    Auto guild invite ะะฒั‚ะพะฟั€ะธะณะปะฐัˆะตะฝะธะต ะฒ ะณะธะปัŒะดะธัŽ https://github.com/hsdn/auto-guild-invite
    Anti cc ะะฝั‚ะธ ะพั‚ะบะธะด https://github.com/hsdn/anti-cc
    Unicast ะ’ะฝะตัˆะบะธ ะธ ะฟั€ะพั‡ะธะต ะฐะบัะตัััƒะฐั€ั‹ https://github.com/tera-private-mods/unicast-100
    Auto pet ะะฒั‚ะพ ะฟั€ะธะทั‹ะฒ ะธ ะบะพั€ะผะตะถะบะฐ ะฟะธั‚ะพะผั†ะฐ ั ะฐะฒั‚ะพะผะฐั‚ะธั‡ะตัะบะธะผ ัŽะทะฐะฝะธะตะผ ะฑะฐั„ะฐ https://github.com/tera-private-mods/auto-pet
    Auto Bank ะะฒั‚ะพัะบะปะฐะดั‹ะฒะฐะฝะธะต ะฒะตั‰ะตะน ะฒ ะฑะฐะฝะบ https://github.com/tera-private-mods/auto-bank
    Fps Utils https://github.com/tera-private-mods/fps-utils
    Auto Loot https://github.com/tera-private-mods/auto-loot
    Auto Guildquest ะะฒั‚ะพัะดะฐั‡ะฐ ะบะฒะตัั‚ะพะฒ ะณะธะปัŒะดะธะธ https://github.com/tera-private-mods/Auto-Guildquest
    Wings of Darkan ะะฒั‚ะพ ะฟั€ะธะทั‹ะฒะฐะฝะธะต ะบั€ั‹ะปัŒะตะฒ ะดะฐั€ะบะฐะฝะฐ https://github.com/FrostSigil/Darkhan-Wings

    Update

    23.08.23

    • ะ”ะพะฑะฐะฒะปะตะฝะฐ ะฒะพะทะผะพะถะฝะพัั‚ัŒ ะฟะพะดั‚ัะณะธะฒะฐะฝะธั ั‚ะพั€ะณะฐัˆะตะน ะธะท ะ‘ะฐะปะดะตั€ะพะฝะฐ ะธะปะธ ะ”ะพะทะพั€ะฐ. ะŸั€ะพั‰ะต ะณะพะฒะพั€ั ะดะพัั‚ะฐั‚ะพั‡ะฝะพ ะฟะพะฑั‹ะฒะฐั‚ัŒ ะฒ ะ”ะพะทะพั€ะต ะธะปะธ ะ‘ะฐะปะดะตั€ะพะฝะต ั‡ั‚ะพะฑั‹ ั‚ะพั€ะณะฐัˆะธ ะทะฐั€ะฐะฑะพั‚ะฐะปะธ(ะบั€ะพะผะต ัะฟะตั†. ั‚ะฐะบะธั… ะบะฐะบ “ะ—ะฝะฐะบะธ” ะพะฝะธ ะตัั‚ัŒ ั‚ะพะปัŒะบะพ ะฒ ะ’ะตะปะธะบะต) (ะ’ ะดะฐะปัŒะฝะตะนัˆะตะผ ะฑัƒะดัƒั‚ ะดะพะฑะฐะฒะปะตะฝั‹ ะฒัะต ะณะพั€ะพะดะฐ ะฐ ั‚ะฐะบะถะต ะฑะปะพะบะฟะพัั‚ั‹ ะณะดะต ะตัั‚ัŒ ั‚ะพั€ะณะฐัˆะธ).
    • ะ”ะพะฑะฐะฒะปะตะฝะฐ ั„ัƒะฝะบั†ะธั ะฐะฒั‚ะพ ะพั‚ะบั€ั‹ะฒะฐะฝะธั ะบะพั€ะพะฑะพะบ ะฒ ะพะดะธะฝ ะบะปะธะบ. ะ’ะบะปัŽั‡ะฐะตั‚ัั ะฒ ะฟั€ะพั‡ะธั… ะฝะฐัั‚ั€ะพะนะบะฐั… ะปะธะฑะพ ะบะพะผะฐะฝะดะพะน m autobox ะฐ ั‚ะฐะบะถะต ะตัั‚ัŒ ะบะพะผะฐะฝะดะฐ ะฝะฐัั‚ั€ะพะนะบะธ ะทะฐะดะตั€ะถะบะธ ะพั‚ะบั€ั‹ั‚ะธั ะผะตะถะดัƒ ะบะพั€ะพะฑะบะฐะผะธ m boxdelay [ะฒั€ะตะผั ะฒ ะผะธะปะธัะตะบัƒะฝะดะฐั…] ะฝะฐะฟั€ะธะผะตั€: m boxdelay 150.
    • ะ”ะพะฟะพะปะฝะตะฝั‹ ะธ ะฐะบั‚ัƒะฐะปะธะทะธั€ะพะฒะฐะฝั‹ ั‚ะตะปะตะฟะพั€ั‚ั‹ ะฟะพ ะฐะฒะฐะฝะณะฐั€ะดะฐะผ ะบ ะดะฐะฝะถะฐะผ ะธ ะธะฒะตะฝั‚ะฐะผ ะฟะพะด ะผะตะฝะผัƒ (ะ ะฐะฑะพั‚ะฐะตั‚ ะดะฐะถะต ะฒ ะดะฐะฝะถะฐั… ะธ ะบะพะณะดะฐ ะฟะตั€ัะพะฝะฐะถ ะฒ ะฑะพัŽ, ะฒ ะพั‚ะปะธั‡ะธะธ ะพั‚ ะพะบะฝะฐ ะฐะฒะฐะฝะณะฐั€ะดะฐ).

    19.09.23

    • ะ”ะพะฟะพะปะฝะตะฝ ั‚ะตะปะตะฟะพั€ั‚ ะฟะพ ะฐะฒะฐะฝะณะฐั€ะดัƒ ะบ ะดะฐะฝะถะฐะผ ะปัƒะบะผะธะธ ะธ ัะฒั….

    13.11.23

    • ะะบั‚ัƒะฐะปะธะทะธั€ะพะฒะฐะฝั‹ ั‚ะฟ ะฟะพ ะฐะฒะฐะฝะณะฐั€ะดัƒ ะบ ะดะฐะฝะถะฐะผ.
    • ะ”ะพะฟะพะปะฝะตะฝะฐ ั„ัƒะฝะบั†ะธั ะฟั€ะพะฟัƒัะบะฐ ะบะฐัั‚ ัั†ะตะฝ, (ัƒะฑั€ะฐะฝะพ ะฟะพะฒะพั€ะฐั‡ะธะฒะฐะฝะธะต ะบะฐะผะตั€ั‹ ะฒ ัั‚ะพั€ะพะฝัƒ ะฟั€ะธ ะฟั€ะธะฑะปะธะถะตะฝะธัŽ ะบ ะฑะพััะฐะผ ะฒ ั‚ะตะฝะตะฑั€ะธัะต ะธ ะผะฐัั‚ะตั€ัะบะพะน ะปะตะฐะฝะดั€ะฐ).

    25.02.24

    • ะžั‚ะดะตะปัŒะฝะฐั ะบะพะผะฐะฝะดะฐ ะพั‚ะบะปัŽั‡ะตะฝะธั ะฐะฝะธะผะฐั†ะธะน ะฝะพะฒั‹ั… ะฑั€ะพัˆะตะบ ะฑั€ะพัˆะตะบ m brooch

    10.12.24

    • ะ”ะพะฑะฐะฒะปะตะฝะฝะฐ ะฟะพะดะดะตั€ะถะบะฐ ะฐะฝะณะปะธะนัะบะพะณะพ / ั€ัƒััะบะพะณะพ ัะทั‹ะบะพะฒ (ะพะฟั€ะตะดะตะปัะตั‚ัั ะฝะฐ ะพัะฝะพะฒะต ัะทั‹ะบะฐ ToolBox).

    15.02.24

    • ะ”ะพะฑะฐะฒะปะตะฝะฝั‹ NPC (ั‚ะพั€ะณะฐัˆะธ) ะธะท ะฑะพะปัŒัˆะธั… ะณะพั€ะพะดะพะฒ ะธ ะžัั‚ั€ะพะฒะฐ ะ—ะฐั€ะธ.

    Credits

    • Enndy1005 – ะŸะพะผะพั‰ัŒ ั ะฟะตั€ะตะฒะพะดะพะผ ะฝะฐ ะฐะฝะณะปะธะนัะบะธะน ัะทั‹ะบ.
    Visit original content creator repository https://github.com/FrostSigil/menu
  • menu

    The number of menu items depends on the installed modules | ะšะพะปะธั‡ะตัั‚ะฒะพ ะฟัƒะฝะบั‚ะพะฒ ะผะตะฝัŽ ะทะฐะฒะธัะธั‚ ะพั‚ ัƒัั‚ะฐะฝะพะฒะปะตะฝะฝั‹ั… ะผะพะดัƒะปะตะน

    (If the merchants in the menu do not work, apparently there was a server restart, you need to visit them on city near the vanguard and the forge and the great square of freedom as well as the balderon) just be near the NPC and they will work.

    (ะ•ัะปะธ ั‚ะพั€ะณะฐัˆะธ ะฒ ะผะตะฝัŽัˆะบะต ะฝะต ั€ะฐะฑะพั‚ะฐัŽั‚ ะฒะธะดะธะผะพ ะฑั‹ะป ั€ะตัั‚ะฐั€ั‚ ัะตั€ะฒะตั€ะฐ, ะฝัƒะถะฝะพ ะทะฝะฐั‡ะธั‚ ะฟั€ะพะฒะตะดะฐั‚ัŒ ะธั… ะฒ ะดะพะทะพั€ะต ะฒะพะทะปะต ะฐะฒะฐะฝะณะฐั€ะดะฐ ะธ ะบัƒะทะฝะธั†ัƒ ะดะพะทะพั€ะฐ ะธ ะฒะตะปะธะบะฐ ะฟะปะพั‰ะฐะดัŒ ัะฒะพะฑะพะดั‹ ะฐ ั‚ะฐะบะถะต ะฑะฐะปะดะตั€ะพะฝ) ะฟั€ะพัั‚ะพ ั€ัะดะพะผ ั ะฝะฟั ะพะบะฐะทะฐั‚ัŒัั ะธ ะพะฝะธ ะทะฐั€ะฐะฑะพั‚ะฐัŽั‚.

    Commands

    Toolbox(/8) Hotkey Command description ะžะฟะธัะฐะฝะธะต
    m Ctrl+Shift+M Open menu, also you can use ะ”ะปั ะฒั‹ะทะพะฒะฐ ะผะตะฝัŽ ะธัะฟะพะปัŒะทัƒะนั‚ะต ัะพั‡ะธั‚ะฐะฝะธะต
    m $dang Ctrl+Alt+H Vanguard teleport, also you can use ะ”ะปั ะฒั‹ะทะพะฒะฐ ั‚ะตะปะตะฟะพั€ั‚ะฐ ะฟะพ ะฐะฒะฐะฝะณะฐั€ะดัƒ ะบ ะดะฐะฝะถะฐะผ
    m $setting Ctrl+Alt+S Other settings menu ะฃะฟั€ะฐะฒะปัะตั‚ ะดะพะฟ. ั„ัƒะฝะบั†ะธัะผะธ ะธ ะฝะฐัั‚ั€ะพะนะบะฐะผะธ ะผะตะฝัŽ

    Supports mods

    ะŸะพะดะดะตั€ะถะธะฒะฐะตั‚ ั‡ะฐัั‚ะธั‡ะฝะพะต ัƒะฟั€ะฐะฒะปะตะฝะธะต ัะปะตะดัƒัŽั‰ะธะผะธ ะผะพะดัƒะปัะผะธ:

    Mod URL
    Boss Helper ะŸะพะธัะบ ั‚ะพั€ะณะพะฒั†ะตะฒ ะผะพะฝะตั‚ะบะฐะผะธ ะฐะผะฐะดัŽะฐะบ https://github.com/hsdn/Boss-Helper
    Tera Guide ะŸะพะดัะบะฐะทะบะธ ะฒ ะฟะพะดะทะตะผะตะปัŒัั… https://github.com/hsdn/tera-guide
    Translate chat ะะฒั‚ะพะฟะตั€ะตะฒะพะด ั‡ะฐั‚ะฐ https://github.com/hsdn/translate-chat
    Box-opener ะะฒั‚ะพะพั‚ะบั€ั‹ั‚ะธะต ัั‰ะธะบะพะฒ https://github.com/tera-private-mods/generic-box-opener-item-user
    Rootbeer ะะฒั‚ะพะดะพะฑั‹ั‡ะฐ ะฟะธะฒะฐ ะธะท ัั‰ะธะบะพะฒ ะ‘ะฐะผะฐั€ะฐะผะฐ https://github.com/hsdn/rootbeer
    Auto accept lfg ะะฒั‚ะพะฟั€ะธะตะผ ะฒ ะฟะฐั‚ะธ ั ะปั„ะณ https://github.com/hsdn/auto-lfg-accept
    Auto guild invite ะะฒั‚ะพะฟั€ะธะณะปะฐัˆะตะฝะธะต ะฒ ะณะธะปัŒะดะธัŽ https://github.com/hsdn/auto-guild-invite
    Anti cc ะะฝั‚ะธ ะพั‚ะบะธะด https://github.com/hsdn/anti-cc
    Unicast ะ’ะฝะตัˆะบะธ ะธ ะฟั€ะพั‡ะธะต ะฐะบัะตัััƒะฐั€ั‹ https://github.com/tera-private-mods/unicast-100
    Auto pet ะะฒั‚ะพ ะฟั€ะธะทั‹ะฒ ะธ ะบะพั€ะผะตะถะบะฐ ะฟะธั‚ะพะผั†ะฐ ั ะฐะฒั‚ะพะผะฐั‚ะธั‡ะตัะบะธะผ ัŽะทะฐะฝะธะตะผ ะฑะฐั„ะฐ https://github.com/tera-private-mods/auto-pet
    Auto Bank ะะฒั‚ะพัะบะปะฐะดั‹ะฒะฐะฝะธะต ะฒะตั‰ะตะน ะฒ ะฑะฐะฝะบ https://github.com/tera-private-mods/auto-bank
    Fps Utils https://github.com/tera-private-mods/fps-utils
    Auto Loot https://github.com/tera-private-mods/auto-loot
    Auto Guildquest ะะฒั‚ะพัะดะฐั‡ะฐ ะบะฒะตัั‚ะพะฒ ะณะธะปัŒะดะธะธ https://github.com/tera-private-mods/Auto-Guildquest
    Wings of Darkan ะะฒั‚ะพ ะฟั€ะธะทั‹ะฒะฐะฝะธะต ะบั€ั‹ะปัŒะตะฒ ะดะฐั€ะบะฐะฝะฐ https://github.com/FrostSigil/Darkhan-Wings

    Update

    23.08.23

    • ะ”ะพะฑะฐะฒะปะตะฝะฐ ะฒะพะทะผะพะถะฝะพัั‚ัŒ ะฟะพะดั‚ัะณะธะฒะฐะฝะธั ั‚ะพั€ะณะฐัˆะตะน ะธะท ะ‘ะฐะปะดะตั€ะพะฝะฐ ะธะปะธ ะ”ะพะทะพั€ะฐ. ะŸั€ะพั‰ะต ะณะพะฒะพั€ั ะดะพัั‚ะฐั‚ะพั‡ะฝะพ ะฟะพะฑั‹ะฒะฐั‚ัŒ ะฒ ะ”ะพะทะพั€ะต ะธะปะธ ะ‘ะฐะปะดะตั€ะพะฝะต ั‡ั‚ะพะฑั‹ ั‚ะพั€ะณะฐัˆะธ ะทะฐั€ะฐะฑะพั‚ะฐะปะธ(ะบั€ะพะผะต ัะฟะตั†. ั‚ะฐะบะธั… ะบะฐะบ “ะ—ะฝะฐะบะธ” ะพะฝะธ ะตัั‚ัŒ ั‚ะพะปัŒะบะพ ะฒ ะ’ะตะปะธะบะต) (ะ’ ะดะฐะปัŒะฝะตะนัˆะตะผ ะฑัƒะดัƒั‚ ะดะพะฑะฐะฒะปะตะฝั‹ ะฒัะต ะณะพั€ะพะดะฐ ะฐ ั‚ะฐะบะถะต ะฑะปะพะบะฟะพัั‚ั‹ ะณะดะต ะตัั‚ัŒ ั‚ะพั€ะณะฐัˆะธ).
    • ะ”ะพะฑะฐะฒะปะตะฝะฐ ั„ัƒะฝะบั†ะธั ะฐะฒั‚ะพ ะพั‚ะบั€ั‹ะฒะฐะฝะธั ะบะพั€ะพะฑะพะบ ะฒ ะพะดะธะฝ ะบะปะธะบ. ะ’ะบะปัŽั‡ะฐะตั‚ัั ะฒ ะฟั€ะพั‡ะธั… ะฝะฐัั‚ั€ะพะนะบะฐั… ะปะธะฑะพ ะบะพะผะฐะฝะดะพะน m autobox ะฐ ั‚ะฐะบะถะต ะตัั‚ัŒ ะบะพะผะฐะฝะดะฐ ะฝะฐัั‚ั€ะพะนะบะธ ะทะฐะดะตั€ะถะบะธ ะพั‚ะบั€ั‹ั‚ะธั ะผะตะถะดัƒ ะบะพั€ะพะฑะบะฐะผะธ m boxdelay [ะฒั€ะตะผั ะฒ ะผะธะปะธัะตะบัƒะฝะดะฐั…] ะฝะฐะฟั€ะธะผะตั€: m boxdelay 150.
    • ะ”ะพะฟะพะปะฝะตะฝั‹ ะธ ะฐะบั‚ัƒะฐะปะธะทะธั€ะพะฒะฐะฝั‹ ั‚ะตะปะตะฟะพั€ั‚ั‹ ะฟะพ ะฐะฒะฐะฝะณะฐั€ะดะฐะผ ะบ ะดะฐะฝะถะฐะผ ะธ ะธะฒะตะฝั‚ะฐะผ ะฟะพะด ะผะตะฝะผัƒ (ะ ะฐะฑะพั‚ะฐะตั‚ ะดะฐะถะต ะฒ ะดะฐะฝะถะฐั… ะธ ะบะพะณะดะฐ ะฟะตั€ัะพะฝะฐะถ ะฒ ะฑะพัŽ, ะฒ ะพั‚ะปะธั‡ะธะธ ะพั‚ ะพะบะฝะฐ ะฐะฒะฐะฝะณะฐั€ะดะฐ).

    19.09.23

    • ะ”ะพะฟะพะปะฝะตะฝ ั‚ะตะปะตะฟะพั€ั‚ ะฟะพ ะฐะฒะฐะฝะณะฐั€ะดัƒ ะบ ะดะฐะฝะถะฐะผ ะปัƒะบะผะธะธ ะธ ัะฒั….

    13.11.23

    • ะะบั‚ัƒะฐะปะธะทะธั€ะพะฒะฐะฝั‹ ั‚ะฟ ะฟะพ ะฐะฒะฐะฝะณะฐั€ะดัƒ ะบ ะดะฐะฝะถะฐะผ.
    • ะ”ะพะฟะพะปะฝะตะฝะฐ ั„ัƒะฝะบั†ะธั ะฟั€ะพะฟัƒัะบะฐ ะบะฐัั‚ ัั†ะตะฝ, (ัƒะฑั€ะฐะฝะพ ะฟะพะฒะพั€ะฐั‡ะธะฒะฐะฝะธะต ะบะฐะผะตั€ั‹ ะฒ ัั‚ะพั€ะพะฝัƒ ะฟั€ะธ ะฟั€ะธะฑะปะธะถะตะฝะธัŽ ะบ ะฑะพััะฐะผ ะฒ ั‚ะตะฝะตะฑั€ะธัะต ะธ ะผะฐัั‚ะตั€ัะบะพะน ะปะตะฐะฝะดั€ะฐ).

    25.02.24

    • ะžั‚ะดะตะปัŒะฝะฐั ะบะพะผะฐะฝะดะฐ ะพั‚ะบะปัŽั‡ะตะฝะธั ะฐะฝะธะผะฐั†ะธะน ะฝะพะฒั‹ั… ะฑั€ะพัˆะตะบ ะฑั€ะพัˆะตะบ m brooch

    10.12.24

    • ะ”ะพะฑะฐะฒะปะตะฝะฝะฐ ะฟะพะดะดะตั€ะถะบะฐ ะฐะฝะณะปะธะนัะบะพะณะพ / ั€ัƒััะบะพะณะพ ัะทั‹ะบะพะฒ (ะพะฟั€ะตะดะตะปัะตั‚ัั ะฝะฐ ะพัะฝะพะฒะต ัะทั‹ะบะฐ ToolBox).

    15.02.24

    • ะ”ะพะฑะฐะฒะปะตะฝะฝั‹ NPC (ั‚ะพั€ะณะฐัˆะธ) ะธะท ะฑะพะปัŒัˆะธั… ะณะพั€ะพะดะพะฒ ะธ ะžัั‚ั€ะพะฒะฐ ะ—ะฐั€ะธ.

    Credits

    • Enndy1005 – ะŸะพะผะพั‰ัŒ ั ะฟะตั€ะตะฒะพะดะพะผ ะฝะฐ ะฐะฝะณะปะธะนัะบะธะน ัะทั‹ะบ.
    Visit original content creator repository https://github.com/FrostSigil/menu
  • febs-java

    Febs

    Maven Central License

    Febs is a common libraries in fluent API. Most api is like javascript.

    How to use

    maven config.

    <dependency>
        <groupId>cn.brainpoint</groupId>
        <artifactId>febs</artifactId>
        <version>0.1.3</version>
    </dependency>
    import cn.brainpoint.febs;
    
    //
    // It will execute asynchronously after call `execute()`
    //
    PromiseFuture future = Febs.Net.fetch("https://xxx")
                                // get response status code.
                                .then(res->{
                                    // code.
                                    System.out.print(res.statusCode);
                                    // message.
                                    System.out.print(res.statusMsg);
                                    
                                    // get text content.
                                    return res.text();
                                })
                                .then(content->{
                            
                                })
                                .execute();
    
    
    //
    // Can use `future.get()` to get result in synchronize.
    //
    String result = (String) future.get();

    config

    It can initial with thread pool config. Thread pool will affect performance of promise.

    // Initial with thread pool config.
    Febs.init(new Febs.ThreadPoolCfg(
                            2, 
                            4, 
                            20000, 
                            new LinkedBlockingQueue<>(),
                            new ThreadPoolExecutor.AbortPolicy())
             );

    Asynchronous in ThreadPool

    Use getExecutorService api to get a asynchronous work item.

    try {
        Future<Object> future 
                        = Febs.getExecutorService.submit(()->{
                            // do anything in this thread.
                            return "any";
                        });
        Object result = future.get();
    } catch (ExecutionException e) {
        e.printStackTrace();
    } catch (InterruptedException e) {
        e.printStackTrace();
    } catch (Exception e) {
        e.printStackTrace();
    }

    Asynchronous in Promise

    Febs promise like javascript promise api, use chain list way to do asynchronous work.

    • .then: same as js-es6 promise.then chain.
    • .fail: same as js-es6 promise.catch chain.
    • .finish: same as js promise.finally chain.
    • .execute: It must be call to activate promise in Febs promise.

    Base scene

    /**
     * Make a promise object.
     */
    Promise promise = new Promise((IResolve resolve, IReject reject)-> { 
    
                                    // call this set status to 'fulfilled'
                                    resolve.execute(retVal); 
    
                                    // call this set status to 'rejected'
                                    reject.execute(new Exception(""));
                                });
    
    /**
     * chain.
     */
    PromiseFuture = promise.then(res->{  })
                           .then(()->{ return 1; })
                           .then(res1->{  })
                           .fail(e->{  })  // same as javascript catch()
                           .finish(()->{}) // same as javascript finally()
                           .execute();  // activate promise.
    
    /**
     * Block until promise finish, if you want to wait.
     */
    PromiseFuture.get();

    return another promise object in chain.

    promise.then(res->{
                // this nest promise cannot call execute().
                return new Promise((resolve, reject)->{
                    ...
                });
            })
            .then(res->{
            })
            .execute();

    all

    /**
     * Promise object array.
     * !Warning: All promise object cannot call execute() funciton.
     */
    Promise[] promiseArr = {...};
    
    /**
     * execute all promise object.
     */
    Promise.all(promiseArr)
           .then(res->{
                // all promise done.
            })
            .fail(e->{
                // if some promise rejected.
            })
           .execute();

    template

    The then and fail chain can return a object to next chain. The data type of return value is unkonw, we can use template to spacify a data type.

    e.g.

    // Spacify a data type.
    Promise<Integer> promise = new Promise<Integer>((IResolve<Integer> resolve, IReject reject)-> { 
                                    resolve.execute(2); 
                                });
    
    // use the data type.
    promise.then((Integer res)->{ 
                // ...
            })
           .execute();  // execute promise.

    Uncaught Exception Handler

    Some promise object will catch exception use this method, if it have’t call .fail()

    Promise.setUncaughtExceptionHandler(e->{
      // handle error.
    });

    Network transfer in Fetch

    The network transfer in fetch style

    Get text content.

    import cn.brainpoint.febs;
    
    Febs.Net.fetch("https://xxxx")
            // get text content.
            .then(res->{ return res.text(); })
            // print content.
            .then(res->{
                System.out.print(res);
            })
            // If exception cause.
            .fail((e)->{
                System.err.print(e.getMessage());
            })
            .execute();

    Get binary content.

    import cn.brainpoint.febs;
    
    Febs.Net.fetch("https://xxxx")
            // get blob content.
            .then(res->{ return res.blob(); })
            // print content.
            .then((res)->{
                BufferedReader in = (BufferedReader)res;
                char buf[] = new char[1024];
    
                while (in.read(buf, 0, buf.length) != -1) {
                    System.out.printf("%s",  Arrays.toString(buf));
                    Arrays.fill(buf, '\0');
                }
    
                // important to call close().
                in.close();
            })
            // If exception cause.
            .fail((e)->{
                System.err.print(e.getMessage());
            })
            .execute();

    IMPORTANT: close BufferedReader after read blob.

    Get response headers.

    import cn.brainpoint.febs;
    
    Febs.Net.fetch("https://xxxx")
            // get response status code.
            .then(res->{
                // code.
                System.out.print(res.statusCode);
                // message.
                System.out.print(res.statusMsg);
                
                return res;
            })
            // get response headers.
            .then(res->{
                Set<String> keySet = res.headers.keySet();
                Iterator<String> it1 = keySet.iterator();
                while(it1.hasNext()){
                    String Key = it1.next();
                    System.out.print("header: " + Key);
                    List<String> values = res.headers.get(Key);
                    System.out.print(values);
                }
            })
            // If exception cause.
            .fail((e)->{
                System.err.print(e.getMessage());
            })
            .execute();

    Set request parameter

    import cn.brainpoint.febs;
    
    Febs.Net.fetch(new Requset(
                        url,
                        body,
                        method,
                        headers,
                        timeout,
                    ))
            // get blob content.
            .then(res->{ return res.blob(); })
            .execute();

    SSL trust manager

    import cn.brainpoint.febs;
    
    /**
     * set the trust manager.<br>
     * The default trust manager is trust all site.
     * 
     * @param trustManger the trust manager object.
     */
    Febs.Net.setDefaultTrustManger(X509TrustManager trustManager);

    Utilities

    sleep

    Use sleep API to schedule tasks.

    import cn.brainpoint.febs;
    
    Febs.Utils.sleep(1000)
            .then(()->{
                System.out.print("after 1000ms.");
            })
            .execute();
    
    
    Febs.Utils.sleep(1000)
            .then(res->{
                System.out.print("after 1000ms.");
                return Febs.Utils.sleep(2000);
            })
            .then(res->{
                System.out.print("after 2000ms.");
            })
            .execute();
    Visit original content creator repository https://github.com/brainpoint/febs-java
  • rhea-promise

    rhea-promise

    A Promisified layer over rhea AMQP client.

    Pre-requisite

    • Node.js version: 6.x or higher.
    • We would still encourage you to install the latest available LTS version at any given time from https://nodejs.org. It is a good practice to always install the latest available LTS version of node.js.
    • Installing node.js on Windows or macOS is very simple with available installers on the node.js website. If you are using a linux based OS, then you can find easy to follow, one step installation instructions over here.

    Installation

    npm install rhea-promise

    Debug logs

    You can set the following environment variable to get the debug logs.

    • Getting debug logs from this library
    export DEBUG=rhea-promise*
    • Getting debug logs from this and the rhea library
    export DEBUG=rhea*
    • If you are not interested in viewing the message transformation (which consumes lot of console/disk space) then you can set the DEBUG environment variable as follows:
    export DEBUG=rhea*,-rhea:raw,-rhea:message,-rhea-promise:eventhandler,-rhea-promise:translate

    Logging to a file

    • Set the DEBUG environment variable as shown above and then run your test script as follows:
      • Logging statements from you test script go to out.log and logging statement from the sdk go to debug.log.
        node your-test-script.js > out.log 2>debug.log
      • Logging statements from your test script and the sdk go to the same file out.log by redirecting stderr to stdout (&1), and then redirect stdout to a file:
        node your-test-script.js >out.log 2>&1
      • Logging statements from your test script and the sdk go to the same file out.log.
          node your-test-script.js &> out.log

    Notable differences between rhea and rhea-promise

    Error propagation to the parent entity

    • In AMQP, for two peers to communicate successfully, different entities (Container, Connection, Session, Link) need to be created. There is a relationship between those entities.
      • 1 Container can have 1..* Connections.
      • 1 Connection can have 1..* Sessions.
      • 1 Session can have 1..* Links.
      • A Link can have the role of Receiver or Sender.
    • Each entity (connection, session, link) maintains its own state to let other entities know about what it is doing. Thus,
      • if the connection goes down then, everything on the connection – sessions, links are down.
      • if a session goes down then, all the the links on that session are down.
    • When an entity goes down rhea emits *_error and *_close events, where * can be “sender”, “receiver”, “session”, “connection”. If event listeners for the aforementioned events are not added at the appropriate level, then rhea propagates those events to its parent entity.
      If they are not handled at the Container level (uber parent), then they are transformed into an error event. This would cause your
      application to crash if there is no listener added for the error event.
    • In rhea-promise, the library creates, equivalent objects Connection, Session, Sender, Receiver and wraps objects from rhea within them.
      It adds event listeners to all the possible events that can occur at any level and re-emits those events with the same arguments as one would
      expect from rhea. This makes it easy for consumers of rhea-promise to use the EventEmitter pattern. Users can efficiently use different
      event emitter methods like .once(), .on(), .prependListeners(), etc. Since rhea-promise add those event listeners on rhea objects,
      the errors will never be propagated to the parent entity. This can be good as well as bad depending on what you do.

      • Good*_error events and *_close events emitted on an entity will not be propagated to it’s parent. Thus ensuring that errors are handled at the right level.
      • Bad – If you do not add listeners for *_error and *_close events at the right level, then you will never know why an entity shutdown.

    We believe our design enforces good practices to be followed while using the event emitter pattern.

    Examples

    Please take a look at the sample.env file for examples on how to provide the values for different
    parameters like host, username, password, port, senderAddress, receiverAddress, etc.

    Sending a message via Sender.

    • Running the example from terminal: > ts-node ./examples/send.ts.

    NOTE: If you are running the sample with .env config file, then please run the sample from the directory that contains .env config file.

    import {
      Connection, Sender, EventContext, Message, ConnectionOptions, Delivery, SenderOptions
    } from "rhea-promise";
    import * as dotenv from "dotenv"; // Optional for loading environment configuration from a .env (config) file
    dotenv.config();
    
    const host = process.env.AMQP_HOST || "host";
    const username = process.env.AMQP_USERNAME || "sharedAccessKeyName";
    const password = process.env.AMQP_PASSWORD || "sharedAccessKeyValue";
    const port = parseInt(process.env.AMQP_PORT || "5671");
    const senderAddress = process.env.SENDER_ADDRESS || "address";
    
    async function main(): Promise<void> {
      const connectionOptions: ConnectionOptions = {
        transport: "tls",
        host: host,
        hostname: host,
        username: username,
        password: password,
        port: port,
        reconnect: false
      };
      const connection: Connection = new Connection(connectionOptions);
      const senderName = "sender-1";
      const senderOptions: SenderOptions = {
        name: senderName,
        target: {
          address: senderAddress
        },
        onError: (context: EventContext) => {
          const senderError = context.sender && context.sender.error;
          if (senderError) {
            console.log(">>>>> [%s] An error occurred for sender '%s': %O.",
              connection.id, senderName, senderError);
          }
        },
        onSessionError: (context: EventContext) => {
          const sessionError = context.session && context.session.error;
          if (sessionError) {
            console.log(">>>>> [%s] An error occurred for session of sender '%s': %O.",
              connection.id, senderName, sessionError);
          }
        }
      };
    
      await connection.open();
      const sender: Sender = await connection.createSender(senderOptions);
      const message: Message = {
        body: "Hello World!!",
        message_id: "12343434343434"
      };
    
      // Please, note that we are not awaiting on sender.send()
      // You will notice that `delivery.settled` will be `false`.
      const delivery: Delivery = sender.send(message);
      console.log(">>>>>[%s] Delivery id: %d, settled: %s",
        connection.id,
        delivery.id,
        delivery.settled);
    
      await sender.close();
      await connection.close();
    }
    
    main().catch((err) => console.log(err));

    Sending a message via AwaitableSender

    • Running the example from terminal: > ts-node ./examples/awaitableSend.ts.

    import {
      Connection, Message, ConnectionOptions, Delivery, AwaitableSenderOptions, AwaitableSender
    } from "rhea-promise";
    
    import * as dotenv from "dotenv"; // Optional for loading environment configuration from a .env (config) file
    dotenv.config();
    
    const host = process.env.AMQP_HOST || "host";
    const username = process.env.AMQP_USERNAME || "sharedAccessKeyName";
    const password = process.env.AMQP_PASSWORD || "sharedAccessKeyValue";
    const port = parseInt(process.env.AMQP_PORT || "5671");
    const senderAddress = process.env.SENDER_ADDRESS || "address";
    
    async function main(): Promise<void> {
      const connectionOptions: ConnectionOptions = {
        transport: "tls",
        host: host,
        hostname: host,
        username: username,
        password: password,
        port: port,
        reconnect: false
      };
      const connection: Connection = new Connection(connectionOptions);
      const senderName = "sender-1";
      const awaitableSenderOptions: AwaitableSenderOptions = {
        name: senderName,
        target: {
          address: senderAddress
        },
      };
    
      await connection.open();
      // Notice that we are awaiting on the message being sent.
      const sender: AwaitableSender = await connection.createAwaitableSender(
        awaitableSenderOptions
      );
    
      for (let i = 0; i < 10; i++) {
        const message: Message = {
          body: `Hello World - ${i}`,
          message_id: i
        };
        // Note: Here we are awaiting for the send to complete.
        // You will notice that `delivery.settled` will be `true`, irrespective of whether the promise resolves or rejects.
        const delivery: Delivery = await sender.send(message, {
          timeoutInSeconds: 10
        });
        console.log(
          "[%s] await sendMessage -> Delivery id: %d, settled: %s",
          connection.id,
          delivery.id,
          delivery.settled
        );
      }
    
      await sender.close();
      await connection.close();
    }
    
    main().catch((err) => console.log(err));

    Receiving a message

    • Running the example from terminal: > ts-node ./examples/receive.ts.

    NOTE: If you are running the sample with .env config file, then please run the sample from the directory that contains .env config file.

    import {
      Connection, Receiver, EventContext, ConnectionOptions, ReceiverOptions, delay, ReceiverEvents
    } from "rhea-promise";
    import * as dotenv from "dotenv"; // Optional for loading environment configuration from a .env (config) file
    dotenv.config();
    
    const host = process.env.AMQP_HOST || "host";
    const username = process.env.AMQP_USERNAME || "sharedAccessKeyName";
    const password = process.env.AMQP_PASSWORD || "sharedAccessKeyValue";
    const port = parseInt(process.env.AMQP_PORT || "5671");
    const receiverAddress = process.env.RECEIVER_ADDRESS || "address";
    
    async function main(): Promise<void> {
      const connectionOptions: ConnectionOptions = {
        transport: "tls",
        host: host,
        hostname: host,
        username: username,
        password: password,
        port: port,
        reconnect: false
      };
      const connection: Connection = new Connection(connectionOptions);
      const receiverName = "receiver-1";
      const receiverOptions: ReceiverOptions = {
        name: receiverName,
        source: {
          address: receiverAddress
        },
        onSessionError: (context: EventContext) => {
          const sessionError = context.session && context.session.error;
          if (sessionError) {
            console.log(">>>>> [%s] An error occurred for session of receiver '%s': %O.",
              connection.id, receiverName, sessionError);
          }
        }
      };
    
      await connection.open();
      const receiver: Receiver = await connection.createReceiver(receiverOptions);
      receiver.on(ReceiverEvents.message, (context: EventContext) => {
        console.log("Received message: %O", context.message);
      });
      receiver.on(ReceiverEvents.receiverError, (context: EventContext) => {
        const receiverError = context.receiver && context.receiver.error;
        if (receiverError) {
          console.log(">>>>> [%s] An error occurred for receiver '%s': %O.",
            connection.id, receiverName, receiverError);
        }
      });
      // sleeping for 2 mins to let the receiver receive messages and then closing it.
      await delay(120000);
      await receiver.close();
      await connection.close();
    }
    
    main().catch((err) => console.log(err));

    Building the library

    • Clone the repo
    git clone https://github.com/amqp/rhea-promise.git
    
    • Install typescript, ts-node globally

    npm i -g typescript
    npm i -g ts-node
    
    • NPM install from the root of the package
    npm i
    
    • Build the project
    npm run build
    

    AMQP Protocol specification

    Amqp protocol specification can be found here.

    Visit original content creator repository
    https://github.com/amqp/rhea-promise

  • twl.py

    Warning

    This project is some 2-3 years old (though has been updated to the latest APIs) and is very incomplete since I never had time/motivation to really finish it. There’s a lot of legacy code that should be rewritten and ripped out because I didn’t know what I was doing.

    The main executable (twl.py) is a mess that was meant to only be temporary until I finish writing a proper CLI… That’s not going to happen at this rate.

    That being said it does kinda work.

    (You have to set PYTHONPATH=.. on Windows or the Linux equivalent first).

    Authenticate with Twitch (follow on-screen instructions)

    $ py -3.6 twl.py --auth
    

    (Authentication information will be saved in $HOME/twl.json on Linux or %USERPROFILE%/twl.json on Windows)

    List games:

    $ py -3.6 twl.py --list --sort
    
    

    Create aria2c file to download a game

    $ py -3.6 twl.py -v --install --install-base-dir "twitch" --aria2c --aria2c-file "/tmp/dllist.txt" --game-id <ID>
    

    This will also print the aria2c command to download the game.

    I left some debug/test code in there that shows how updating/patching works in theory. But I never got around to implementing that.


    Old README before I gave up

    twl.py (Twitch Launcher.py)

    A lightweight, multiplatform downloader/installer/updater for games available through the Twitch App.

    Motivation

    I wanted to have a simple, fairly lightweight way of downloading and running the (free) games I got through Twitch Prime without the Twitch App.

    Why?

    • Twitch App is Windows only
    • Twitch App is bloated (Twitch player, Discord clone, WoW/minecraft mod manager, and game distribution platform)
    • Twitch App is slow and requires an update nearly every launch (yay Electron)
    • Most Games are DRM free and don’t require the App

    Features, Scope and ToDo

    Already implemented:

    • Login through Twitch directly (no browser required*)
    • Amazon SDS APIs
    • Parsing v1/v2 manifests
    • Download list exporter for aria2c
    • Delta Patching (untested)

    *Unless manual CAPTCHA solving is required.

    Missing features:

    • Downloader
    • Updater
    • Installer (creating shortcuts, running redist installers, etc.)

    Out-of-scope/Not planned:

    • FuelPump stuff for DRM and online play

    ToDo

    • Rewrite main twl.py file (currently hacked together so it kinda works but pretty ugly)
    • Tests
    • pipenv file
    • setup.py file
    • more testing
      • Linux
      • Updating (v1 normal, v2 normal and delta)

    Visit original content creator repository
    https://github.com/derrod/twl.py