Blog

  • mindra

    mindra

    A command-line wrapper for diagrams and gloss so we can leverage them outside haskell.

    The goal is to provide a good subset of features from both libraries.

    See mindra-clj for an example of a client library. It talks to mindra via stdin/stdout using just formatted text.

    Current status

    Diagrams

    Only the SVG backend is supported, and only a very small subset of diagrams is exposed. See svg-parser for what is supported and how the commands are parsed into diagram(s).

    See mindra-clj-diagrams for some examples.

    Gloss

    Most of the gloss features are supported. We should be able to use mindra for creating both static pictures and animations (with event handling!). See gloss-parser for what is supported and how the commands are parsed into gloss picture(s).

    See mindra-clj-gloss for some examples.

    Installation

    Linux and Mac

    Install:

    brew install rorokimdim/brew/mindra

    Upgrade:

    brew upgrade mindra

    Uninstall:

    brew uninstall mindra

    Windows

    Binaries are available at releases.

    Others

    No pre-built binaries available at this time. We will need to build from source using stack install or cabal install.

    Install stack, clone this repository and run the following in repository directory.

    stack install

    Basic usage

    A. Start mindra command

    mindra

    It should print READY INIT which means it is ready to receive the INIT (initialization) command.

    B. Initialize it for either diagrams or gloss

    For diagrams

    Configure for SVG of size 300px by 400px:

    INIT Diagrams SVG 300 400
    
    

    Note: Each command should be followed by a blank line.

    For gloss

    Configure for a window of size 500px by 500px, at position 10px, 10px on the screen, with the title “My Title”, and white background color (red, green, blue, alpha values):

    INIT Gloss
    Window 500 500 10 10 "My Title"
    Color 255 255 255 255
    
    

    Note: Each command should be followed by a blank line.

    C. Draw something

    For diagrams

    SVG Circle 100
    
    

    For gloss

    PICTURE Circle 100
    
    

    Note: Each command should be followed by a blank line.

    Hit ESC to close window.

    Credits

    1. Haskell
    2. Diagrams and Gloss
    3. All of these libraries and all the things they depend on

    Visit original content creator repository

  • RSSI-based-OFDM-signal-classification

    RSSI-based-OFDM-signal-classification

    Due to limited licensed bands and the ever increasing traffic demands, the mobile communication industry is striving for offloading licensed bands traffic to unlicensed bands. A lot of challenges come along with the operation of LTE in unlicensed bands while co-locating with legacy Wi-Fi operation in unlicensed band. In this co-existing environment, it is imperative to identify the technologies so that an intelligent decision can be made for maintaining quality of service (QoS) requirement of users.

    Next to this unlicensed co-existing environment, a second concern is the sharing of the licensed bands where DVB-T operates. This is called white space reuse. The reuse factor used in DVB-T systems leads to unused spectrum at a given location. Users can opt to use this spectrum if and only if no DVB-T transmission is present and they transmit using less power than TV broadcast stations. It is thus necessary to periodically sense if the spectrum is unused by the primary user or other secondary users. On the other hand the primary user, the TV broadcast stations, will want to detect if there is illegal use of their licensed spectrum at the time they want to use it.

    Manual feature extraction vs autonomous feature learning

    Wireless technology identification can be implemented in multiple ways. We decided to use machine learning techniques, given many recent breakthroughs and success in other domains. Furthermore, it allows learning identifying wireless technologies on its own by giving it data. How we captured this data is described in the next section.

    We consider two techniques for machine learning: one where we manually extract features using export knowledge and one where we give raw RSSI data to the machine learning model. The second technique exploits the autonomous feature learning capabilities of neural networks.

    We manually extracted the following features:

    • r0,r1,…,r19 are 20 intervals selected from the input histogram. r0 corresponds with the most left part of the histogram with frequency > 0, while r19 represents the most right part of the histogram with frequency > 0. Each interval thus contains 5% of the histogram and its value resembles the frequency of RSSI values within the corresponding interval.
    • minR is the minimum RSSI value with frequency > 0 and thus the left boundary of the histogram.
    • maxR is the maximum RSSI value with frequency > 0 and thus the right boundary of the histogram.
    • nP is the measured amount of peaks in the histogram.
    • wP is the width of the highest peak.
    • stdHist is the standard deviation of the histogram values.
    • stdData is the standard deviation of the RSSI values upon which the histogram is calculated.
    • meanData is the mean of the RSSI values upon which the histogram is calculated.
    • medianData is the median of the RSSI values upon which the histogram is calculated.

    Manually feature extraction allows faster signal classification, but requires expert knowledge. The autonomous feature learning model is more flexible because it adapts to new situations given enough useful data. Using complex DNN models also allows slightly higher accuracy (98%) than manual feature selection methods (97%).

    Dataset description

    We used two datasets that are part of the eWINE project.

    The first dataset, used for training, was captured at various locations in Ghent, Belgium. The dataset can be found here.

    A second dataset, used for validation, was captured at Dublin, Ireland. The dataset can be found here.

    Model description

    The models for both manual and automatic feature extraction are present in manual feature extraction/rssilearningmanual.m and automatic feature learning/neuralnetworkautomatic.m respectively. Manual feature extraction uses the features as described before as input, while automatic feature extraction uses 256 RSSI values which are derived from 16 IQ samples per RSSI value. The neural network architecture of the manual model can be seen below.

    Neural network - manual feature extraction - 29 input nodes / 25 hidden nodes / 10 hidden nodes / 3 output nodes for Wi-Fi, LTE and DVB-T

    Contact

    For further information, you can contact me at jaron.fontaine@ugent.be.

    Visit original content creator repository

  • OutSystemsNow-Windows

    OutSystems Now (Windows)

    This is the open source code for the old version of OutSystems Now. This version of OutSystems Now, brings your OutSystems experience to your mobile device, providing a fast way to access all your applications, including CRM, Customer Portal, or any other custom app built with the OutSystems Platform.

    Note that this is a deprecated version of OutSystems Now and is no longer supported by OutSystems. You can find more details on the OutSystems Now website.

    The source code is made available for you to create your own version of the application.

    This way you can apply your own branding, such as the application name, logo and splash screens.

    You can also have control over push notifications and enhance your business with a true mobile experience

    Requirements

    You will need a Windows development environment such as Visual Studio 2013 and a Windows Store Developer account. You can submit the application to Windows Store if it complies with the store guidelines. The newly created application will be under your responsibility and should be supported by you.

    Steps for building your own customized OutSystems Now

    1. Get the source code

    You can clone (or fork) the repository or just download it as a zip file to have a local copy.

    2. Setup your development environment

    If you have not already have the development environment, download and install Microsoft Visual Studio in your computer. Open the CordovaApp.sln solution file (in the folder platforms\windows).

    3. Customize your OutSystems Now

    Open the GitHub source code in your development environment and you are ready to start building your own version of the application.

    To learn more about the Windows development you can check out Windows Universal Apps guide.

    Change the application name

    Submitting your own Windows App to the Windows Store means that you need to reserve your app name first. This action will ensure that no one else uses the name. Learn how you can reserve your app name. After reserving you app name you need to change the display name. To change the display name of your app, follow the next instructions:

    • In the Solution Explorer, double-click on the appxmanifest file of CordovaApp.Phone project

      • Select the Application tab
      • Change the Display name
      • Repeat these steps for the CordovaApp.Windows project

      Change appxmanifest

    Now that you have changed the display name of your app, you need to associate your app with the app name that you initially reserved for Windows Store submission. To associate your app with the Store,follow the next instructions:

    • In the Solution Explorer, right-click on the CordovaApp.Phone project

      • Select Store
      • Click on Associate App with the Store
      • Sign in to the Windows Phone Store
      • Select the App Name for your app
      • Associate your app
      • Repeat these steps for the CordovaApp.Windows project

      Associate application name

    Replace the application logo and splash screens

    In your Visual Studio project you can find all images related with the application logo and splash screen on the Visual Assets tab of the appxmanifest file of your CordovaApp projects. You will need several different image sizes due to the multitude of devices. You can find that images under the images folder (platforms > windows > images).

    Replace application image assets

    You will also want to customize the OutSystems logo image that appears on the first screen, where the user types the environment address. You can find that image (logo_original.png) under the img folder (platforms > windows > www > img). Replace it with an image with the same dimensions (530×80) and a transparent background. If you need help creating icons and splash screen, there are several websites, such as TiCons, that can help you generate all the necessary files.

    Enable Push Notification on your application

    To push notifications we suggest that you use a third-party service such as Pushwoosh or UrbanShip (paid services). These services simplify the whole process of pushing notifications and, better yet, they provide a single way of doing it for iOS, Android and Windows. No need to develop custom push mechanisms for each vendor. There are several other companies offering the same services and you can work with any of those if you wish. Most of them are paid services, so a subscription fee may be necessary.

    To learn more about Push Notifications, check out the online information about Push notifications for Windows Phone.

    Enable Deep Linking on your application

    To enable the deep linking feature on your own application you need to change the Application Protocol. Open the AppManifest file of the Windows Phone project and select the Declarations tab. Find the Protocol declaration and change both the Display Name and Name. Repeat these steps for the AppManifest file of the Windows 8.1 project.

    Enable deep links

    4. Publish to the store

    Once you have your own version of the OutSystems Now application, you can distribute it. Learn how you can do it with the Publish Windows apps and games guide for Windows.

    Visit original content creator repository
  • SwiggyClone_React

    Lets Build a Food Delivery App

    Step 1 : Planning Phase

    • Build a mock app, or wireframae with pen and paper
    • Once we exactly know what we are building , it will be easy
    • Components
      • Header
        • Logo
        • Nav bar items (home , about us, cart)
      • Body component
        • Search
        • Restaurant Card Container
          • Restro Cards
            • name , star rating , cusines, delivery time
      • Footer
        • copyright
        • Links
        • Address
        • Contact

    Config Driven UI .

    • our website is driven by data ( our web site is driven by configs)
    • Controlling UI based on the Data coming
    • Example : In swiggy , based on location the data changes and UI behaves accordingly

    why keys?- to uniquely identify list items to not get rendered again and again

    • whenever we use map we need to use the key
    • IT takes a big performance hit , if we dont use keys
    • React doesnt uniquely identify that items , so it will re render again all items , so we must use the keys whenever we use map in react
      • some devs will use index as a key . React says never use index as a key (anti-pattern)
    • unique key (best practice)>>>> index as key >>>>>>> not using key (not acceptiable)

    Export and import the components in React

    • export syntax : export default < componentName > //default export (1st type)

    • import syntax : import < componentName > from < fileLocation >

    • We cant write default export more than once , we should write only one default export

    • By default a file can export only one thing

    • To export multiple things we use names exports

      • just write export infront of that things ( export const CON_URL=”sdgfdg”)
      • How to import named export

        • import {CON_URL} from “../../utils/constants”; //example
    • We should not keep any hardcoded data or anything in the component files
    • We need to call in seperate files ( const.js or config.js or utils.js)

    To keep data layer and UI layer consistent and sync with each other , here comes REACT

    • REACT can do faster , efficient DOM manipulation

    State Variable in React – super powerful variable

    • useState – Hooks

      React Hook – A normal javascript function given to us by react , which is prebuilt ( utility function)

      Hooks In react

      • useState() – Gives the Super Powerful react state variables
        • import {useState} from “react”;
        • used to create State Variable
          • it maintains the state of the component
          • local state Variable scope is inside the component
          • const [restroList] = useState([//pass default value]); //Local state variable creation syntax by react
          • let restroList ; //noraml Js variable creation
        • To modify the restroList
          • by a function , the function comes as second parameter in the array
            • const [restroList , setRestroList]= useState([{Defaultdata}]);
      • useEffect()

    Whenever state varaible changes react render the components –> Quickly updates the UI -React keeps eye on state variable

    How React work in Background ?

    React uses “RECONCILIATION ALGORITHM” (React fiber(from React16))

      - React fber is ongoing reimplemntation of Reacts core algorithm
    
    • Incremental Rendering : Ability to split the rendering work into chunks and spread out over multiple frames (React makes application faster)

      • On the UI we have a DOM
        • Suppose we have 7 restaurant cards
          • After filtering our Ui changes to 3 restaurant cards
            -When we have 7 restaurants cards at beginning , react creates a Virtual DOM (Represntation of an Actual DOM ) –> Javascript Object (React Virtual Dom)

    Diff Algorithm

    Findss the differnce bewtween two Virtual DOMS (old Virtual dom and new virtual dom)

      - *ReactFiber* It will calculate the Differnce between the objects when any event happens and calculate the result and update the DOM at every render cycle
    

    UseEffect Hook();

    • impoert {useEffect} from “react”;
    • useEffect will take two arguments
      • 1st Arrow function( Call back function)
      • 2nd Dependency Array
    • When will useEffect call back function called?

      • this call backfunction is called After our component renders
      • If we want something to be called after our page renders we use UseEffect

    Can we call swiggy api in our project ?

    • when we fect the swiggy api , we are getting error
    • Access to fetch at API’ from origin ‘http://localhost:1234‘ has been blocked by CORS policy
    • What is CORS policy ? Who is blocking us ?
      • Our browsers block us from calling API from one origin to other origin
    • How to bypass this cors ploicy error – Use CORS chrome exteniosn

    SHIMMER UI –> FOR BETTER UX

    • Shimmer UI is a technique for displaying loading states in web and mobile apps. It provides a FAKE PAGE the appearance of content that will eventually load, improving the user experience by providing visual feedback and reducing perceived wait times
    • We make user psychologocly better
    • when we load a page , we see a blank cards and eventually they will filled with data

    State Updater Function or State setter in React

    • const [btn, setbtn] = useState(‘Click me’);
    • btn: This is the state variable that holds the current state value.
    • setbtn: This is the state updater function. You call this function to update the state value of btn. When you call setbtn, React will re-render the whole component again with the new state value.
      • Do you know?
        • Many developers have doubt that How const state variable is updated , when it is constant?
        • Answer : When we are using state setter it is re rendering the whole component , so the old const variable is not same , as it is totally rerendered it is actg like new variable , so it will update the value adn refernce and will re render

    Whenever we change the local state variable, react will rerender the component 📌

    STATE REACT VARIABLE – When ever state Variable update, react triggers a recoinciliation cycle ( re-renders the component) –> React has such amazing best algorithmsm to do this

    • and it will updatge only the portion required

    • Never Use anchor tag in react to navgiate through pages , beacuase anchor tag will rerender the whole page again when navigated

    REDUX TOOL KIT

    • Install @reduxjs/toolkit and react-redux
    • Build our Redux store
    • Connect our store to our App (React and redux bridge)
    • Create a slice (cart slice)
    • When we click on add button –> Dispatch an action
    • Selector

    Visit original content creator repository

  • fastapi_healthcheck

    fastapi_healthcheck

    Easy to use health check for your FastAPI. This is the root module that will let you add implement and expand your usage of health checks, with FastAPI.

    This module does not contain any service checkers, but you can easily add them. The other modules are not in this root module due to different dependencies required for each one. This is made so you only bring in the packages that you need to not add extra packages.

    Install

    pip install fastapi-healthcheck or poetry add fastapi-healthcheck

    Adding Health Checks

    Here is what you need to get started.

    from fastapi import FastAPI
    from fastapi_healthcheck import HealthCheckFactory, healthCheckRoute
    from fastapi_healthcheck_sqlalchemy import HealthCheckSQLAlchemy
    
    app = FastAPI()
    
    # Add Health Checks
    _healthChecks = HealthCheckFactory()
    
    # SQLAlchemy comes from fastapi-healthcheck-sqlalchemy
    _healthChecks.add(HealthCheckSQLAlchemy(alias='postgres db', connectionUri=cs.value, table=SmtpContactsSqlModel, tags=('postgres', 'db', 'sql01')))
    
    # This will check external URI and validate the response that is returned.
    # fastapi-healthcheck-uri
    _healthChecks.add(HealthCheckUri(alias='reddit', connectionUri="https://www.reddit.com/r/aww.json", tags=('external', 'reddit', 'aww')))
    app.add_api_route('/health', endpoint=healthCheckRoute(factory=_healthChecks))

    Returned Data

    When you request your health check, it will go and check all the entries that have been submitted and run a basic query against them. If they come back as expected, then a status code is 200. But if it runs into an error, it will return a 500 error.

    {
        "status":"Healthy",
        "totalTimeTaken":"0:00:00.671642",
        "entities":[
            {
                "alias":"postgres db",
                "status":"Healthy",
                "timeTaken":"0:00:00.009619",
                "tags":["postgres","db","sql01"]
            },
            {
                "alias":"reddit",
                "status":"Unhealthy",
                "timeTaken":"0:00:00.661716",
                "tags":["external","reddit","aww"]
            }
        ]
    }

    Available Modules

    If you have made a public service module and want to see it on this list, please open a new issue so we can add it to the list.

    Writing a custom module

    You can easily expand on this core module to add other health checks for other services. Generate a new service that pulls in HealthCheckInterface and HealthCheckBase. With those, you can build the respective class around the interface.

    Once you have your service ready to go, add it to the HealthCheckFactory, and let the testing start.

    If you would like to see an example of a custom service see fastapi_healthcheck_sqlalchemy. This will give you a better example of what you need to do to create your own module to interface with healthcheck.

    Visit original content creator repository

  • Forms

    Grafite Forms

    Forms – An amazing Forms component for Laravel.

    Build Status Maintainability Packagist license

    The Forms package lets you generate forms as well as fields with standard make commands. Inside your forms for models you can specify the fields that need to be generated and then simply pass the form to the view. No more writing html forms, error handling etc. It can handle Eloquent relationships and easily work with ajax requests for more dynamic form submissions.

    Author(s):

    Requirements

    1. PHP 8.2+
    2. OpenSSL

    Compatibility and Support

    Laravel Version Package Tag Supported
    ^11.x – ^12.x 7.x yes
    ^7.x – 11.x 6.x no
    ^7.x – ^8.x 5.x no
    ^7.x – ^8.x 4.x no
    ^7.x 3.x no
    ^5.8.x – 7.x 2.x no
    5.4.x – 5.8.x 1.3.x no
    5.4.x 1.1.x no
    5.3.x 1.0.x no

    Installation

    Start a new Laravel project:

    composer create-project laravel/laravel your-project-name

    Then run the following to add Forms

    composer require "grafite/forms"

    Time to publish those assets!

    php artisan vendor:publish --provider="Grafite\Forms\FormsProvider"

    Documentation

    https://docs.grafite.ca/utilities/forms

    Upgrading from 3.x to 4.x (Renaming)

    The package was renamed in version 3 to 4. This means that the following would need to be changed on your code base:

    form-maker.php -> forms.php

    Grafite\FormMaker -> Grafite\Forms

    @formMaker -> @forms

    <x-fm></x-fm> -> <x-f></x-f>

    <x-fm-action></x-fm-action> -> <x-f-action></x-f-action>

    <x-fm-delete></x-fm-delete> -> <x-f-delete></x-f-delete>

    <x-fm-search></x-fm-search> -> <x-f-search></x-f-search>

    Asset Sources for CSP

    js.hcaptcha.com cdn.jsdelivr.net

    License

    Forms is open-sourced software licensed under the MIT license

    Bug Reporting and Feature Requests

    Please add as many details as possible regarding submission of issues and feature requests

    Disclaimer

    THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

    Visit original content creator repository
  • Exchange-Rates-UK

    Exchange-Rates-UK

    The theme is based on Bootstrap3. And it is built with HTML5, CSS and jQuery with proper use of google rich-snippets markup.

    Layout

    • Boxed
    • Full Width

    Changes

    • Colours better, but we need the nav link text not to be orange -just white, hover pale blue
    • Can we the links be made up of a smaller dark blue box inside the nav (like the reference site)
    • The mini logo isn’t working as it’s tiny. It should be text (eg Choose a currency…) until you scroll down, and when nav becomes sticky we replace that text with the mini logo (but much bigger than you have it right now.
    • The posted by text at the top of the article wants to be viewed by user as continuous text eg. “Posted by John Cameron on February 17, 2017 in AUD, GBP, GBP to AUD.” but in code each will be inside schema.
    • Can you make the related posts at bottom exactly the same format at the ones on the side column?
    • The rates scroller at bottom needs to be width of container not full-width. Also it doesn’t scroll anymore?

    #Final Changes

    #Final Changes 1

    • the related posts at bottom, there will be no image as the text is taking up too much space. Any ideas?
    • can we lose the icon/bottom border under the side bar headings (eg Exchange Rate Calc) and can the margins be so that the headings start further to the left so the text lines up with the text underneath?

    Resources

    Simple Line Icons [http://simplelineicons.com/].

    Bootstrap 3 [http://getbootstrap.com/]

    Owl Carousel 2 [https://owlcarousel2.github.io/OwlCarousel2/]

    Sticky JS [http://stickyjs.com/]

    License

    You’re can not use this theme in your personal and private projects. Only ExchangeRatesUK.org.uk hold the copyright for this project.

    Visit original content creator repository

  • RSSBud

    RSSBud

    䞭文文档

    RSSBud can help you quickly discover and subscribe to RSS feeds from websites or apps, especially those provided by RSSHub. It supports the parameters feature of RSSHub which facilitates extra functionalities such as filtering by feed content and full text fetching.

    Telegram Group

    Demo.mp4

    Download

    Download on the App Store

    Features

    • Detects RSS feeds in web pages
    • Detects RSSHub feeds applicable for web pages (supports almost all rules of RSSHub Radar)
    • Detects other RSS feeds applicable for web pages (powered by RSSBud Rules)
    • Optimized for mobile environment (automatically expands URLs and adapts to common mobile sub-domains)
    • Share sheet extension
    • Quick subscription to Reeder, Fiery Feeds, Ego Reader, and system default RSS reader
    • Quick subscription to Tiny Tiny RSS, Miniflux, Fresh RSS, Feedly, Inoreader, Feedbin, The Old Reader, Feeds Pub
    • Parameter editor for RSSHub feeds
    • Rules kept up-to-date automatically
    • Customizable remote rules files
    • Simultaneously matches against multiple rules files
    • RSSHub access control (automatically generates MD5 access code)
    • Supports x-callback-url; can be used in “Shortcuts” app to facilitate a variety of powerful functions (see Shortcut Workshop and Scheme)

    Shortcut Workshop

    If RSSBud doesn’t support your RSS reader/service, or you want to integrate RSSBud into your workflow, you can write shortcuts utilizing RSSBud’s support for x-callback-url to fulfill your needs. Let’s start with the following ones!

    RSSBud Starter Shortcut by cayZ | A template for RSSBud related shortcuts that sets up the variables and supports share sheets.

    Analyze with RSSBud and Send with Telegram by cayZ | Send RSSBud analysis results to Telegram with customizable message template and recipient.

    Analyze with RSSBud and Subscribe with Pocket Casts by cayZ | Send RSSBud analysis results to Pocket Casts (podcast RSS only).

    Scan QR and Analyze with RSSBud by cayZ | Get URL from scanned QR code and analyze with RSSBud.

    If you think you’ve got an idea of a shortcut that can benefit a larger audience, you’re welcomed to submit an issue!

    X-callback-url Scheme

    RSSBud has implemented the x-callback-url protocol, which provides a standardized means for iOS developers to expose and document the methods they make available to other apps via custom URL schemes.

    You can open the following URL to let RSSBud analyze the provided URL and return the RSS feed chosen by the user:

    rssbud://x-callback-url/analyze?url[&x-callback-parameters...]
    

    Parameters

    • url The URL you want RSSBud to analyze

    x-success

    • feed_title The name of the RSS feed chosen by the user
    • feed_url The URL of the RSS feed chosen by the user

    PopClip Extension

    If you happen use both RSSBud and PopClip on macOS, here’s a handy extension that can be used to analyze selected URLs with RSSBud. Simply select everything in the code block below and you will see an option to install the extension in PopClip.

    #popclip
    name: RSSBud
    icon: iconify:ph:rss-bold
    url: rssbud:///analyze?url=***

    Notes for Building from Source

    The core functionality of RSSBud comes from RSSBud Core, a sub-project written in JavaScript. The code is mainly referenced from RSSHub Radar.

    Make sure you have Node.js installed before you build with Xcode.

    If you wish to use the action extension, please set up your own App Group in both the iOS and Action Extension targets and modify RSSBud.appGroupIdentifier accordingly.

    Rules

    RSSBud’s functionality is largely powered by rules from two open-source projects. Please consider contributing to the appropriate rules if a particular feed can’t be discovered by RSSBud.

    • RSSHub Radar Rules are created and maintained by the RSSHub community. They are used to discover RSSHub feeds.

      Submit new RSSHub Radar rules

    • RSSBud Rules are a superset of RSSHub Radar rules. The extended schema allows non-RSSHub feeds (e.g. official RSS feeds that are not discoverable by parsing HTML) to be discovered. Please consider contributing to RSSHub Radar rules first if the feed is an RSSHub feed.

      Submit new RSSBud rules

    Similar projects

    Author

    RSSBud is made by cayZ and is open-source under the MIT License.

    Visit original content creator repository
  • leetcode

    💡 LeetCode Solutions

    This repository contains my personal solutions to LeetCode problems, written in Java, JavaScript, SQL, and pandas.

    All solution files are kept directly in the root of the repository. Each file is named after the problem it solves, often including the problem number and a descriptive title.


    📊 What’s Inside

    • ✅ Solutions to a wide range of LeetCode problems
    • ✅ Java (.java), JavaScript (.js), SQL (.sql), and pandas (.py) code
    • ✅ Clear, readable implementations
    • ✅ Covers various topics such as arrays, strings, trees, dynamic programming, recursion, SQL queries, and data manipulation with pandas

    🗂 Repository Structure

    • All solution files are in the root directory.
    • File naming: {problem-number}-{problem-title}.{js|java|sql|py} (e.g., 1-two-sum.java, 2-add-two-numbers.js, 175-combine-two-tables.sql, 1876-substrings-of-size-three-with-distinct-characters.py)
    • No subfolders for topics or languages.

    🚀 How to Run

    • Java:
      Compile and run using:

      javac ProblemFileName.java
      java ProblemFileName
    • JavaScript:
      Run using Node.js:

      node ProblemFileName.js
    • SQL:
      Run in your preferred SQL environment (e.g., MySQL, PostgreSQL, LeetCode’s online editor).
    • pandas (Python):
      Run using Python 3:

      python ProblemFileName.py

    🧠 Purpose

    This repository serves as a personal reference for:

    • Practicing coding problems
    • Reviewing core data structures and algorithms
    • Preparing for coding interviews

    Java

    Problem Difficulty LeetCode Link
    1. Two Sum Easy Link
    3. Longest Substring Without Repeating Characters Medium Link
    4. Median Of two sorted arrays Hard Link
    5. Longest Palindromic Substring Medium Link
    7. Reverse Integer Medium Link
    9. Palindrome Number Easy Link
    13. Roman to Integer Easy Link
    15. 3Sum Medium Link
    16. 3Sum Closest Medium Link
    19. Remove Nth Node From End of List Medium Link
    21. Merge Two Sorted Lists Easy Link
    26. Remove Duplicates from Sorted Array Easy Link
    27. Remove Element Easy Link
    28. Find the Index of the First Occurrence in a String Easy Link
    29. Divide Two Integers Medium Link
    33. Search in Rotated Sorted Array Medium Link
    35. Search Insert Position Easy Link
    38. Count and Say Medium Link
    41. First Missing Positive Hard Link
    42. Trapping Rain Water Hard Link
    43. Multiply Strings Medium Link
    48. Rotate Image Medium Link
    50. Pow(x, n) Medium Link
    53. Maximum Subarray Medium Link
    54. Spiral Matrix Medium Link
    55. Jump Game Medium Link
    58. Length of Last Word Easy Link
    66. Plus One Easy Link
    69. Sqrt(x) Easy Link
    70. Climbing Stairs Easy Link
    73. Set Matrix Zeroes Medium Link
    74. Search a 2D Matrix Medium Link
    75. Sort Colors Medium Link
    80. Remove Duplicates from Sorted Array II Medium Link
    88. Merge Sorted Array Easy Link
    94. Binary Tree Inorder Traversal Easy Link
    118. Pascal’s Triangle Easy Link
    121. Best Time to Buy and Sell Stock Easy Link
    122. Best Time to Buy and Sell Stock II Medium Link
    125. Valid Palindrome Easy Link
    128. Longest Consecutive Sequence Medium Link
    136. Single Number Easy Link
    137. Single Number II Medium Link
    141. Linked List Cycle Easy Link
    144. Binary Tree Preorder Traversal Easy Link
    145. Binary Tree Postorder Traversal Easy Link
    151. Reverse Words in a String Medium Link
    152. Maximum Product Subarray Medium Link
    160. Intersection of Two Linked Lists Easy Link
    162. Find Peak Element Medium Link
    164. Maximum Gap Hard Link
    169. Majority Element Easy Link
    171. Excel Sheet Column Number Easy Link
    189. Rotate Array Medium Link
    191. Number of 1 Bits Easy Link
    198. House Robber Medium Link
    202. Happy Number Easy Link
    204. Count Primes Medium Link
    205. Isomorphic Strings Easy Link
    206. Reverse Linked List Easy Link
    213. House Robber II Medium Link
    215. Kth Largest Element in an Array Medium Link
    217. Contains Duplicate Easy Link
    219. Contains Duplicate II Easy Link
    229. Majority Element II Medium Link
    231. Power of Two Easy Link
    237. Delete Node in a Linked List Medium Link
    238. Product of Array Except Self Medium Link
    240. Search a 2D Matrix II Medium Link
    242. Valid Anagram Easy Link
    258. Add Digits Easy Link
    260. Single Number III Medium Link
    263. Ugly Number Easy Link
    268. Missing Number Easy Link
    283. Move Zeroes Easy Link
    290. Word Pattern Easy Link
    292. Nim Game Easy Link
    303. Range Sum Query – Immutable Easy Link
    326. Power of Three Easy Link
    342. Power of Four Easy Link
    344. Reverse String Easy Link
    345. Reverse Vowels of a String Easy Link
    347. Top K Frequent Elements Medium Link
    367. Valid Perfect Square Easy Link
    374. Guess Number Higher or Lower Easy Link
    383. Ransom Note Easy Link
    387. First Unique Character in a String Easy Link
    389. Find the Difference Easy Link
    412. Fizz Buzz Easy Link
    414. Third Maximum Number Easy Link
    442. Find All Duplicates in an Array Medium Link
    448. Find All Numbers Disappeared in an Array Easy Link
    453. Minimum Moves to Equal Array Elements Easy Link
    455. Assign Cookies Easy Link
    485. Max Consecutive Ones Easy Link
    507. Perfect Number Easy Link
    509. Fibonacci Number Easy Link
    594. Longest Harmonious Subsequence Easy Link
    622. Design Circular Queue Medium Link
    628. Maximum Product of Three Numbers Easy Link
    693. Binary Number with Alternating Bits Easy Link
    704. Binary Search Easy Link
    771. Jewels and Stones Easy Link
    781. Rabbits in Forest Medium Link
    790. Domino and Tromino Tiling Medium Link
    860. Lemonade Change Easy Link
    876. Middle of the Linked List Easy Link
    899. Orderly Queue Hard Link
    905. Sort Array By Parity Easy Link
    912. Sort an Array Medium Link
    917. Reverse Only Letters Easy Link
    941. Valid Mountain Array Easy Link
    977. Squares of a Sorted Array Easy Link
    1003. Check If Word Is Valid After Substitutions Medium Link
    1051. Height Checker Easy Link
    1089. Duplicate Zeros Easy Link
    1108. Defanging an IP Address Easy Link
    1128. Number of Equivalent Domino Pairs Easy Link
    1200. Minimum Absolute Difference Easy Link
    1267. Count Servers that Communicate Medium Link
    1290. Convert Binary Number in a Linked List to Integer Easy Link
    1295. Find Numbers with Even Number of Digits Easy Link
    1299. Replace Elements with Greatest Element on Right Side Easy Link
    1317. Convert Integer to the Sum of Two No-Zero Integers Easy Link
    1323. Maximum 69 Number Easy Link
    1324. Print Words Vertically Medium Link
    1342. Number of Steps to Reduce a Number to Zero Easy Link
    1346. Check If N and Its Double Exist Easy Link
    1358. Number of Substrings Containing All Three Characters Medium Link
    1394. Find Lucky Integer in an Array Easy Link
    1399. Count Largest Group Easy Link
    1431. Kids With the Greatest Number of Candies Easy Link
    1460. Make Two Arrays Equal by Reversing Subarrays Easy Link
    1464. Maximum Product of Two Elements in an Array Easy Link
    1470. Shuffle the Array Easy Link
    1480. Running Sum of 1d Array Easy Link
    1491. Average Salary Excluding the Minimum and Maximum Salary Easy Link
    1492. The kth Factor of n Medium Link
    1512. Number of Good Pairs Easy Link
    1518. Water Bottles Easy Link
    1523. Count Odd Numbers in an Interval Range Easy Link
    1524. Number of Sub-arrays With Odd Sum Medium Link
    1534. Count Good Triplets Easy Link
    1550. Three Consecutive Odds Easy Link
    1567. Maximum Length of Subarray With Positive Product Medium Link
    1572. Matrix Diagonal Sum Easy Link
    1641. Count Sorted Vowel Strings Medium Link
    1684. Count the Number of Consistent Strings Easy Link
    1685. Sum of Absolute Differences in a Sorted Array Medium Link
    1689. Partitioning Into Minimum Number Of Deci-Binary Numbers Medium Link
    1694. Reformat Phone Number Easy Link
    1748. Sum of Unique Elements Easy Link
    1749. Maximum Absolute Sum of Any Subarray Medium Link
    1752. Check if Array Is Sorted and Rotated Easy Link
    1768. Merge Strings Alternately Easy Link
    1780. Check if Number is a Sum of Powers of Three Medium Link
    1796. Second Largest Digit in a String Easy Link
    1800. Maximum Ascending Subarray Sum Easy Link
    1807. Evaluate the Bracket Pairs of a String Medium Link
    1816. Truncate Sentence Easy Link
    1832. Check if the Sentence Is Pangram Easy Link
    1833. Maximum Ice Cream Bars Medium Link
    1859. Sorting the Sentence Easy Link
    1863. Sum of All Subset XOR Totals Easy Link
    1920. Build Array from Permutation Easy Link
    1922. Count Good Numbers Medium Link
    1929. Concatenation of Array Easy Link
    1935. Maximum Number of Words You Can Type Easy Link
    1941. Check if All Characters Have Equal Number of Occurrences Easy Link
    1945. Sum of Digits of String After Convert Easy Link
    1957. Delete Characters to Make Fancy String Easy Link
    1976. Number of Ways to Arrive at Destination Medium Link
    2000. Reverse Prefix of Word Easy Link
    2011. Final Value of Variable After Performing Operations Easy Link
    2016. Maximum Difference Between Increasing Elements Easy Link
    2023. Number of Pairs of Strings With Concatenation Equal to Target Medium Link
    2033. Minimum Operations to Make a Uni-Value Grid Medium Link
    2079. Watering Plants Medium Link
    2085. Count Common Words With One Occurrence Easy Link
    2094. Finding 3-Digit Even Numbers Medium Link
    2108. Find First Palindromic String in the Array Easy Link
    2109. Adding Spaces to a String Medium Link
    2115. Find All Possible Recipes from Given Supplies Medium Link
    2149. Rearrange Array Elements by Sign Medium Link
    2150. Find All Lonely Numbers in the Array Medium Link
    2154. Keep Multiplying Found Values by Two Easy Link
    2161. Partition Array According to Given Pivot Medium Link
    2169. Count Operations to Obtain Zero Easy Link
    2176. Count Equal and Divisible Pairs in an Array Easy Link
    2185. Counting Words With a Given Prefix Easy Link
    2206. Divide Array Into Equal Pairs Easy Link
    2225. Find Players With Zero or One Losses Medium Link
    2226. Maximum Candies Allocated to K Children Medium Link
    2235. Add Two Integers Easy Link
    2264. Largest 3-Same-Digit Number in String Easy Link
    2348. Number of Zero-Filled Subarrays Medium Link
    2351. First Letter to Appear Twice Easy Link
    2357. Make Array Zero by Subtracting Equal Amounts Easy Link
    2379. Minimum Recolors to Get K Consecutive Black Blocks Easy Link
    2390. Removing Stars From a String Medium Link
    2396. Strictly Palindromic Number Medium Link
    2401. Longest Nice Subarray Medium Link
    2410. Maximum Matching of Players With Trainers Medium Link
    2413. Smallest Even Multiple Easy Link
    2428. Maximum Sum of an Hourglass Medium Link
    2433. Find The Original Array of Prefix Xor Medium Link
    2460. Apply Operations to an Array Easy Link
    2465. Number of Distinct Averages Easy Link
    2469. Convert the Temperature Easy Link
    2503. Maximum Number of Points From Grid Queries Hard Link
    2520. Count the Digits That Divide a Number Easy Link
    2521. Distinct Prime Factors of Product of Array Medium Link
    2523. Closest Prime Numbers in Range Medium Link
    2529. Maximum Count of Positive Integer and Negative Integer Easy Link
    2535. Difference Between Element Sum and Digit Sum of an Array Easy Link
    2537. Count the Number of Good Subarrays Medium Link
    2551. Put Marbles in Bags Hard Link
    2560. House Robber IV Medium Link
    2562. Find the Array Concatenation Value Easy Link
    2566. Maximum Difference by Remapping a Digit Easy Link
    2570. Merge Two 2D Arrays by Summing Values Easy Link
    2579. Count Total Number of Colored Cells Medium Link
    2586. Count the Number of Vowel Strings in Range Easy Link
    2594. Minimum Time to Repair Cars Hard Link
    2610. Convert an Array Into a 2D Array With Conditions Medium Link
    2656. Maximum Sum With Exactly K Elements Easy Link
    2683. Neighboring Bitwise XOR Easy Link
    2685. Count the Number of Complete Components Medium Link
    2706. Buy Two Chocolates Easy Link
    2716. Minimize String Length Easy Link
    2733. Neither Minimum nor Maximum Easy Link
    2761. Prime Pairs With Target Sum Medium Link
    2769. Find the Maximum Achievable Number Easy Link
    2778. Sum of Squares of Special Elements Easy Link
    2780. Minimum Index of a Valid Split Medium Link
    2798. Number of Employees Who Met the Target Easy Link
    2818. Apply Operations to Maximize Score Hard Link
    2828. Check if a String Is an Acronym of Words Easy Link
    2843. Count Symmetric Integers Easy Link
    2873. Maximum Value of an Ordered Triplet I Easy Link
    2874. Maximum Value of an Ordered Triplet II Medium Link
    2894. Divisible and Non-divisible Sums Difference Easy Link
    2900. Longest Unequal Adjacent Groups Subsequence I Medium Link
    2942. Find Words Containing Character Easy Link
    2965. Find Missing and Repeated Values Easy Link
    3005. Count Elements With Maximum Frequency Easy Link
    3024. Type of Triangle Easy Link
    3028. Ant on the Boundary Easy Link
    3065. Minimum Operations to Exceed Threshold Value I Easy Link
    3066. Minimum Operations to Exceed Threshold Value II Medium Link
    3079. Find the Sum of Encrypted Integers Easy Link
    3099. Harshad Number Easy Link
    3105. Longest Strictly Increasing or Strictly Decreasing Subarray Easy Link
    3108. Minimum Cost Walk in Weighted Graph Hard Link
    3110. Score of a String Easy Link
    3136. Valid Word Easy Link
    3151. Special Array I Easy Link
    3169. Count Days Without Meetings Medium Link
    3190. Find Minimum Operations to Make All Elements Divisible by Three Easy Link
    3191. Minimum Operations to Make Binary Array Elements Equal to One I Medium Link
    3206. Alternating Groups I Easy Link
    3208. Alternating Groups II Medium Link
    3211. Generate Binary Strings Without Adjacent Zeros Medium Link
    3232. Find if Digit Game Can Be Won Easy Link
    3280. Convert Date to Binary Easy Link
    3289. The Two Sneaky Numbers of Digitville Medium Link
    3304. Find the K-th Character in String Game I Easy Link
    3305. Count of Substrings Containing Every Vowel and K Consonants I Medium Link
    3306. Count of Substrings Containing Every Vowel and K Consonants II Hard Link
    3330. Find the Original Typed String I Medium Link
    3356. Zero Array Transformation II Hard Link
    3375. Minimum Operations to Make Array Values Equal to K Hard Link
    3394. Check if Grid can be Cut into Sections Medium Link
    3396. Minimum Number of Operations to Make Elements in Array Distinct Medium Link
    3423. Maximum Difference Between Adjacent Elements in a Circular Array Easy Link
    3442. Maximum Difference Between Even and Odd Frequency I Easy Link
    3452. Sum of Good Numbers Easy Link
    3467. Transform Array by Parity Easy Link
    3477. Fruits Into Baskets II Medium Link
    3487. Maximum Unique Subarray Sum After Deletion Easy Link
    3492. Maximum Containers on a Ship Easy Link
    3498. Reverse Degree of a String Easy Link
    3502. Minimum Cost to Reach Every Position Medium Link
    3522. Calculate Score After Performing Instructions Easy Link
    3523. Make Array Non-decreasing Medium Link
    3541. Find Most Frequent Vowel and Consonant Easy Link
    3550. Smallest Index With Digit Sum Equal to Index Easy Link
    3582. Generate Tag for Video Caption Easy Link
    3622. Check Divisibility by Digit Sum and Product Easy Link


    JavaScript

    Problem Difficulty LeetCode Link
    1. Two Sum Easy Link
    4. Median of Two Sorted Arrays Hard Link
    9. Palindrome Number Easy Link
    13. Roman to Integer Easy Link
    21. Merge Two Sorted Lists Easy Link
    26. Remove Duplicates from Sorted Array Easy Link
    27. Remove Element Easy Link
    33. Search in Rotated Sorted Array Medium Link
    35. Search Insert Position Easy Link
    55. Jump Game Medium Link
    58. Length of Last Word Easy Link
    70. Climbing Stairs Easy Link
    80. Remove Duplicates from Sorted Array II Medium Link
    136. Single Number Easy Link
    141. Linked List Cycle Easy Link
    145. Binary Tree Postorder Traversal Easy Link
    152. Maximum Product Subarray Medium Link
    171. Excel Sheet Column Number Easy Link
    191. Number of 1 Bits Easy Link
    198. House Robber Medium Link
    342. Power of Four Easy Link
    386. Lexicographical Numbers Medium Link
    509. Fibonacci Number Easy Link
    790. Domino and Tromino Tiling Medium Link
    1399. Count Largest Group Easy Link
    1518. Water Bottles Easy Link
    1534. Count Good Triplets Easy Link
    1920. Build Array from Permutation Easy Link
    2079. Watering Plants Medium Link
    2176. Count Equal and Divisible Pairs in an Array Easy Link
    2348. Number of Zero-Filled Subarrays Medium Link
    2460. Apply Operations to an Array Easy Link
    2469. Convert the Temperature Easy Link
    2619. Array Prototype Last Easy Link
    2620. Counter Easy Link
    2621. Sleep Easy Link
    2626. Array Reduce Transformation Easy Link
    2629. Function Composition Easy Link
    2634. Filter Elements from Array Easy Link
    2635. Apply Transform Over Each Element in Array Easy Link
    2665. Counter II Easy Link
    2666. Allow One Function Call Easy Link
    2667. Create Hello World Function Easy Link
    2677. Chunk Array Easy Link
    2683. Neighboring Bitwise XOR Easy Link
    2703. Return Length of Arguments Passed Easy Link
    2704. To Be Or Not To Be Easy Link
    2723. Add Two Promises Easy Link
    2798. Number of Employees Who Met the Target Easy Link
    2843. Count Symmetric Integers Easy Link
    3000. Maximum Area of Longest Diagonal Rectangle Easy Link
    3005. Count Elements With Maximum Frequency Easy Link
    3024. Type of Triangle Easy Link
    3151. Special Array I Easy Link
    3423. Maximum Difference Between Adjacent Elements in a Circular Array Easy Link
    3467. Transform Array by Parity Easy Link
    3582. Generate Tag for Video Caption Easy Link


    SQL

    Problem Difficulty LeetCode Link
    182. Duplicate Emails Easy Link
    183. Customers Who Never Order Easy Link
    577. Employee Bonus Easy Link
    584. Find Customer Referee Easy Link
    595. Big Countries Easy Link
    619. Biggest Single Number Easy Link
    741. Find Total Time Spent by Each Employee Easy Link
    1148. Article Views I Easy Link
    1378. Replace Employee ID With The Unique Identifier Easy Link
    1527. Patients With a Condition Easy Link
    1581. Customer Who Visited but Did Not Make Any Transactions Easy Link
    1683. Invalid Tweets Easy Link
    1693. Daily Leads and Partners Easy Link
    1757. Recyclable and Low Fat Products Easy Link
    1978. Employees Whose Manager Left the Company Easy Link
    2356. Number of Unique Subjects Taught by Each Teacher Easy Link


    Python (pandas)

    Problem Difficulty LeetCode Link
    2879. Display the First Three Rows Easy Link
    2881. Create a New Column Easy Link
    2882. Drop Duplicate Rows Easy Link
    2884. Modify Columns Easy Link
    2886. Change Data Type Easy Link
    2888. Reshape Data: Concatenate Easy Link


    🀝 Contributing

    Contributions are welcome!
    If you’d like to add a new solution or improve an existing one:

    • Fork the repository
    • Add your solution in the root directory
    • Use the existing naming convention
    • Open a pull request

    🔗 LeetCode Profile

    Check out my LeetCode submissions and progress:
    👉 https://leetcode.com/Sanjay3005v


    🙋‍♂ Author

    Sanjay V
    📧 sanjay3005v@gmail.com
    🔗 GitHub | LinkedIn


    ⭐ If You Like This Repo

    Feel free to star ⭐ the repository if you find it useful!

    Visit original content creator repository

  • macSKK

    macSKK test

    macSKKはmacOS甚のSKK方匏の日本語入力システム (むンプットメ゜ッド) です。

    macOS甚のSKK方匏の日本語入力システムにはすでにAquaSKKがありたすが、いく぀か独自の機胜を䜜りたいず思い新たに開発しおいたす。

    macSKKを䜿甚するには macOS 13.3 (Ventura) 以降が必芁です。
    Universal Binary (Apple Silicon & Intel Mac) でビルドしおいたすが、動䜜確認はApple Silicon環境でのみ行っおいたす。

    特城

    • 日本語入力システムはパスワヌドなどの機密情報を凊理する可胜性があるため安党性が求められるプログラムです。そのためmacSKKはmacOSのSandbox機構を䜿いネットワヌク通信やファむルの読み曞きに制限をかけるこずでセキュリティホヌルを攻撃されたずきの被害を枛らすように心掛けたす。
    • 䞍正なコヌドが含たれるリスクを避けるため、サヌドパヌティによる倖郚ラむブラリは䜿甚しおいたせん。
    • すべおをSwiftだけでコヌディングしおおり、むベント凊理にCombineを、UI郚分にはSwiftUIを䜿甚しおいたす。
    • 単語登録モヌドや送り仮名入力䞭などキヌ入力による状態倉化管理が耇雑なのでナニットテストを曞いお゚ンバグのリスクを枛らす努力をしおいたす。

    実装予定

    しばらくはAquaSKKにはあるけどmacSKKにない機胜を実装し぀぀、埐々に独自機胜を実装しおいこうず考えおいたす。

    実装予定の独自機胜

    • 自動曎新確認
      • Network Outgoingが可胜なXPCプロセスを䜜成し、GitHub Releasesから情報を定期的に取埗しお新しいバヌゞョンが芋぀かったらNotification Centerに衚瀺する
    • 蟞曞のJSON圢匏ぞの察応
    • xterm.jsを利甚するアプリケヌションでaiueoでひらがなが入力できない問題のワヌクアラりンド察応 (VSCode Terminal, Hyperなど)
    • iCloudにマむ蟞曞を保存しお他環境ず共有できるようにする
    • マむ蟞曞の暗号化
      • 線集したい堎合は生デヌタでの゚クスポヌト & むンポヌトできるようにする

    むンストヌル

    2023幎珟圚、Mac App Storeでは日本語入力システムを配垃するこずができないため、Appleの゜フトりェア公蚌を受けたアプリケヌションバむナリをGitHub Releasesで配垃しおいたす。dmgファむルをダりンロヌドしマりントした䞭にあるpkgファむルからむンストヌルしおください。

    もしHomebrew Caskでむンストヌルしたい堎合は、 brew install --cask macskk でむンストヌルできたす。詳しくは https://formulae.brew.sh/cask/macskk を参照しおください。

    たた独自Cask定矩 brew install --cask mtgto/macskk/macskk でもむンストヌルできたす。Homebrew公匏ずの違いずしおはこちらはGitHub Actionsで䜜業を自動化しおいるのでリリヌス盎埌にすぐ反映されたす。詳しくは https://github.com/mtgto/homebrew-macSKK を参照しおください。

    macSKKのむンストヌル埌に、システム蚭定→キヌボヌド→入力゜ヌスから「ひらがな」(アむコンは▌あ)ず「ABC」(アむコンは▌A)を远加しおください。カタカナ、党角英数、半角カナは远加しおも远加しなくおも問題ありたせん。
    もしむンストヌル盎埌に衚瀺されなかったり、バヌゞョンアップしおも反映されない堎合はログアりト & ログむンを詊しおみおください。

    SKK蟞曞は ~/Library/Containers/net.mtgto.inputmethod.macSKK/Data/Documents/Dictionaries に配眮しおください。たずは https://github.com/skk-dev/dict の SKK-JISYO.L から䜿っおみるずよいでしょう。
    その埌、macOSメニュヌバヌの入力メニュヌ→環境蚭定を開き、蟞曞蚭定で䜿甚する蟞曞を有効に切り替えおください。EUC-JPでない゚ンコヌディングの堎合はiボタンから゚ンコヌディングを切り替えおください。珟圚はEUC-JP (EUC-JIS-2004を含む) ずUTF-8に察応しおいたす。蟞曞ファむルの圢匏はYAML圢匏、JSON圢匏なども提案されおいたすが珟圚はJSON圢匏のみ察応しおおりYAML圢匏には未察応です。

    蟞曞の削陀は䞊蚘フォルダから蟞曞ファむルをゎミ箱に移動するかファむルを削陀しおください。macSKKが自動で無効化したす。

    ナヌザヌ蟞曞は ~/Library/Containers/net.mtgto.inputmethod.macSKK/Data/Documents/Dictionaries/skk-jisyo.utf8 にUTF-8圢匏で保存されたす。
    ナヌザヌ蟞曞はテキスト゚ディタで曎新可胜です。別プロセスでナヌザヌ蟞曞が曎新された堎合はmacSKKが自動で再読み蟌みを行いたす。

    蚭定

    macSKKが入力メ゜ッドずしお遞択されおいるずきに入力メニュヌから「蚭定 」でGUIの蚭定画面を開くこずができたす。たたプラむベヌトモヌドのように入力メニュヌから盎接有効・無効を切り替えるものがありたす。

    蚭定は Plist 圢匏で ~/Library/Containers/net.mtgto.inputmethod.macSKK/Data/Library/Preferences/net.mtgto.inputmethod.macSKK.plist に保存されたす。

    キヌ 倀の型 蚭定の意味
    dictionaries Array 蟞曞蚭定
    directModeBundleIdentifiers Array 盎接入力モヌドにしおいるアプリケヌションのBundle Identifierの配列
    selectedInputSource String キヌ配列 (KeyLayout) のID
    showAnnotation Boolean 泚釈を倉換候補のそばに衚瀺するか
    inlineCandidateCount Number むンラむンで衚瀺する倉換候補の数
    workarounds Array 互換性蚭定がされおいるアプリケヌション
    candidatesFontSize Number 倉換候補のフォントサむズ (デフォルト13)
    annotationFontSize Number 泚釈のフォントサむズ (デフォルト13)
    skkserv Dictionary skkservサヌバヌぞの接続蚭定
    selectCandidateKeys String 倉換候補から確定するキヌ配列
    findCompletionFromAllDicts Boolean ナヌザヌ蟞曞だけでなくすべおの蟞曞から補完を探すか
    showCompletion Boolean 補完候補を衚瀺するか
    selectedKeyBindingSetId String 遞択しおいるキヌバむンドのセットのID
    keyBindingSets Array キヌバむンドのセットの配列
    enterNewLine Boolean Enterキヌで倉換候補の確定 + 改行も行う
    systemDict String 泚釈に䜿甚するシステム蟞曞
    selectingBackspace Number 倉換候補遞択時のバックスペヌスの挙動
    punctuation Number カンマずピリオド抌䞋時の句読点蚭定
    privateMode Boolean プラむベヌトモヌド
    ignoreUserDictInPrivateMode Boolean プラむベヌトモヌドでナヌザヌ蟞曞を無芖するか
    showInputModePanel Boolean 入力モヌドをモヌダル衚瀺するか
    candidateListDirection Number 倉換候補リストの衚瀺方向
    dateConversions Dictionary 日付倉換の読みず倉換候補
    showCandidateForCompletion Boolean 倉換候補の補完を衚瀺するか
    fixedCompletionByPeriod Boolean ピリオドで最初の補完候補で確定するか

    機胜

    単語登録

    有効な蟞曞で有効な読みが芋぀からない堎合、単語登録モヌドに移行したす。

    䟋ずしお “あああ” で倉換しようずしおも蟞曞になかった堎合 [登録あああ] のようなテキストが衚瀺されたす。

    この状態でテキストを入力しEnterするこずでナヌザヌ蟞曞にその読みで登録されたす。挢字倉換も可胜ですが単語登録モヌドで倉換候補がない倉換が行われた堎合は入力されなかったず扱い、入れ子で単語登録モヌドには入れなくなっおいたす。

    単語登録モヌドでのみ C-y でクリップボヌドからペヌストできたす (AquaSKKず同様です)。通垞のペヌストコマンド Cmd-v はアクティブなアプリケヌションに取られお利甚できないため、特殊なキヌバむンドにしおいたす。

    単語登録をしない堎合はEscキヌや C-g でキャンセルしおください。

    ナヌザヌ蟞曞から単語の削陀

    倉換候補が遞択されおいる状態で Shift-x を入力するず (よみ) /(倉換結果)/ を削陀したす(yes/no) ずいう衚瀺に切り替わりたす。この状態でyesず入力しおenterするずナヌザヌ蟞曞から遞択しおいた倉換候補を削陀したす。noを遞んだり Escキヌや C-g でキャンセルした堎合には䜕も行いたせん。

    珟状は遞択されおいる倉換候補がナヌザヌ蟞曞にない堎合は 削陀したす(yes/no) ずいう衚瀺を行いたすが、実際には䜕も行いたせん(ナヌザヌ蟞曞以倖を曞き換えたくないため)。将来は他蟞曞からの削陀ができるような察応をするかもしれたせんが珟圚は未定です。

    読みの補完

    入力䞭、ナヌザヌ蟞曞にある送りなし倉換゚ントリから先頭が䞀臎する倉換履歎がある堎合、入力テキストの䞋郚に候補を衚瀺したす。タブキヌを抌すこずで衚瀺されおいるずころたで入力が補完されたす。

    珟圚、補完の察象ずなるのはナヌザヌ蟞曞の送りなし゚ントリだけです。

    数倀倉換

    蟞曞に “だい# /第#0/第#1/” のように、読みに”#”、倉換候補に “#(数字)” を含む゚ントリは数倀倉換゚ントリです。

    macSKKではタむプ0, 1, 2, 3, 8, 9に察応しおいたす。
    数倀ずしお䜿えるのは0以䞊2^63-1 (Int64.max) たでです。

    ナヌザヌ蟞曞に远加される倉換結果は “だい# /第#0/” のように実際の入力に䜿甚した数倀は含たない圢匏で远加されたす。

    キヌ配列の倉曎

    デフォルトではQWERTY配列になっおいたすが、蚭定画面からキヌ配列を倉曎できたす。

    システムで有効なキヌ配列のうち、英語甚のキヌ配列のみを遞択リストに衚瀺しおいたす。

    キヌバむンドの倉曎

    qやlやCtrl-jなど、SKKで䜿甚されるキヌバむンドを倉曎できたす。
    倉曎するには、蚭定画面のキヌバむンドからデフォルトのキヌバむンドのセットを耇補しおから修正しおください。

    もしおかしな挙動だったり、蚭定にはないような特殊なキヌバむンドを垌望したい堎合はIssueでお知らせください。

    ロヌマ字倉換ルヌルの倉曎

    どのキヌを入力したずきにどのような文字に倉換するかをカスタマむズするこずができたす。
    䟋えばロヌマ字入力衚のカスタマむズもできたすが、それ以倖でも句読点ずしおカンマやピリオドを入力するように蚭定したり、党角で入力したい蚘号を蚭定するこずができたす。

    ~/Library/Containers/net.mtgto.inputmethod.macSKK/Data/Documents/Settings/kana-rule.conf にファむルを眮くこずで、ロヌマ字テヌブルの倉曎や蚘号入力をカスタマむズするこずができたす。

    䞊蚘のパスにファむルがない堎合、もしくは正垞に読み蟌めなかった堎合は ~/Library/Input Methods/macSKK.app/Contents/Resources/kana-rule.conf がデフォルトで䜿甚されたす。
    カスタマむズしたい際はmacSKK.app内にある kana-rule.conf ファむルもしくは https://github.com/mtgto/macSKK/blob/main/macSKK/kana-rule.conf を元にカスタマむズするのがよいでしょう。
    蚭定ファむルの倉曎を監芖しおいるため曎新されたら即座に反映されたす。

    ロヌマ字倉換ルヌル蚭定ファむルはUTF-8 + LF (BOMなし) で䜜成しおください。
    簡単な䜿い方はデフォルトファむルにもあるので参照しおみおください。

    ファむルを配眮したのに反映されない堎合はConsole.appで゚ラヌが出おないか確認しおみおください。
    ロヌマ字倉換定矩ファむルの XX 行目の蚘述が壊れおいるため読み蟌みできたせん のようなログが出おいるかもしれたせん。
    正垞に読み蟌めおいる堎合は 独自のロヌマ字かな倉換ルヌルを適甚したした ずいうログが出力されたす。

    珟圚制限ずしお、カタカナや半角カナモヌドでの文字をひらがなモヌドでの文字ず異なる文字を䜿甚する堎合、未確定入力䞭はカタカナでも半角カナでもひらがなのルヌルが䜿甚されおしたす。

    䟋えば a,あ,か, ずいう蚭定がある状態で a を入力した堎合はこうなりたす。

    モヌド 頭に▜がある 結果 問題ある?
    ひらがな YES ▜あ なし
    ひらがな NO あ なし
    カタカナ YES ▜ア あり
    カタカナ NO カ なし
    半角カナ YES ▜ あり
    半角カナ NO  なし

    プラむベヌトモヌド

    プラむベヌトモヌドが有効なずきは倉換結果がナヌザヌ蟞曞に反映されたせん。ナヌザヌ蟞曞以倖の蟞曞やプラむベヌトモヌドを有効にする前のナヌザヌ蟞曞の倉換候補は参照されたす。

    プラむベヌトモヌドの有効・無効は入力メニュヌ→プラむベヌトモヌドから切り替えできたす。

    盎接入力

    盎接入力を有効にしたアプリケヌションでは、日本語倉換凊理を行いたせん。独自でIME機胜を持぀Emacs.appなどで䜿甚するこずを想定しおいたす。

    盎接入力の有効・無効の切り替えは、切り替えたいアプリケヌションが最前面のずきに入力メニュヌ→”(アプリ名)で盎接入力”から行えたす。
    たた有効になっおいるアプリケヌションのリストは蚭定→盎接入力から確認できたす。

    盎接入力を有効にしたアプリケヌションはBundle Identifier単䜍で蚘録しおいるため、アプリケヌションを移動させおも蚭定は無効になりたせん。たた特殊なGUIアプリケヌションはBundle Identifierをもたないため盎接入力を蚭定できたせん (Android StudioのAndroid゚ミュレヌタずか)。

    ナヌザヌ蟞曞の自動保存

    ナヌザヌ蟞曞が曎新された堎合、䞀定期間おきにファむル曞き出しが行われたす。たたシステム再起動時やバヌゞョンアップのむンストヌル実行埌などmacSKKプロセスが正垞終了する際にファむル曞き出しが終わっおいない曎新がある堎合はファむル曞き出しを行っおから終了したす。
    もし即座にファむル曞き出ししたい堎合は入力メニュヌから”ナヌザヌ蟞曞を今すぐ保存”を遞んでください。

    Command + Option + Escからの匷制終了時やシグナルを送っおの終了時は保存されないので泚意しおください。

    バヌゞョンの自動チェック

    macSKKは珟圚開発䞭のアプリケヌションです。そのため安定しおいない可胜性が高いです。
    なるべく䞍具合が修正された最新バヌゞョンを䜿っおいただきたいため、定期的に新しいバヌゞョンがないかをチェックしお芋぀かった堎合は通知センタヌで通知したす。

    新芏バヌゞョンの確認はGitHubのReleasesペヌゞのAtom情報を取埗しお行いたす。
    バヌゞョンチェックは12時間おきにバックグラりンドで実行されたす。

    macSKKアプリ自䜓はApp Sandboxでむンタヌネット通信ができないように蚭定しおいるため、GitHubのReleaseペヌゞの取埗はmacSKKからXPCを介しお倖郚プロセスで行いたす。

    SKKServを蟞曞ずしお䜿う

    skkservサヌバヌをSKK蟞曞ずしお䜿甚するこずができたす (macSKKがskkservサヌバヌずしお機胜するわけではないです)。
    ただ䜜り蟌みが甘いのでベヌタ機胜だず思っおください。

    蚭定の蟞曞メニュヌからSKKServを有効にするこずで䜿甚できたす。

    • アドレスはIPv4, IPv6, ホスト名のいずれかを指定しおください。
    • ポヌト番号は通垞は1178が䜿われるようです
    • 応答゚ンコヌディングは通垞はEUC-JPが䜿われるこずが倚いようですがskkservの実装によっおはUTF-8を返すものもあるようです。
    • SKKServ蚭定画面のテストボタンは蚭定䞭のskkservにバヌゞョン取埗コマンドを詊したす。正垞な応答があれば「skkservぞの接続に成功したした」ず衚瀺されたす。

    珟状は以䞋の制限がありたす。

    • 同時に1サヌバヌたで接続可胜です。
    • TCP接続が切断されたり1秒以内に送信できなかったり1秒以内に応答がなかった堎合は取埗できなかったものずしお扱いたす。
    • 垞にファむル蟞曞よりも倉換候補は埌に出るようにしおいたす。
      • 䞊び替えのUIで迷ったために先送り。将来䞊び替えできるようにするず思いたす。

    動䜜確認はyaskkserv2でのみ行っおいたす。

    アンむンストヌル

    珟圚アンむンストヌルする手順は甚意しおいないためお手数ですが手動でお願いしたす。
    今埌、dmg内にアンむンストヌラを同梱予定です。

    手動で行うには、システム蚭定→キヌボヌド→入力゜ヌスから「ひらがな」「ABC」を削陀埌、以䞋のファむルを削陀しおください。

    • /Library/Input Methods/macSKK.app
    • ~/Library/Containers/net.mtgto.inputmethod.macSKK

    FAQ

    Q. Visual Studio Code (vscode) で C-j を抌すず行末が削陀されおしたいたす

    A. C-j がVisual Studio Codeのキヌボヌドショヌトカット蚭定の editor.action.joinLines にデフォルトでは割り圓おられおいるず思われたす。Cmd-K Cmd-S から editor.action.joinLines で怜玢し、キヌバむンドを削陀するなり倉曎するなりしおみおください。

    Q. Wezterm で C-j を抌すず改行されおしたいたす

    A. macos_forward_to_ime_modifier_mask に CTRL を远加するこずでIMEに C-j が枡されおひらがなモヌドに切り替えできるようになりたす。 SHIFT も入れおおかないず挢字倉換開始できなくなるので、 SHIFT|CTRL を蚭定するのがよいず思いたす。

    Q. 暙準Terminal / iTerm2で C-j を抌すず改行されおしたいたす

    A. Karabiner-Elementsで C-j をかなキヌに眮換するこずで察応するこずができたす。䜜者は以䞋のようなComplex Modificationsを ~/.config/karabiner/assets/complex_modifications/macskk.json に配眮しおいたす。将来 https://github.com/pqrs-org/KE-complex_modifications に配眮しお簡単にむンストヌルできるようにしようず思っおいたす。

    {
        "description": "macSKK for Terminal/iTerm2",
        "manipulators": [
            {
                "conditions": [
                    {
                        "bundle_identifiers": [
                            "^com\\.googlecode\\.iterm2",
                            "^com\\.apple\\.Terminal"
                        ],
                        "type": "frontmost_application_if"
                    },
                    {
                        "input_sources": [
                            {
                                "input_source_id": "^net\\.mtgto\\.inputmethod\\.macSKK\\.(ascii|hiragana|katakana|hankaku|eisu)$"
                            }
                        ],
                        "type": "input_source_if"
                    }
                ],
                "from": {
                    "key_code": "j",
                    "modifiers": {
                        "mandatory": [
                            "left_control"
                        ]
                    }
                },
                "to": [
                    {
                        "key_code": "japanese_kana"
                    }
                ],
                "type": "basic"
            }
        ]
    }

    Q. Ghosttyでq/lキヌでモヌドを切り替えおもq/lが入力されおしたう / C-j を抌すず改行されおしたう

    Ghostty v1.1.0で、q/lなどで入力モヌドが倉曎されたかどうかをGhostty偎で刀定しおくれるようになりたした。ただしOS偎の珟圚の入力モヌドが倉わったかどうかをチェックしおいるため、切り替え前ず切り替え埌の入力モヌドを䞡方ずもmacOSのキヌボヌド蚭定で有効にしおおく必芁がありたす。
    䟋えばmacSKKの「ひらがな」だけを入れおいる堎合、qでカタカナモヌドに倉曎しおもOSでの入力モヌドは「macSKKのひらがな」のたたず認識されおしたいqがそのたた入力されおしたいたす。同様にmacSKKの「ABC」を入れおいないず、lを入力しおもモヌドが倉わっおないずGhosttyには解釈されおlがそのたた入力されおしたいたす。
    https://zenn.dev/mtgto/articles/macskk-karabiner-settings-for-ghostty も参考にしおください。

    Q. Visual Studio Code (vscode) のタヌミナルやClaude Code拡匵でaiueoがひらがなにならない・qやlのモヌド倉曎でキヌが入力されおしたう

    xterm.js利甚の問題ず思われたす。 #356

    入力メニュヌにある「1文字目を未確定扱い (互換性)」を有効にするこずで aiueo のようなロヌマ字1文字からなるひらがなの入力ができるようになりたす。あくたで䞀時的な回避策 (ワヌクアラりンド) なので、aiueo のあずは他の文字を打぀かEnterが抌されないず入力が確定されないたたずなりたす。

    Q. アプリによっおq/lキヌでモヌドを切り替えおもq/lが入力されおしたう / C-jで改行されおしたう

    #119 ず同じ問題ず思われたす。
    v0.20.0ではKitty, LINE, Alacrittyに぀いお「空文字挿入」ずいうワヌクアラりンドを初期蚭定でもっおいたす。

    空文字挿入の蚭定は、アプリが最前面にあるずきに入力メニュヌから蚭定可胜です。
    たたmacSKKの蚭定内の「互換性の蚭定」からも可胜です。

    Q. OS暙準の入力゜ヌス ( 日本語 や ABC ) を削陀しおmacSKKだけにしたい

    日本語 の蚭定で入力モヌドの英字を有効にしおから ABC, 日本語 の順に削陀するずmacSKKだけにしたりできるようです。
    参考: https://zenn.dev/yoshiyoshifujii/articles/78798db6472bf4

    Q. タヌミナルで キヌボヌド入力のセキュリティを保護 iTerm2で Secure Keyboard Entry を有効にするず入力メニュヌで無効化される

    macOSの日本語入力システムは、ナヌザヌラむブラリ (~/Library) ずシステムラむブラリ (/Library) の二皮類の配眮堎所があるのですが、 Secure Keyboard Entry が有効なアプリケヌション内で日本語入力システムを䜿甚できるようにするにはシステムラむブラリにむンストヌルされおいる必芁があるようです。

    参考: #351

    v2.0.0からシステムラむブラリぞのむンストヌルが可胜にできるように倉曎したした。システムラむブラリぞのむンストヌルをお詊しください。

    開発

    コントリビュヌトのガむドを .github/CONTRIBUTING.md に甚意しおいたす。

    Xcodeでビルドし、 ~/Library/Input Methods に macSKK.app を配眮しおからシステム蚭定→キヌボヌド→入力゜ヌスで ひらがな (macSKK) などを远加しおください。

    macOS 14以降ではApp Sandboxの制限が匷くなりたした。すでにリリヌス版macSKKを䜿っおいる環境で開発版のmacSKKを䜿甚するず起動時に 「"macSKK"がほかのアプリからのデヌタぞのアクセスを求めおいたす。」 ずいうダむアログが衚瀺されるこずがありたす。これはリリヌス版で眲名に䜿甚しおいるTeam IDず異なるProvisioning Profileを䜿甚しおいる (もしくはAd hoc眲名を䜿っおいる) 堎合に同じナヌザヌ蟞曞ファむルにアクセスするこずで発生したす。この状態で「蚱可」を遞んでしたうずリリヌス版のmacSKKが逆に読み蟌めなくなるなどの想定しない問題が発生する可胜性がありたす。お手数ですがBundle Identifierを倉曎するなどを怜蚎しおください。

    バヌゞョンアップ

    X.Y.Z 圢匏のバヌゞョン (MARKETING_VERSION) ずビルド番号 (CURRENT_PROJECT_VERSION) の曎新が必芁です。

    ビルド番号

    メゞャヌ、マむナヌ、パッチ、どのバヌゞョンアップでも1ず぀むンクリメントしおください。
    Xcodeから手動でやっおもいいし、agvtoolでもいいです。

    agvtool next-version

    MARKETING_VERSIONの曎新

    Info.plistにCFBundleShortVersionStringで管理するのではなくpbxprojにMARKETING_VERSIONで管理する圢匏だずagvtool next-marketing-version が䜿えないみたいなのでXcodeで手動で倉えおください。

    リリヌス

    • CHANGELOGを蚘述
    • バヌゞョンアップ
    • make clean && make release
    • GitHubのReleaseを䜜成、dmgずdSYMsをアップロヌド、CHANGELOGをコピペ

    ラむセンス

    macSKKはGNU䞀般公衆ラむセンスv3たたはそれ以降のバヌゞョンの条項の元で配垃されるフリヌ・゜フトりェアです。

    詳现は LICENSE を参照しおください。

    Visit original content creator repository