Category: Blog

  • strategy-schmategy

    Creative Commons Legal Code
    
    CC0 1.0 Universal
    
        CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE
        LEGAL SERVICES. DISTRIBUTION OF THIS DOCUMENT DOES NOT CREATE AN
        ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS
        INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES
        REGARDING THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS
        PROVIDED HEREUNDER, AND DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM
        THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS PROVIDED
        HEREUNDER.
    
    Statement of Purpose
    
    The laws of most jurisdictions throughout the world automatically confer
    exclusive Copyright and Related Rights (defined below) upon the creator
    and subsequent owner(s) (each and all, an "owner") of an original work of
    authorship and/or a database (each, a "Work").
    
    Certain owners wish to permanently relinquish those rights to a Work for
    the purpose of contributing to a commons of creative, cultural and
    scientific works ("Commons") that the public can reliably and without fear
    of later claims of infringement build upon, modify, incorporate in other
    works, reuse and redistribute as freely as possible in any form whatsoever
    and for any purposes, including without limitation commercial purposes.
    These owners may contribute to the Commons to promote the ideal of a free
    culture and the further production of creative, cultural and scientific
    works, or to gain reputation or greater distribution for their Work in
    part through the use and efforts of others.
    
    For these and/or other purposes and motivations, and without any
    expectation of additional consideration or compensation, the person
    associating CC0 with a Work (the "Affirmer"), to the extent that he or she
    is an owner of Copyright and Related Rights in the Work, voluntarily
    elects to apply CC0 to the Work and publicly distribute the Work under its
    terms, with knowledge of his or her Copyright and Related Rights in the
    Work and the meaning and intended legal effect of CC0 on those rights.
    
    1. Copyright and Related Rights. A Work made available under CC0 may be
    protected by copyright and related or neighboring rights ("Copyright and
    Related Rights"). Copyright and Related Rights include, but are not
    limited to, the following:
    
      i. the right to reproduce, adapt, distribute, perform, display,
         communicate, and translate a Work;
     ii. moral rights retained by the original author(s) and/or performer(s);
    iii. publicity and privacy rights pertaining to a person's image or
         likeness depicted in a Work;
     iv. rights protecting against unfair competition in regards to a Work,
         subject to the limitations in paragraph 4(a), below;
      v. rights protecting the extraction, dissemination, use and reuse of data
         in a Work;
     vi. database rights (such as those arising under Directive 96/9/EC of the
         European Parliament and of the Council of 11 March 1996 on the legal
         protection of databases, and under any national implementation
         thereof, including any amended or successor version of such
         directive); and
    vii. other similar, equivalent or corresponding rights throughout the
         world based on applicable law or treaty, and any national
         implementations thereof.
    
    2. Waiver. To the greatest extent permitted by, but not in contravention
    of, applicable law, Affirmer hereby overtly, fully, permanently,
    irrevocably and unconditionally waives, abandons, and surrenders all of
    Affirmer's Copyright and Related Rights and associated claims and causes
    of action, whether now known or unknown (including existing as well as
    future claims and causes of action), in the Work (i) in all territories
    worldwide, (ii) for the maximum duration provided by applicable law or
    treaty (including future time extensions), (iii) in any current or future
    medium and for any number of copies, and (iv) for any purpose whatsoever,
    including without limitation commercial, advertising or promotional
    purposes (the "Waiver"). Affirmer makes the Waiver for the benefit of each
    member of the public at large and to the detriment of Affirmer's heirs and
    successors, fully intending that such Waiver shall not be subject to
    revocation, rescission, cancellation, termination, or any other legal or
    equitable action to disrupt the quiet enjoyment of the Work by the public
    as contemplated by Affirmer's express Statement of Purpose.
    
    3. Public License Fallback. Should any part of the Waiver for any reason
    be judged legally invalid or ineffective under applicable law, then the
    Waiver shall be preserved to the maximum extent permitted taking into
    account Affirmer's express Statement of Purpose. In addition, to the
    extent the Waiver is so judged Affirmer hereby grants to each affected
    person a royalty-free, non transferable, non sublicensable, non exclusive,
    irrevocable and unconditional license to exercise Affirmer's Copyright and
    Related Rights in the Work (i) in all territories worldwide, (ii) for the
    maximum duration provided by applicable law or treaty (including future
    time extensions), (iii) in any current or future medium and for any number
    of copies, and (iv) for any purpose whatsoever, including without
    limitation commercial, advertising or promotional purposes (the
    "License"). The License shall be deemed effective as of the date CC0 was
    applied by Affirmer to the Work. Should any part of the License for any
    reason be judged legally invalid or ineffective under applicable law, such
    partial invalidity or ineffectiveness shall not invalidate the remainder
    of the License, and in such case Affirmer hereby affirms that he or she
    will not (i) exercise any of his or her remaining Copyright and Related
    Rights in the Work or (ii) assert any associated claims and causes of
    action with respect to the Work, in either case contrary to Affirmer's
    express Statement of Purpose.
    
    4. Limitations and Disclaimers.
    
     a. No trademark or patent rights held by Affirmer are waived, abandoned,
        surrendered, licensed or otherwise affected by this document.
     b. Affirmer offers the Work as-is and makes no representations or
        warranties of any kind concerning the Work, express, implied,
        statutory or otherwise, including without limitation warranties of
        title, merchantability, fitness for a particular purpose, non
        infringement, or the absence of latent or other defects, accuracy, or
        the present or absence of errors, whether or not discoverable, all to
        the greatest extent permissible under applicable law.
     c. Affirmer disclaims responsibility for clearing rights of other persons
        that may apply to the Work or any use thereof, including without
        limitation any person's Copyright and Related Rights in the Work.
        Further, Affirmer disclaims responsibility for obtaining any necessary
        consents, permissions or other rights required for any use of the
        Work.
     d. Affirmer understands and acknowledges that Creative Commons is not a
        party to this document and has no duty or obligation with respect to
        this CC0 or use of the Work.
    

    Visit original content creator repository
    https://github.com/renderghost/strategy-schmategy

  • email-spam-classification

    Email Spam Classification using Machine Learning

    Author: Ameen Mohammad

    This project implements a full machine learning pipeline for spam classification.


    Viewing Pre-Generated Results

    The notebook has been pre-executed, so you can explore the findings without running the code.

    🔗 Open in Google Colab

    Running the Notebook (Optional)

    For those interested in running the full pipeline:

    1. Open the notebook in Google Colab using the link above.
    2. Navigate to Runtime in the top menu and select Run all (or press CTRL + F9 / Cmd + F9 on Mac).
    3. If prompted with a security notice about execution permissions, click “Run Anyway.”
    4. The notebook will process the dataset and generate results step by step.

    Dataset Overview

    The dataset used in this project is a collection of 5,574 email messages, labeled as ‘spam’ or ‘notspam’. Below is a summary of the dataset:

    • Total Emails: 5,574
    • Spam Emails: 747 (13.4%)
    • Not Spam Emails: 4,827 (86.6%)
    • Average Email Length: 80 characters
    • Number of Duplicate Entries: 406

    Note: Missing values in the ‘text’ column have been handled by replacing them with an empty string.


    Key Findings

    After processing the data and training multiple models, the following results were obtained:

    Model Feature Extraction Accuracy Spam Recall Spam F1-score
    Logistic Regression TF-IDF 95.87% 74% 85%
    Support Vector Machine TF-IDF 97.76% 86% 92%
    Random Forest TF-IDF 97.49% 86% 91%
    Logistic Regression BoW 98.21% 89% 94%

    Conclusion:

    • Best Overall Accuracy: Logistic Regression with BoW features achieved the highest accuracy at 98.21%.
    • Best Spam Detection: Support Vector Machine with TF-IDF features achieved the highest spam recall at 86%.

    Note: TF-IDF (Term Frequency-Inverse Document Frequency) and BoW (Bag of Words) are techniques used to convert text data into numerical features.


    Future Improvements

    To further enhance the spam classification model, the following approaches can be considered:

    1. Hybrid Feature Extraction: Combining TF-IDF and BoW features to capture more nuances in the text data.
    2. Advanced Modeling Techniques: Implementing deep learning models such as LSTMs or Transformers (e.g., BERT) to improve performance.
    3. Hyperparameter Tuning: Fine-tuning the hyperparameters of the models to achieve better accuracy and recall.

    Explore the notebook to analyze the results or modify the code to experiment with different techniques.

    Visit original content creator repository
    https://github.com/ameen-m-dev/email-spam-classification

  • endur

    endur

    Using Strava data to create personalized reports.

    Pull and clean data Last Updated

    Replication Steps

    Here are the steps I took to get this up-and-running. If other people start using this I’ll find a more streamlined way to replicate this, especially by removing the need for steps 4 and 5.

    Step 1: Prepare Strava

    Create an “application” on Strava. Put “local host” (without the quotes) in the “Authorization Callback Domain” field.

    Step 2: Obtain Authorization

    Copy and paste the following link into your browser, replacing [CLIENT ID HERE] with your numeric Client ID found on your Strava application settings page.

    http://www.strava.com/oauth/authorize?client_id=[CLIENT_ID_HERE]&response_type=code&redirect_uri=http://localhost/exchange_token&approval_prompt=force&scope=profile:read_all,activity:read_all
    

    then click authorize when you visit the above link.

    Step 3: Obtain Access Token

    You will then land on a page with a url that looks like

    http://localhost/exchange_token?state=&code=[A LONG CODE HERE]&scope=read,activity:read_all,profile:read_all
    

    where instead of [A LONG CODE HERE] there is a long code. Copy and past this code–we’ll use it again in the next step.

    Step 4: Create strava_tokens.json

    Run get_data.py after modifying the code so that line seven reads:

    copied_code = '[A LONG CODE HERE]'

    where [A LONG CODE HERE] is replaced with the code copied from the url in the prior step. This will create a file called strava_tokens.json in the data file that contains access and refresh tokens so that you can pull data using the Strava API.

    Step 5: Encrypt strava_tokens.json

    Encrypt strava_tokens.json so that others can’t see your tokens. To do this, run the script endur/encrypt_secret.sh but replacing $STRAVA_TOKENS_PHRASE with a password of your choosing (don’t edit this file, just make a copy. Write this password down temporarily, but then you won’t need it anymore after the next step. To run the file, open a terminal, go to the filepath of the (copied) endur/encrypt_secret.sh and run

    sh encrypt_secret_copy.sh

    If the file data/strava_tokens.json.gpg is created, then you succeeded in encrypting your file. Then delete encrypt_secret_copy.sh and the un-encrypted data/strava_tokens.json. You’re now done with the most laborious steps.

    Step 6: Set GitHub Secrets

    Under the settings page for GitHub Actions for this repository, set the following secrets:

    Visit original content creator repository https://github.com/harveybarnhard/endur
  • WSA

    ⚠️DO NOT FORK⚠️

    WSA (also includes Google Play Services and Magisk)

    ⚠️ Note: This repository is designed specifically not to be forked. This does not use the same mechanism as the original MagiskOnWSA, as the original mechanism is slow and unreliable, and also violates GitHub’s Terms of Service due to abuse of GitHub Actions in forks. Don’t fork this repository unless you’re a developer and want to modify the code itself or want to download a specific configuration of WSA not already available in the Releases page.

    Installation

    Note: If you have the official WSA installed, you must completely uninstall it to use WSA

    1. Go to the Releases page
    2. In the latest release, go to the Assets section and download the WSA version of your choosing (do not download “Source code”)
    3. Extract the zip file
    4. Delete the zip file
    5. Move the newly extracted folder to a suitable location (Documents folder is a good choice), as you will need to keep the folder on your PC to use WSA

    Note: If you’re updating WSA, merge the folders and replace the files for all items when asked

    1. Open the WSA folder and double-click Run.bat
    2. Once the installation process completes, WSA will launch (if this is a first-time install, a window asking for consent to diagnositic information will be shown instead. Sometimes two identical windows will show, this is fine and nothing bad happens if you click OK in both windows)
    3. Click on the PowerShell window, then press any key on the keyboard, the PowerShell window should close
    4. Close File Explorer

    Uninstallation

    Note: If you want to preseve your data, make a backup of the %LOCALAPPDATA%\Packages\MicrosoftCorporationII.WindowsSubsystemForAndroid_8wekyb3d8bbwe\LocalCache\userdata.vhdx file. After uninstalling, copy the VHDX file back to the %LOCALAPPDATA%\Packages\MicrosoftCorporationII.WindowsSubsystemForAndroid_8wekyb3d8bbwe\LocalCache folder.

    1. Go to the Start Menu
    2. Type Windows Subsystem for Android
    3. Once the WSA app shows, click App settings in the right pane
    4. In the Settings window that opens, scroll down and click Terminate
    5. Click Repair
    6. Click Reset
    7. Close the Settings app
    8. Go to the Start Menu
    9. Type Windows Subsystem for Android
    10. Once the WSA app shows, click Uninstall in the right pane

    Help

    How do I get a logcat?

    • adb logcat

    or

    • %LOCALAPPDATA%\Packages\MicrosoftCorporationII.WindowsSubsystemForAndroid_8wekyb3d8bbwe\LocalState\diagnostics\logcat

    How do I update Magisk?

    Can I pass SafetyNet/Play Integrity?

    • No. Virtual machines like WSA cannot pass these mechanisms on their own due to the lack of signing by Google. Passing requires more exotic (and untested) solutions: kdrag0n/safetynet-fix#145 (comment)

    What is virtualization?

    • Virtualization is required to run virtual machines like WSA. Run.bat helps you enable it. After rebooting, re-run Run.bat to install WSA. If it’s still not working, you have to enable virtualization in your BIOS/UEFI. Instructions vary by PC vendor, look for help online

    Can I remount system partition as read-write?

    • No. WSA is mounted as read-only by Hyper-V. You can, however, modify the system partition by creating a Magisk module, or by directly modifying the system.img file

    How do I uninstall Magisk?

    Can I switch between OpenGApps and MindTheGapps?

    How do I install custom Magisk or GApps?

    1. Fork this repository
    2. A) Magisk
      1. a) Via local file:
        1. Create a folder named download in the root
        2. Move your custom Magisk APK/ZIP file to the download folder and rename it to magisk-debug.zip
      2. In GitHub Actions, click on Build WSA
      3. Choose Custom in the Magisk Version field
      4. b) Via URL:
        1. Input the URL pointing to your custom Magisk APK/ZIP file in the Custom Magisk APK/ZIP URL field
    3. B) GApps
      1. a) Via local file:
        1. Create a folder named download in the root
        2. Move your custom OpenGApps or MindTheGapps ZIP file to the download folder and rename it to OpenGApps-{arch}-{variant}.zip or MindTheGapps-{arch}.zip (e.g. OpenGApps-x64-pico.zip or MindTheGapps-arm64.zip)
      2. In GitHub Actions, click on Build WSA
      3. Choose Custom (OpenGApps) or Custom (MindTheGapps) in the GApps Variant field
      4. b) Via URL:
        1. Input the URL pointing to your custom OpenGApps or MindTheGapps ZIP file in the Custom GApps ZIP URL field

    Credits

    The repository is provided as a utility.

    Android is a trademark of Google LLC. Windows is a trademark of Microsoft LLC.

    Visit original content creator repository
    https://github.com/AR10Dev/WSA

  • similar-sentences

    PyPI version Python 3

    Similar sentence Prediction with more accurate results with your dataset on top of BERT pertained model.

    Setup

    Install the package

    pip install similar-sentences

    Methods to know

    SimilarSentences(FilePath,Type)

    • FilePath: Reference to model.zip for prediction. Reference to sentences.txt for training.
    • Type: predict or train

    .train(PreTrainedModel)

    • Used for training the setences. Which required (".txt", "train") as parameter in SimilarSentences
    • PreTrainedModel (optional): Any of the below model can be passed for training,by default #1 will be applied
    1. bert-base-nli-mean-tokens: BERT-base model with mean-tokens pooling. Performance: STSbenchmark: 77.12
    2. bert-base-nli-max-tokens: BERT-base with max-tokens pooling. Performance: STSbenchmark: 77.21
    3. bert-base-nli-cls-token: BERT-base with cls token pooling. Performance: STSbenchmark: 76.30
    4. bert-large-nli-mean-tokens: BERT-large with mean-tokens pooling. Performance: STSbenchmark: 79.19
    5. bert-large-nli-max-tokens: BERT-large with max-tokens pooling. Performance: STSbenchmark: 78.41
    6. bert-large-nli-cls-token: BERT-large with CLS token pooling. Performance: STSbenchmark: 78.29
    7. roberta-base-nli-mean-tokens: RoBERTa-base with mean-tokens pooling. Performance: STSbenchmark: 77.49
    8. roberta-large-nli-mean-tokens: RoBERTa-base with mean-tokens pooling. Performance: STSbenchmark: 78.69
    9. distilbert-base-nli-mean-tokens: DistilBERT-base with mean-tokens pooling. Performance: STSbenchmark: 76.97

    More details

    .predict(InputSentences, NumberOfPrediction, DesiredJsonOutput)

    • Used for predicting the setences. Which required (".zip", "predict") as parameter in SimilarSentences
    • InputSentences: To find the similar sentence for.
    • NumberOfPrediction: Number of results for the prediction
    • DesiredJsonOutput: The output will be in JSON format. simple produces a plain output. detailed produces detailed output with score

    .reload()

    • Used for reloading (or) updating the model. Which required (".zip", "predict") as parameter in SimilarSentences

    .batch_predict(BatchFile,NumberOfPrediction)

    • This method will export the data with 3 columns in excel format. Columns [‘Sentence’,’Suggestion’,’Score’]
    • BatchFile: Batch file with sentences to predict, has to be in .txt format.
    • NumberOfPrediction: Number of results for the prediction

    Getting Started

    Train the model with your dataset

    Prepare your dataset and save the content to sentences.txt

    Hi, thanks for contacting.
    Hello there!
    Hi there, welcome!
    Hi, how can I help?
    In a few words, how can help?
    Hi again, welcome back.
    Hi! Welcome back.
    Good morning! 
    Good afternoon! 
    Good evening! 
    Good morning! Welcome.
    Good afternoon! Welcome.
    Good evening! Welcome.
    Hello, how can I help?
    Welcome.
    Welcome back.
    Thanks for contacting.
    Goodbye!
    Thanks for contacting. Goodbye!
    Thanks for contacting. Bye!
    Happy to help!
    Glad I could help!
    

    Supply the sentences to build the model.

    from SimilarSentences import SimilarSentences
    # Make sure the extension is .txt
    model = SimilarSentences('sentences.txt',"train")
    model.train()

    The code snipet will produce model.zip.

    Predicting from your model

    Load the model.zip from the training.

    from SimilarSentences import SimilarSentences
    model = SimilarSentences('model.zip',"predict")
    text = 'Hi.How are you doing?'
    simple = model.predict(text, 2, "simple")
    detailed = model.predict(text, 2, "detailed")
    print(simple)
    print(detailed)

    Output looks like,

    #simple output
    [
      "Hello there! Did I get that right?",
      "Right Hi, how can I help?"
    ]
    
    #detailed output
    [
      [
        {
          "sentence": "Hello there!",
          "score": 0.938870553799856
        },
        {
          "sentence": "Did I get that right?",
          "score": 0.7910412586610753
        }
      ],
      [
        {
          "sentence": "Right",
          "score": 0.9161810654762793
        },
        {
          "sentence": "Hi, how can I help?",
          "score": 0.7824734658953297
        }
      ]
    ]

    👍 ✨ 🐫 🎉 🚀 🤘 :octocat: HAPPY CODING :octocat: 🤘 🚀 🎉 🐫 ✨ 👍

    Visit original content creator repository https://github.com/shangan23/similar-sentences
  • PubChemPy

    PubChemPy

    PyPI Version Conda Version License DOI Tests Docs

    PubChemPy provides a way to interact with PubChem in Python. It allows chemical searches by name, substructure and similarity, chemical standardization, conversion between chemical file formats, depiction and retrieval of chemical properties.

    Installation

    Install PubChemPy with pip:

    pip install pubchempy

    Or with conda:

    conda install -c conda-forge pubchempy

    For detailed instructions, see the installation guide.

    Example usage

    Retrieve a compound by its PubChem Compound Identifier (CID) and print its SMILES and IUPAC name:

    >>> import pubchempy as pcp
    >>> comp = pcp.Compound.from_cid(1423)
    >>> print(comp.smiles)
    CCCCCCCNC1CCCC1CCCCCCC(=O)O
    >>> print(comp.iupac_name)
    7-[2-(heptylamino)cyclopentyl]heptanoic acid

    Search compounds by name and print the SMILES and molecular weight of the first result:

    >>> results = pcp.get_compounds("Aspirin", "name")
    >>> print(results[0].smiles)
    CC(=O)OC1=CC=CC=C1C(=O)O
    >>> print(results[0].molecular_weight)
    180.16

    Documentation

    Full documentation is available at https://docs.pubchempy.org.

    This includes a step-by-step guide on how to use PubChemPy, as well as a complete API reference.

    Contributing

    • Feature ideas and bug reports are welcome on the Issue Tracker.
    • Fork the source code on GitHub, make changes and file a pull request.

    License

    PubChemPy is licensed under the MIT license.

    Visit original content creator repository https://github.com/mcs07/PubChemPy
  • denblox

    denblox

    An easy to operate Roblox API Library for Deno

    About

    Denblox is a free and open-source Roblox API (Application programming interface) Library. Denblox was created to make supporting ROBLOX simpler without the need to create your own API Wrapper. This Library has a variety of functions that give you more Roblox access.

    Constructing


    Importing

    You can import denblox using the mod.ts file; if you need anything else, you can do so also at the file directory. package.

    Requirements

    • Deno Installed
    import * as denblox from "https://deno.land/x/denblox/mod.ts";

    Example | 1

    Run this in your terminal to see a quick example of denblox. After that, you’ll be asked to input a Roblox username.

    deno run --allow-net https://deno.land/x/denblox/example.ts

    Example | 2

    This is a self-explanatory header, but it shows you some fundamentals and how to use one of the library functions.

    import * as denblox from "https://deno.land/x/denblox/mod.ts";
    
    await denblox.login("|WARNING:-DO-NOT-SHARE-THIS....");
    
    const user = await denblox.getUserByName("t_ru9");
    console.log(user);

    Other

    Unnecessary information you might need.


    • Version – v1.0
    • Socials
    • License -MIT License
    Visit original content creator repository https://github.com/tru9/denblox
  • good-commit-message

    header

    📝 좋은 커밋 메시지 작성하기

    🔖 Commit Message

    구조

    {type}({scope}): subject //header
    
    {body} //body
    
    {footer} //footer
    

    규칙

    • Header(필수)

      • 본문과 빈 행으로 구분한다.
      • 50글자 내로 제한한다.
      • 첫 글자는 대문자로 작성한다.
      • 끝에 특수문자를 넣지 않는다.

        마침표, 느낌표, 물음표

      • 명령문으로 작성한다.

        한글로 작성 시: “고침”, “추가”, “삭제”, “변경” 등
        영어로 작성 시: “Fix”, “Add”, “Delete”, “Change” 등

      • 과거형으로 작성하지 않는다.
    • Body(생략 가능)

      • 각 행은 72글자 내로 제한한다.
      • 어떻게 보다는 무엇과 왜를 설명한다.
    • Footer(생략 가능)

      • 이슈 트래커 ID 작성한다.
      • “유형: #이슈 번호” 형식으로 작성한다.

        Resolves: #123, #1234
        Ref: #124

      • 여러 개의 이슈 번호를 적을 때는 쉼표로 구분한다.
      • 이슈 트래커 유형

        Fixes: issue 수정중
        Resovles: issue 해결
        Ref: 참고할 issue가 있을 때 사용
        Related to: 해당 커밋에 관련된 issue 번호 (아직 해결되지 않은 경우)

    💡Header

    • Type

      태그 이름 설명 관련 Emoji
      Feat 새로운 기능을 추가할 경우 ✨:sparkles
      Fix 버그를 고친 경우 🐛:bug
      Design CSS 등 사용자 UI 디자인 변경 💄:lipstick
      !BREAKING CHANGE 대규모 수정 💥:boom
      !HOTFIX 급하게 치명적인 버그를 고쳐야하는 경우 🚑:ambulance
      Style 코드 포맷 변경, 세미 콜론 누락,
      코드 수정이 없는 경우
      🎨:art
      Refactor 프로덕션 코드 리팩토링 ♻️:recycle
      Comment 주석 추가 및 변경 💡:bulb
      Docs 문서를 수정한 경우 📝:memo
      Test 테스트 추가, 테스트 리팩토링
      (프로덕션 코드 변경 X)
      🧪:test_tube
      Chore 빌드 태스트 업데이트, 패키지 매니저를 설정하는 경우
      (프로덕션 코드 변경 X)
      🏗️:building_construction
      Create 새파일을 생성한 경우 📰:newspaper
      Rename 파일 혹은 폴더명을 수정하거나
      옮기는 작업만인 경우
      🚚:truck
      Remove 파일을 삭제하는 작업만 수행한 경우 🔥:fire
      Build 컴파일 후 코드, 새로운 패키지 업데이트 📦:package
      • 그외 여러가지 Commit Message에 활용하는 Emoji들은 Gitmoji에서 확인 가능
    • Scope

      • 추가적인 문맥 정보를 제공하기 위한 목적으로 괄호 안에 작성

        Fix(database)

    🔍Example

    • 영어로 작성 시

      🐛 Fix(Filter): Fix data filtering method
      
      * Fix bug that filtering method access parent variables.
      * Delete unnecessary code.
      
      Resoloves: #123, #1234
      
    • 한글로 작성 시

      🐛 Fix(필터): 데이터 필터링 메소드 수정
      
      * 필터링 메소드가 상위 변수에 접근하는 버그 수정
      * 불필요한 코드 삭제
      
      Resoloves: #123, #1234
      

    📚Referenced

    Visit original content creator repository https://github.com/HyeokjaeLee/good-commit-message
  • bento

    Custom Domain for Bento Profile

    Transform your Bento profile with a personalized domain name! Bento does not have an official way to do this, so i thought this might be a workaround.

    Tip

    • To make changes, navigate to your official bento profile and make them there.
    • You do not need to re-deploy the app, it will pull those changes before you can even save the XD!

    In other words, as long as your deployment is smooth, you will never think about it, just share your custom domain link, but use bento as normal! HOW COOL IS THAT!

    ✨ Features

    • Easy custom domain setup
    • Multiple deployment options
    • SSL support
    • PM2 process management
    • Apache2/Nginx compatibility

    📋 Prerequisites

    Before you begin, ensure you have:

    • A computer/VPS running Windows, Linux, macOS, or Ubuntu 20.04+, or a docker image
    • bun v1.1.36 or later
    • A Bento account
    • A custom domain name
    • PM2 (optional)
    • Apache2 (Required for VPS)
    • Certbot (Required for SSL on VPS)

    Tip

    Get $300 free credit on Vultr to try your app! Claim now

    💻 Recommended VPS Providers

    Note

    Need help with setup? I’m an Ionos Partner and can assist you! Contact me at Vikshan

    🚀 Installation

    Local/VPS Installation

    1. Clone and install dependencies:
    git clone https://github.com/iamvikshan/bento.git
    cd bento
    bun i
    1. Create environment variables:
    # Create .env file
    echo "BENTO_USERNAME=your_username" > .env
    1. Start the application:
    bun start
    1. Run tests (optional):
    bun test

    Important

    When using a VPS, make sure to set up a reverse proxy using Apache2 or Nginx. See the Apache2 guide or Nginx guide.

    ☁️ Cloud Deployment Options

    1. ⭐ Star and fork this repository

    Deploy to Zeabur

    1. Create a Zeabur account
    2. Select “Deploy from GitHub” in your dashboard
    3. Configure environment variables:
      • BENTO_USERNAME: Your Bento username

    Note

    Remove the .env file if you’re setting variables in Zeabur dashboard to avoid conflicts

    Deploy to Koyeb (Recommended)

    1. Create a Koyeb account
    2. Deploy from your GitHub repository or click here to automatically create using this repo as template.
    3. Set required environment variables

    Warning

    Custom domains require a paid Koyeb plan

    Deploy to Heroku

    1. Create a Heroku account
    2. Click here to deploy using this repo as a template, or use your own fork.
    3. Configure custom domain in Settings → Domains
    4. Enable auto-deploys in Deploy → Deployment method

    Deploy to Railway

    1. Create a Railway account if you don’t have one.
    2. Click here to deploy using this repo as a template.
    3. Railway will automatically detect the project and set up the necessary environment.
    4. You’ll be prompted to configure environment variables:
      • BENTO_USERNAME: Your Bento username
    5. Click “Deploy” to start the deployment process.
    6. Once deployed, you’ll get a URL to access your Bento profile with a custom domain.

    Note

    Railway provides a free tier with limited resources. For production use, consider upgrading to a paid plan. You can also configure a custom domain with your Railway deployment. Refer to the Railway documentation for more details on custom domains and other features.

    Additional Deployment Options

    Caution

    Known issues:

    1. Images may not persist due to caching. In case that happens, re-add those images in bento or use VPS deployment for best results.
    2. Maps do not work

    🤝 Contributing

    Contributions are always welcome! If you find bugs or have suggestions:

    1. Fork the repository
    2. Create your feature branch
    3. Commit your changes
    4. Push to the branch
    5. Open a Pull Request

    Tip

    If this project helped you, please consider:

    📄 License

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

    Activity Graph

    Alt

    💪 Powered By

    DigitalOcean Vultr IONOS

    Visit original content creator repository https://github.com/iamvikshan/bento
  • E-nology-POWERFULL

    E-nology Project (v0.5)

    Landing page
    Primeiro Contato com o Sistema

    Home page after the student has logged in
    Home page do aluno logado

    • Finish a level to unlock the next padlock

    Mapa do Sistema contendo todas as fases e atividades feitas com o aluno.

    Um pouco sobre o aprendizado:

    • Reading Time

    Um exemplo de texto existente em nosso sistema para treinar a leitura do inglês.

    • Practice Time

    Respondendo lições para praticar novos conhecimentos

    Description

    “E-nology” é um Sistema criado, exclusivamente, para o ensino de inglês instrumental, focado na área de informática, em seus conceitos, termos e na aprendizagem dos alunos.

    Linkedin Badge

    Building with

    Back-End

    • Java
    • Spring (MVC, Security, JPA, etc)

    Front-End

    • Thymeleaf
    • HTML
    • CSS
    • JavaScript
    • Bootstrap 4

    Databases

    • PostgreSQL
    • H2 for tests

    About the Project

    • Esse é um projeto em desenvolvimento, sendo construido por estudantes do Curso técnico em Informática do IFAL(Instituto Federal de Alagoas) visando ensinar e auxiliar alunos de cursos de Informática em sua aprendizagem de inglês instrumental, e proporcionando, dessa forma, uma melhor introdução e um melhor entendimento sobre à área de informática e toda a sua abrangência.

    • This is a project under development, being built by students of the Computer Technician Course at IFAL (Federal Institute of Alagoas) aiming to teach and assist students of Computer Technician Courses in their instrumental English learning, and thus providing a better introduction and a better understanding about the IT area and all its scope.

      Developer by: 👨‍💻👨🏿‍💻

      Com ajuda, orientação e supervisão das Professoras: Priscylla Silva(@priscyllaifal) e Marici Lopes (@maricilopes)

    Seja livre para deixar uma estrela e fazer um Fork desse projeto. Aceitamos críticas e sugestões sobre o mesmo.

    made with ❤️(😠)

    Visit original content creator repository https://github.com/andersonmag/E-nology-POWERFULL