Author: h6sdm9fdluld

  • conan-geographiclib

    Package Status

    Bintray Windows Linux & macOS
    Download Build status Build Status

    Conan.io Information

    Bincrafters packages can be found in the following public Conan repository:

    Bincrafters Public Conan Repository on Bintray

    Note: You can click the “Set Me Up” button on the Bintray page above for instructions on using packages from this repository.

    Issues

    If you wish to report an issue or make a request for a Bincrafters package, please do so here:

    Bincrafters Community Issues

    General Information

    This GIT repository is managed by the Bincrafters team and holds files related to Conan.io. For detailed information about Bincrafters and Conan.io, please visit the following resources:

    Bincrafters Wiki – Common README

    Bincrafters Technical Documentation

    Bincrafters Blog

    License Information

    Bincrafters packages are hosted on Bintray and contain Open-Source software which is licensed by the software’s maintainers and NOT Bincrafters. For each Open-Source package published by Bincrafters, the packaging process obtains the required license files along with the original source files from the maintainer, and includes these license files in the generated Conan packages.

    The contents of this GIT repository are completely separate from the software being packaged and therefore licensed separately. The license for all files contained in this GIT repository are defined in the LICENSE.md file in this repository. The licenses included with all Conan packages published by Bincrafters can be found in the Conan package directories in the following locations, relative to the Conan Cache root (~/.conan by default):

    License(s) for packaged software:

    ~/.conan/data/<pkg_name>/<pkg_version>/bincrafters/package/<random_package_id>/license/<LICENSE_FILES_HERE>
    

    Note : The most common filenames for OSS licenses are LICENSE AND COPYING without file extensions.

    License for Bincrafters recipe:

    ~/.conan/data/<pkg_name>/<pkg_version>/bincrafters/export/LICENSE.md
    
    Visit original content creator repository https://github.com/bincrafters/conan-geographiclib
  • infinity-os

    Infinity OS

    • Features:
      • ✅ Architecture x86;
      • ✅ Boot process usign a single stage in assembly;
      • ✅ Vga Text mode 80×25;
        • ✅ Print text on screen;
        • ✅ Scroll content up on last line reached and is full filled;
        • ✅ Supported Scape sequences:
          • ✅ \n = Line break;
          • ✅ \t = Tabulation;
          • ⬜ \r = Carriage return (move cursor position to start of the line);
          • ✅ \b = Backspace;
          • ⬜ \f = Form feed (clear screen);
        • ✅ Format strings (stdlib::kprintf(“A String: %s”, “My string”)):
          • ✅ %s = String data type;
          • ✅ %c = Char data type;
          • ✅ %d = Integer data type;
          • ✅ %x = Hex representation of int data type;
          • ✅ %b = Binary representation of int data type;
          • ✅ %0d = Leading zeros for above format types %d, $x, %b;
      • ✅ PS/2 8042 – Controller:
        • ✅ Self Tests and Configuration;
      • ✅ PS/2 Keyboard;
        • ✅ Self Tests and Configuration;
        • ✅ Key code scan read;
        • ✅ ASCII key buffer to send key data to processes;
      • ✅ PIT – Programmable Interval Timer;
        • ✅ Minimum implementation;
        • ✅ Kernel sleep function pit::ksleep(int Millis);
        • ✅ Configurable channels;
      • ✅ GDT – Global Descriptor Table;
      • ✅ IDT – Interrupt Descriptor Table;
      • ✅ ISR – Interrupt Service Routine;
        • ✅ CPU Interruptions (0-31);
        • ✅ PIC Interruptions (32-47);
        • ✅ Kernel Interruptions (48-255) (Kernel Syscalls);
          • ✅ int 0x30 Syscall that handle all SYSFUNCS;
      • ✅ PIC 8259 – Programmable Interrupt Controller;
        • ✅ Remaped the Master and Slave PIC IRQs vectors to offsets (Master = 0x20), (Slave = 0x28);
        • ✅ Maskable IRQs lines. Mask function implemented to disable/enable IRQs lines from being triggered by hardware and notified to the CPU.
        • ✅ EOI – End Of Interruption. Implemented to clear the In Service Register (ISR).
        • ✅ Possibility to disable the PIC to use in it’s place the APIC;
      • ⬜ APIC – Advanced Programmable Interrupt Controller;
      • ✅ CPUID – Central Processing Unit Identification;
        • ✅ Vendor id implemented to get the CPU vendor, like AMD, INTEL, ARM, etc;
        • ✅ Func EAX=1 Fully implemented to get the CPU capabilities;
        • ⬜ Not fully implemented yet;
      • ✅ MMU – Memory Management Unity or Paging;
        • ✅ PageDirs and PageTables configured;
        • ✅ Kernel mapped successfully;
        • ✅ VGA memory mapped successfully;
        • ⬜ I/O ports mapped successfully;
      • ✅ HEAP – Heap system management mechanism;
        • ✅ SHARED – For test purpose the user process heaps are allocated inside kernel heap;
        • ✅ KERNEL – Functions that handle kernel heap. kmalloc and kfree;
        • ✅ PROCESS – Functions that handle user process heap. malloc and free;
      • ✅ VFS – Virtual file system. Since we actually don’t have a file system;
        • ✅ findFile – Function to search a file by it’s name in virtual file system list;
      • ✅ SYSCALLS – System calls that is executed when a SYSFUNCS is called;
        • ✅ INT 0x30(48) – General Syscall that handle all SYSFUNCS;
          • ✅ EAX 0x01(1) – VGA – print;
          • ✅ EAX 0x02(2) – SCHEDULER – exit;
      • ⬜ Programs/Processes/Libs;
        • ✅ SYSFUNCS – System Functions that runs in user mode and perform SYSCALLS;
          • ✅ VGA – Video Graphics Array;
            • ✅ TEXT – print – Prints raw text with escape sequences only in the screen;
            • ✅ TEXT – printf – Prints formatted text with escape sequences in the screen; Uses the same interruption of print;
          • ✅ SCHEDULER – Process Scheduler;
            • ✅ EXIT – exit – Terminate current process and return a result code, then move to the next process;
          • ✅ KEYBOARD – Keyboard Driver;
            • ✅ TEXT – readln – Read one line of text typed by the user and stop in next \n (KEY_ENTER) scape sequence;
        • ✅ SHELL process creation;
          • ✅ Communicate with kernel using IDT Interruptions to access VGA memory;
          • ✅ Hello World Print;
        • ✅ IMAGEFS – Format Storage Devices Using a File System Architecture;
          • ⬜ FAT32 – File system format implemented;
            • ✅ LIST – List all archives inside a absolute folder path;
            • ⬜ READ – Read file content;
            • ⬜ CREATE DIR – Create directories;
            • ⬜ CREATE FILE – Create files;
          • ⬜ CREATE – Creates a .img for a file system format;

    Visit original content creator repository
    https://github.com/richard-hgs/infinity-os

  • notion-search-alfred5-workflow

    notion-search-alfred5-workflow

    An Alfred 5 workflow to search Notion.so with instant results

    img

    Alfred 5 version (this one)

    Github Repository

    Latest Download

    Alfred 4 version

    Github Repository

    Latest Download

    Simply type your keyword into Alfred (default: ns) and provide a query to see instant search results from Notion that mimic the Quick Find function in the Notion webapp.

    Pressing enter on a search result takes you to that page in Notion in your default web browser or notion app.

    Hold Cmd + press enter on any search result to copy the url to your clipboard.

    Additional features

    • Comes with pre-configured support for OneUpdater for automatic version updates.

    • The workflow also provides the ability to quickly see your recently viewed pages. Simply type the ‘ns’ keyword to start the workflow, as you would before you search, and your most recently viewed notion pages are displayed.

    • Open a new notion page by typing ‘nsn’, this only supports the web app currently, it’s very handy!

    img

    User Configuration

    • Cookie: Needed for your Notion token.
    • Space ID: Your organisation identifier.
    • Use Desktop Client: Defaults to False. Determines whether to open Notion links in the desktop client rather than the web app.

    It’s recommended to leave the following variables to their defaults, unless you’re confident:

    • Navigable Only: Defaults to False. Setting to false allows you to search objects within a page, ie notion objects that cannot be found through the left hand side navigation pane.
    • Enable Icons: Defaults to True. This toggles support for Notion icons to be shown natively in Alfred search results, for a better design/UX experience. Custom Notion icons are downloaded on demand and cached.
    • Show Recently Viewed: Defaults to True. This toggle determines if recently viewed pages should be shown when there is no query provided by the user and the user id is present in the supplied cookie (user id is needed for the api call to show recently viewed pages).
    • Icon Cache Days: Defaults to the recommended value of 365 days for the best performance. Defines the number of days to cache icons and images. Min 0, max 365.

    Install Steps

    Install Python3

    Many people will have Python3 already on their machine, if you haven’t you can try to run python3 from a Terminal window and it should prompt you to install the Xcode CLI tools automatically (which include Python).

    Otherwise you can read a more detailed guide on installing Python here.

    Install cairosvg (optional)

    Installing cairosvg will allow svg icons to be shown in Alfred search results, providing a more visually appealing experience. Open terminal and run the following command:

    pip3 install cairosvg

    Install cairosvgs’s dependency, cairo. With Homebrew for example:

    brew install cairo

    If you haven’t used homebrew before, you may want to skip this optional step or install homebrew (easy with a quick google search).

    UPDATE: There seems to be an issue with cairosvg on apple silicon, use this fix at your own risk but this worked for me and now SVG icons show again:

    brew install cairo pango gdk-pixbuf libxml2 libxslt libffi
    sudo mkdir /usr/local/lib/
    sudo ln -s /opt/homebrew/lib/libcairo-2.dll /usr/local/lib/libcairo-2.dll
    sudo ln -s /opt/homebrew/lib/libcairo.so.2 /usr/local/lib/libcairo.so.2
    sudo ln -s /opt/homebrew/lib/libcairo.2.dylib /usr/local/lib/libcairo.2.dylib
    

    Get your workflow variables

    I recommend using chrome to retrieve these values. If you can only use safari you can copy the ‘token_v2’ value by following the equivalent steps above and populating the cookie env variable in Alfred so it looks like this token_v2=XXXXXXXXXXXX (however this means the recently viewed pages feature will not work for you).

    Visit the Notion webapp and use your browser developer tools to see the network requests being made when you type in anything to the quick find search bar. In Chrome select ‘View’ in the toolbar > Developer > Developer Tools. Then select the Network tab in the developer tools window.

    Here you’ll see a request called search, check the request headers to copy the cookie value and check the request payload to copy your notionSpaceId, as shown in the screenshots below.

    Known issue: Some users have experienced issues with copying these values directly from developer tools, but have seen success by copying and pasting the values into TextEdit or a different text editor first, this probably “strips out” or removes any problematic formatting.

    img

    Get your cookie headers They should look something like this

    notion_browser_id=1bcfbfb9-e98c-9f03; logglytrbckingsession=eb1c82cb-fd; bjs_bnonymous_id=%22bdbf1088-b33c-9bdb-b67c-1e; _fbp=fb.1.12821; intercom-id-gpfdrxfd=b61ec62d-; token_v2=b39099...
    
    

    img

    Get your spaceId It should look something like this

    celcl9aa-c3l7-7504-ca19-0c985e34ll8d
    

    img

    Install the Notion Alfred worflow

    Download and double click the latest release for your version of Alfred, following the links at the top of this page.

    Add these values to the Notion Alfred workflow

    Alfred should automatically open the ‘configure workflow’ options panel when you first install the workflow, here you can add the values obtained through the above steps.

    You can also update these values at any time by clicking Configure Workflow..

    img

    Troubleshooting

    The script may fail due to an SSL error. If the script isn’t working, turn on debugging by clicking on the little cockroach in the alfred workflow screen. If you see an error like:

    [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: .....

    Run this from the terminal app:

    '/Applications/Python 3.9/Install Certificates.command'

    The single quotes are required. If this file doesn’t exist, run “python –version” to find out what version you have and update the directory accordingly.

    Tips

    • If you prefer using the Mac app rather than using Notion in your browser, check Use Desktop Client under the menu that appears when you click ‘Configure Workflow..’ as shown above in the install steps section.

    Download:

    Follow the links at the top of this page.

    Forum topics:

    https://www.alfredforum.com/topic/14451-notionso-instant-search-workflow/ https://www.reddit.com/r/NotionSo/comments/f58u1y/notionso_instant_search_workflow_for_alfred/

    Visit original content creator repository https://github.com/wrjlewis/notion-search-alfred5-workflow
  • notion-search-alfred5-workflow

    notion-search-alfred5-workflow

    An Alfred 5 workflow to search Notion.so with instant results

    img

    Alfred 5 version (this one)

    Github Repository

    Latest Download

    Alfred 4 version

    Github Repository

    Latest Download

    Simply type your keyword into Alfred (default: ns) and provide a query to see instant search results from Notion that mimic the Quick Find function in the Notion webapp.

    Pressing enter on a search result takes you to that page in Notion in your default web browser or notion app.

    Hold Cmd + press enter on any search result to copy the url to your clipboard.

    Additional features

    • Comes with pre-configured support for OneUpdater for automatic version updates.

    • The workflow also provides the ability to quickly see your recently viewed pages. Simply type the ‘ns’ keyword to start the workflow, as you would before you search, and your most recently viewed notion pages are displayed.

    • Open a new notion page by typing ‘nsn’, this only supports the web app currently, it’s very handy!

    img

    User Configuration

    • Cookie: Needed for your Notion token.
    • Space ID: Your organisation identifier.
    • Use Desktop Client: Defaults to False. Determines whether to open Notion links in the desktop client rather than the web app.

    It’s recommended to leave the following variables to their defaults, unless you’re confident:

    • Navigable Only: Defaults to False. Setting to false allows you to search objects within a page, ie notion objects that cannot be found through the left hand side navigation pane.
    • Enable Icons: Defaults to True. This toggles support for Notion icons to be shown natively in Alfred search results, for a better design/UX experience. Custom Notion icons are downloaded on demand and cached.
    • Show Recently Viewed: Defaults to True. This toggle determines if recently viewed pages should be shown when there is no query provided by the user and the user id is present in the supplied cookie (user id is needed for the api call to show recently viewed pages).
    • Icon Cache Days: Defaults to the recommended value of 365 days for the best performance. Defines the number of days to cache icons and images. Min 0, max 365.

    Install Steps

    Install Python3

    Many people will have Python3 already on their machine, if you haven’t you can try to run python3 from a Terminal window and it should prompt you to install the Xcode CLI tools automatically (which include Python).

    Otherwise you can read a more detailed guide on installing Python here.

    Install cairosvg (optional)

    Installing cairosvg will allow svg icons to be shown in Alfred search results, providing a more visually appealing experience. Open terminal and run the following command:

    pip3 install cairosvg

    Install cairosvgs’s dependency, cairo. With Homebrew for example:

    brew install cairo

    If you haven’t used homebrew before, you may want to skip this optional step or install homebrew (easy with a quick google search).

    UPDATE: There seems to be an issue with cairosvg on apple silicon, use this fix at your own risk but this worked for me and now SVG icons show again:

    brew install cairo pango gdk-pixbuf libxml2 libxslt libffi
    sudo mkdir /usr/local/lib/
    sudo ln -s /opt/homebrew/lib/libcairo-2.dll /usr/local/lib/libcairo-2.dll
    sudo ln -s /opt/homebrew/lib/libcairo.so.2 /usr/local/lib/libcairo.so.2
    sudo ln -s /opt/homebrew/lib/libcairo.2.dylib /usr/local/lib/libcairo.2.dylib
    

    Get your workflow variables

    I recommend using chrome to retrieve these values. If you can only use safari you can copy the ‘token_v2’ value by following the equivalent steps above and populating the cookie env variable in Alfred so it looks like this token_v2=XXXXXXXXXXXX (however this means the recently viewed pages feature will not work for you).

    Visit the Notion webapp and use your browser developer tools to see the network requests being made when you type in anything to the quick find search bar. In Chrome select ‘View’ in the toolbar > Developer > Developer Tools. Then select the Network tab in the developer tools window.

    Here you’ll see a request called search, check the request headers to copy the cookie value and check the request payload to copy your notionSpaceId, as shown in the screenshots below.

    Known issue: Some users have experienced issues with copying these values directly from developer tools, but have seen success by copying and pasting the values into TextEdit or a different text editor first, this probably “strips out” or removes any problematic formatting.

    img

    Get your cookie headers They should look something like this

    notion_browser_id=1bcfbfb9-e98c-9f03; logglytrbckingsession=eb1c82cb-fd; bjs_bnonymous_id=%22bdbf1088-b33c-9bdb-b67c-1e; _fbp=fb.1.12821; intercom-id-gpfdrxfd=b61ec62d-; token_v2=b39099...
    
    

    img

    Get your spaceId It should look something like this

    celcl9aa-c3l7-7504-ca19-0c985e34ll8d
    

    img

    Install the Notion Alfred worflow

    Download and double click the latest release for your version of Alfred, following the links at the top of this page.

    Add these values to the Notion Alfred workflow

    Alfred should automatically open the ‘configure workflow’ options panel when you first install the workflow, here you can add the values obtained through the above steps.

    You can also update these values at any time by clicking Configure Workflow..

    img

    Troubleshooting

    The script may fail due to an SSL error. If the script isn’t working, turn on debugging by clicking on the little cockroach in the alfred workflow screen. If you see an error like:

    [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: .....

    Run this from the terminal app:

    '/Applications/Python 3.9/Install Certificates.command'

    The single quotes are required. If this file doesn’t exist, run “python –version” to find out what version you have and update the directory accordingly.

    Tips

    • If you prefer using the Mac app rather than using Notion in your browser, check Use Desktop Client under the menu that appears when you click ‘Configure Workflow..’ as shown above in the install steps section.

    Download:

    Follow the links at the top of this page.

    Forum topics:

    https://www.alfredforum.com/topic/14451-notionso-instant-search-workflow/ https://www.reddit.com/r/NotionSo/comments/f58u1y/notionso_instant_search_workflow_for_alfred/

    Visit original content creator repository https://github.com/wrjlewis/notion-search-alfred5-workflow
  • liveusb-builder

    liveusb-builder

    liveusb-builder is a script suite to create multiboot USB stick for GNU/Linux distributions. It’s lightweight with few dependencies, and it’s extensible and hackable.

    The source code is hosted on both git.wehack.space and GitHub.

    A presentation in Chinese is at https://wehack.space/vimacs/liveusb-builder.odp.

    Features

    • Multiboot support with syslinux and GRUB
    • Support legacy BIOS, UEFI, and various firmware payloads (e.g. GRUB, petitboot) that reads GRUB or syslinux config files
    • Support placing kernel files (kernel and initramfs) and other data files (squashfs, CD image) in separate partitions
    • Download an up-to-date CD image and verify it
    • A GNU/Linux command line tool

    Install

    You need these packages on your GNU/Linux system to use liveusb-builder.

    • libarchive: for ISO image extraction
    • udisks2 (optional,recommended): for mounting USB disk partitions without being root
    • udevil (optional): for mounting USB disk partitions and ISO images without being root
    • wget: for downloading
    • syslinux (recommended): bootloader for legacy BIOS
    • GRUB: bootloader for legacy BIOS if there’s no syslinux, and bootloader for UEFI

    For Arch Linux users, just install liveusb-builder-git from AUR.

    Will my boot image support liveusb-builder?

    liveusb-builder needs a kernel image, an initramfs image, and a proper kernel command line to support a boot image. However, not every CD/DVD image supports booting this way. There are some other ways to boot these images, but they will break our philosophy to support various firmware and bootloaders.

    If you want to use a disk image to install an operating system, I suggest using the virtual machine method as follows. Boot an AMD64 machine with enough memory and VMX feature with a Live USB with QEMU GUI (e.g. Grml 2020.06, also see my ticket for Grml) after attaching the hard disk you want to install the OS on, then run the following (assume the hard disk attached is /dev/sda):

    sudo qemu-system-x86_64 -enable-kvm -m 4G -cdrom your-install-cd.iso -drive /dev/sda,format=raw -boot order=d -no-reboot

    Do the system installation in the QEMU window. After QEMU exits, put the hard disk on the target machine to continue installing.

    I’ve already used this method to successfully install Windows 7, OpenBSD 6.7, and various GNU/Linux systems.

    Usage

    First, you need to have a partitioned USB drive. For the best legacy BIOS compatibility, it’s recommended to use MSDOS (MBR) partition table. Because most UEFI firmware only supports FAT32 partitions, you need a FAT32 partition on the USB drive, and put the boot files into this partition.

    The easier way: one FAT32 partition

    Suppose your USB stick device is /dev/sdb and the partition on the device is /dev/sdb1.

    # install Arch, Mint (x86_64 with MATE Desktop) and Fedora 32 to USB
    ./buildlive --root=/dev/sdb1 arch mint/mate fedora/32

    The other way is to mount your USB drive partition first. I recommend using udevil so that you can write files without as root.
    Then run buildlive script as follows, suppose /dev/sdb1 is mount to /media/sdb1:

    # install Arch, Mint (x86_64 with MATE Desktop) and Fedora 32 to USB
    ./buildlive --root=/media/sdb1 arch mint/mate fedora/32

    The more customizable way: using a FAT32 boot partition and an ext2 data partition

    Partition your disk as follows to create a 500MB FAT32 boot partition, and an ext2 partition using the remaining space, suppose your USB is /dev/sdb.

    $ sudo fdisk /dev/sdb
    
    Command (m for help): o
    Created a new DOS disklabel with disk identifier 0x24c5dd70.
    
    Command (m for help): n
    Partition type
       p   primary (0 primary, 0 extended, 4 free)
       e   extended (container for logical partitions)
    Select (default p):
    
    Using default response p.
    Partition number (1-4, default 1):
    First sector (2048-30463999, default 2048):
    Last sector, +sectors or +size{K,M,G,T,P} (2048-30463999, default 30463999): +500M
    
    Created a new partition 1 of type 'Linux' and of size 500 MiB.
    
    Command (m for help): t
    Selected partition 1
    Hex code (type L to list all codes): b
    Changed type of partition 'Linux' to 'W95 FAT32'.
    
    Command (m for help): a
    Selected partition 1
    The bootable flag on partition 1 is enabled now.
    
    Command (m for help): n
    Partition type
       p   primary (1 primary, 0 extended, 3 free)
       e   extended (container for logical partitions)
    Select (default p):
    
    Using default response p.
    Partition number (2-4, default 2):
    First sector (1026048-30463999, default 1026048):
    Last sector, +sectors or +size{K,M,G,T,P} (1026048-30463999, default 30463999):
    
    Created a new partition 2 of type 'Linux' and of size 14 GiB.
    
    Command (m for help): w
    The partition table has been altered.
    Calling ioctl() to re-read partition table.
    Syncing disks.
    

    Format the partitions:

    sudo mkfs.msdos -F 32 /dev/sdb1
    sudo mkfs.ext2 /dev/sdb2
    

    Mount them and create the directory, and we need to make the directory liveusb-data writable by the current user.

    udevil mount /dev/sdb1 /media/boot
    udevil mount /dev/sdb2 /media/root
    sudo install -d /media/root/liveusb-data
    sudo chown $(whoami) /media/root/liveusb-data/
    

    At last, make the Live USB (we install Arch and Fedora 32 in it):

    $ ./buildlive --boot /media/boot --root /media/root arch fedora/32
    

    Experimental features

    I’ve made some experimental features that are not yet merged to the main source tree.

    Status

    The resulting USB stick works on QEMU with PC BIOS (SeaBIOS), UEFI (OVMF), libreboot (i440fx, GRUB txtmode) as firmware.

    The script testusb.sh can be used to test a USB stick with QEMU.

    Related work

    You can search keyword multiboot on GitHub and find some related projects. Listed below is some related work I know or find.

    • Yumi: a Windows GUI multiboot USB builder, I need a similar tool that runs on GNU/Linux, so I created this project
    • aguslr/multibootusb: provides grub.cfg files for many CD images, I used some of the kernel command line of distros in this project, but some grub.cfg files use features provided by GRUB and thus not portable for loaders like syslinux
    • Ventoy: a new multiboot USB project that supports making a live USB with most of the CD images. It has its own boot loader so doesn’t rely on GRUB or syslinux config files.
    • MultiBootLiveUSB
    • Multiboot USB drive – ArchWiki
    • cbodden/multiboot
    • mbusb/multibootusb

    Visit original content creator repository
    https://github.com/mytbk/liveusb-builder

  • pixi-typescript-boilerplate

    Pixi.js TypeScript Boilerplate

    A beginner-friendly template for building interactive graphics and games using Pixi.js with TypeScript and Webpack. This boilerplate simplifies the setup process, allowing developers to quickly start creating engaging web experiences.

    pixi.js logo

    Netlify Status

    Recent update ( 12.04.2025 )

    • 🆕 Updated to Pixi v8: The latest version of Pixi.js brings significant performance improvements, WebGPU support, and enhanced rendering capabilities

    Recent update ( 25.12.2023 )

    • 🆕 Updated to Pixi v7: The latest version of Pixi.js brings enhanced features and performance improvements

    • 🔧 Stability Overhaul: Moved from swc to ts-loader for improved stability and compatibility

    • Revised and Updated Dependencies: All package dependencies have been reviewed and updated to their latest versions for optimal performance and security.

    Features

    • 🔰 – Beginner-friendly setup and structure.
    • 🚀 – Optimized build times.
    • 🛠 – Full TypeScript support for robust type-checking.
    • ✈️ – Live reload for efficient development workflow.
    • 📝 – Consistent code style using Prettier and Eslint

    Usage

    Click on the green button “Use this template” on top of the repo or

    Simply copy paste this and start coding

    git clone --depth=1 --branch=master https://github.com/yordan-kanchelov/pixi-typescript-boilerplate

    rm -rf ./pixi-typescript-boilerplate/.git

    Commands

    • npm run build – starts build procedure
    • npm run start – start watching for files and open’s server on localhost:8080
    • npm run lint – generate code coverage report

    For vscode users – ctrl ( or ⌘ ) + shift + b will run package.json’s dev script ( it is set as default vscode task )

    Visit original content creator repository https://github.com/yordan-kanchelov/pixi-typescript-boilerplate
  • ELWaterFallLayout

    ELWaterFallLayout

    CI Status Version License Platform

    Example

    To run the example project, clone the repo, and run pod install from the Example directory first.

    Requirements

    Installation

    ELWaterFallLayout is available through CocoaPods. To install

    it, simply add the following line to your Podfile:

    pod "ELWaterFallLayout"

    Usage

    import ELWaterFallLayout
    
    lazy var flowLayout : ELWaterFlowLayout = ELWaterFlowLayout()
    flowLayout.scrollDirection = .horizontal //.vertical
    collectionView = UICollectionView(frame: CGRect(origin: CGPoint(x: 0, y: 0), size: CGSize(width: self.view.frame.size.width, height: self.view.frame.size.height - 200)) , collectionViewLayout:flowLayout)
    collectionView.backgroundColor = UIColor.white
    collectionView.delegate = self
    collectionView.dataSource = self
    self.flowLayout.delegate = self
    flowLayout.lineCount = 10//十列
    flowLayout.vItemSpace = 10//垂直间距10
    flowLayout.hItemSpace = 10//水平间距10
    flowLayout.edge = UIEdgeInsets.zero
    collectionView.register(TestCollectionViewCell.self, forCellWithReuseIdentifier: "cell")
    self.view.addSubview(collectionView)

    delegate protocol

    func el_flowLayout(_ flowLayout: ELWaterFlowLayout, heightForRowAt index: Int) -> CGFloat {
    //do something for the cell height
    return height
    }

    Result

    image

    Author

    jinqiucheng1006@live.cn

    License

    ELWaterFallLayout is available under the MIT license. See the LICENSE file for more info.

    Visit original content creator repository https://github.com/NicolasKim/ELWaterFallLayout
  • Houdini_Pipeline

    Houdini_Pipeline

    Multi OS Houdini Pipeline

    Introduction

    I was looking for a nice and easy way to setup my environment variables to run houdini on Mac and Linux.
    The idea is to have one launcher which detects your current OS and set the different environment variables.
    e.g. i use redshift on linux but not on mac os and some cache drive are only avaiable on linux, on mac i need to deactivate the third mouse button….
    This pre-defined setup will clone or update all necessary repositories from Github like:
    Gamedevelopertools, batch_textures_convert, MOPs, qLib, Lynx.

    It comes with some custom hda’s and my own desktop configuration for mac and linux. It will also setup all the typical folders.

    Installation for OS X and Linux:

    1. clone or download this repository to your server
    2. edit the Houdini_Launcher.sh and change the path from line 8 to your installation directory e.g.” export HOUDINI_PIPELINE=”yourpath/Houdini_Pipeline
    3. copy the edited Houdini_Launcher.sh to all of your Project folder where you want to start Houdini.
    4. if you like to run it without commandline, rename the launcher from Houdini_Launcher.sh to Houdini_Launcher.command which makes the file executable with a double click.

    Installation for Windows:

    TBA

    ToDo:

    -support for windows and our internal pipeline stucture.

    -better implementation for the jump.pref

    -setup project launcher

    Visit original content creator repository
    https://github.com/jopa79/Houdini_Pipeline

  • pick-n-mix

    pick-n-mix

    a set of tools, untils and polyfulls for writing declarative javascript apps

    errors

    A extension mechanism for JavaScript errors

    The errors.registry functions registers custom Error constructors

    1 registry should be passed a String or Array of strings. Representing the names of the errors you want generated.

    2 The generated Errors has a signature if

    • message – String. The description of the problem
    • args – mix. Any arguments that were used
    • rootCause – Error. A lower level error are is being wrapped

    3 The new Error Object will have some more attributes

    • type – String. The name of this type of Error
    • fileName – String. The file name – where this error was created
    • lineNumber – Number. The line number – where this error was created
    • columnNumber – Number. The column number – where this error was created
    • functionName – String. The function name – where this error was created
    • createdAt – Number. The time the error was create based on hosts time settings.
    • rootCause – Error. Error that trigger this error. undefined if not set
    • args – mix. Any arguments that were used. undefined if not set
    • processId – Number. The Node process ID if create on a server. undefined if created in brower
    • userAgent – String. The user agent. undefined if created in Node
      • This can be set on Node by using err.setUserAgent(req.headers['user-agent'])

    Example:

    ES6 modules

    During your app startup

    import registry from 'pick-n-mix/errors'
    
    registry("BadInput");

    Any where you wish to use it

    import { BadInputError } from 'pick-n-mix/errors'
    //...
    if( ! input){
      throw new BadInputError("missing input",input)
    }
    //...

    AMD / Node modules

    During your startup

    var registry = require('pick-n-mix/errors').registry
    
    registry("Authorization");

    Any where you wish to use it

    var errors = require('pick-n-mix/errors')
    var AuthorizationError = errors.AuthorizationError
    //...
    if( ! ok){
      throw new AuthorizationError("Bad password",user)
    }
    //...

    🎉 Pro Tip: You can pass a descriptive string to registry to indicate error subtype

    registry(['Range>InvalidArgument','Internal']);
    
    var invalidErr = new InvalidArgumentError("...")
    
    invalidErr instanceof InvalidArgumentError // true
    invalidErr instanceof RangeError           // true
    invalidErr instanceof Error                // true
    
    var internalErr = new InternalError("...")
    
    internalErr instanceof InternalError // true
    internalErr instanceof RangeError    // false
    internalErr instanceof Error         // true

    utils

    deepRequire

    deepRequire will require all sub-files in a folder as a nasted Object.

    You must supply the path to the folder
    deepRequire(dirname)
    Your can also pass an Array of file extensions. Default:["js"]
    deepRequire(dirname,exts)

    Example:

    tools/
     ├─ index.js
     ├─rest/
     │   ├─ get.js
     │   └─ post.js
     └─ list/
         └─ points.js
    

    In tools.index.js

    // index.js start
    const deepRequire = require('pick-n-mix/utils/deepRequire')
    module.exports = deepRequire(__dirname);
    // index.js end

    In you service code

    const tools = require('./tools')
    
    tools.rest.get()

    promisify

    promisify takes an Object with Async functions using callback functions and loops of the first level attributes wrapping them in a Promise

    You must supply the object holding the Async functions. It will then wrap all attributes

    promisify(obj)

    Your can also pass an Array of attributes not to wrap.

    promisify(obj,["skip"])

    Example:

    Setup you worker object with two function attributes “get_pic” and “name

    const user = {
      get_pic:function(next){
        $.ajax({
          url: "/user/pic/meta",
          error: function(xhr,status,error){
            next(error)
          },
          success: function(result){
            next(null,result)
          }
        });
      },
      name: function(){ return "Bob" }
    }

    Wrap the worker but skip the “name” function

    const promisify = require('pick-n-mix/utils/promisify')
    const userP = promisify(user,["name"]);

    Use your newly wrapped worker

    userP.get_pic().then( function(result){
      console.log(result)
    }).catch( function(err){
      console.error(err)
    })
    
    console.log(userP.name()) // "bob"

    graphql Scheam Builder

    Overview

    Each custom graphql type will have its own file.

    The file looks like

    module.exports = {
      description:"Error info",
      model:`{
        type:String!, // type of error
        message:String!, // 'error message'
        args:String!,//arguments
        trace:String!// 'stack trace'
      }`
    }

    This will be outputted

     # Error info
     #* **type** - type of error,
     #* **message** - 'error message',
     #* **args** - arguments,
     #* **trace** - 'stack trace'
     type Error{
         type:String,
          message:String,
          args:String,
          trace:String
         }
    

    🛈 Things to know:

    • Each type will also have a Input version generated for convenience.

     # Error info
     #* **type** - type of error,
     #* **message** - 'error message',
     #* **args** - arguments,
     #* **trace** - 'stack trace'
     input InputError{
         type:String,
          message:String,
          args:String,
          trace:String
         }
    

    How to use

    Scheam Builder is designed to be use with deepRequire to pull in your types.

    An Example schemas:

    sample/
     ├─ index.js
     ├─ Error.js
     ├─ partys.js
     └─ accounts/
         └─ user/
             ├─ index.js
             └─ item.js
    

    Example Source

    You will need to specify the “Query” and “Mutation” strings

    const Query = `
      # A GraphQL API for my App
       type Query {
         readUser(id:String):user,
         config:Config,
       }`
    
    const Mutation = `
       type Mutation {
         logError(type:String!, message:String!,args:String!,trace:String!):Error
       }
    `
    

    Query and Mutation Api function will map to the same object

    var root = {
    // Query
    readUser: (args)=> db.getUser({_id:args.id}),
    config: () => fs.readFileAsync(__dirname + "/config.json"),
    
    // Mutation
    logError: (args)=>{
      const type      = args.type;
      const message   = args.message;
      const errorArgs = args.args;
      const trace     = args.trace;
    
      return db.saveError(message,{type,errorArgs},trace)
               .then( x => args ) // return the error back to use
      },
    }
    
    

    Using the above code snippets

    const deepRequire = require('pick-n-mix/utils/deepRequire');
    const schemas = deepRequire("./My_schemas_dir");
    
    const schemaQL    = require("pick-n-mix/schemaQL");
    const schemaTypes = schemaQL(schemas);
    
    const buildSchema = require('graphql').buildSchema;
    const schema = buildSchema(schemaTypes
                                + " " + Query  
                                + " " +  Mutation)
    
    // ================== Express Server
    // =================================
    
    const graphqlHTTP = require('express-graphql');
    const express     = require('express');
    
    const app = express();
    
    // ======================== Graph QL
    // =================================
    
      app.use('/graphql', graphqlHTTP({
        schema: schema,    rootValue: root,    graphiql: true,
      }));

    Visit original content creator repository
    https://github.com/codemeasandwich/pick-n-mix

  • wd2

    Wrapped d2

    A wrapper over d2 which allows to use layout, theme, dark-theme, pad,
    sketch and port attributes from d2 file. All arguments will be passed to the
    d2 cli, but these additional configs overwrite cli arguments with the same name.

    Install

    Nix Flake

    This repo is also packaged via Nix flakes, the package is available through the
    default flake output github:pleshevskiy/wd2 with the path bin/wd2.

    You can enable flakes support in your nix configuration, and then run nix
    profile install github:pleshevskiy/wd2 to get wd2 installed. You can also
    use this repository as a flake input and add its output to your own
    flake-managed systemwide or home configuration.

    Other

    Copy wd2 script to /usr/local/bin folder.

    Usage

    Create a d2 file with additional configs at the top.

    # layout: elk
    # theme: 101
    # pad: 5
    
    x -> y -> z

    Then run the wd2 script

    wd2 -w path/to/your/file.d2

    You can also use inline style to configure d2

    # layout: elk; theme: 101; pad: 5
    
    x -> y -> z

    Limitation

    You have to restart the watch server when you change the layout, theme,
    pad and other attributes in a specified d2 file

    Visit original content creator repository
    https://github.com/pleshevskiy/wd2