Skip to content

Instantly share code, notes, and snippets.

View elct9620's full-sized avatar
💦
Level up!!!

蒼時弦や elct9620

💦
Level up!!!
View GitHub Profile
@elct9620
elct9620 / README.md
Created February 11, 2024 14:35
Hugo to Embedding Example

Hugo to Embedding Example

Convert Hugo articles to Embendding for Cloudflare Vectorize Store

Add JSON output to Hugo

The single.json is a example to add JSON outptu for your theme.

Setup a new config ai.toml to extend output

@elct9620
elct9620 / demo.rb
Created December 21, 2022 14:09
Use Ruby Enumerator to create infinite API loader
paginator = InfinitePaginator.new(
'https://jsonplaceholder.typicode.com/users/%<page>d'
)
pp paginator.take(12)
# =>
# [{"id"=>1, "name"=>"Leanne Graham"},
# {"id"=>2, "name"=>"Ervin Howell"},
# {"id"=>3, "name"=>"Clementine Bauch"},
# {"id"=>4, "name"=>"Patricia Lebsack"},
@elct9620
elct9620 / README.md
Last active October 20, 2022 09:55
The Data Context Interaction (DCI) in Ruby

The Data Context Interaction in Ruby

Concept

Under Domain-Driven Design, we are trying to "Model" the real world to the virtual world. However, it cannot clearly describe the context/interaction with the domain.

Data

The raw data is a "number" or "string" and cannot explain the meaning in specifying the domain. Therefore we have to create a "value object" to assign the domain meaning and use "entity" to compose mapping a real-world object.

@elct9620
elct9620 / README.md
Last active January 12, 2024 05:35
Example of Domain-Driven Design in Rails

Example of Domain-Driven Design in Rails

Object

Name Layer Type Description
app/models/visitor_pass.rb Domain Aggregate Pass-related domain
app/services/tracker_service.rb Domain Domain Service Logic between door and visitor interaction
app/controllers/passes_controller.rb Application Use Case The user flow of "pass" a door
@elct9620
elct9620 / bootstrap.rb
Created July 23, 2022 09:00
Ruby's IoC with dry-container and dry-auto_inject
require 'dry-contaienr'
require 'dry-auto_inject'
# Singleton style container
class Container
extend Dry::Container::Mixin
namespace :repositories do
register(:games) { GameRepository.new }
register(:players) { PlayerRepository.new }
@elct9620
elct9620 / api_spec.rb
Created February 24, 2022 08:40
RSpec have_attributes example
# API
class FakeResponse < Struct.new(:status, :code)
def success?
code == 200
end
end
class FakeAPI
def call
FakeResponse.new('Success', 200)
@elct9620
elct9620 / middleware.rb
Created February 17, 2022 07:11
Use Ruby's SimpleDelegator to implement middleware
# frozen_string_literal: true
require 'delegate'
require 'json'
class Middleware < SimpleDelegator
end
class CacheMiddleware < Middleware
def initialize(object)
@elct9620
elct9620 / bad.rb
Created November 4, 2021 09:15
Ruby Block-based Refactor
class BadObject
def initialize
@internal = 'Coupling'
end
def perform
puts 'Start'
100.times do |i|
puts "Long Code ... #{i} #{@internal}"
end
@elct9620
elct9620 / method.c
Created August 14, 2021 12:43
RubyKaigi 2021 Takeout - mruby VM demo
#include <stdint.h>
#include <stdio.h>
#include <string.h>
static inline uint32_t
bin_to_uint32(const uint8_t *bin)
{
return (uint32_t)bin[0] << 24 |
(uint32_t)bin[1] << 16 |
(uint32_t)bin[2] << 8 |
@elct9620
elct9620 / add.c
Created August 14, 2021 09:12
RubyKaigi 2021 Takeout - mruby VM demo
#include <stdint.h>
#include <stdio.h>
static inline uint32_t
bin_to_uint32(const uint8_t *bin)
{
return (uint32_t)bin[0] << 24 |
(uint32_t)bin[1] << 16 |
(uint32_t)bin[2] << 8 |
(uint32_t)bin[3];