Skip to content

Instantly share code, notes, and snippets.

View DefectingCat's full-sized avatar
🎮
ELDEN RING

Sonetto DefectingCat

🎮
ELDEN RING
View GitHub Profile
@DefectingCat
DefectingCat / mod.rs
Created January 23, 2024 01:15
deserialize with custom function
fn de_str<'de, D>(deserializer: D) -> Result<i64, D::Error>
where
D: serde::de::Deserializer<'de>,
{
Ok(match Value::deserialize(deserializer)? {
Value::String(s) => s.parse().map_err(de::Error::custom)?,
Value::Number(num) => num.as_i64().ok_or(de::Error::custom("Invalide number"))?,
_ => return Err(de::Error::custom("wrong type")),
})
}
@DefectingCat
DefectingCat / mod.rs
Created January 22, 2024 01:31
implement model in rust
use crate::{
access_db,
api::{parse_booth_url, types::BoothExamples},
};
use anyhow::Result;
use sqlx::{Postgres, QueryBuilder};
pub struct BoothUrls(Vec<String>);
impl BoothUrls {
@DefectingCat
DefectingCat / sqlx_builder.rs
Last active January 24, 2024 01:18
sqlx query builder insert many
pub async fn record_post(urls: Vec<String>) -> Result<()> {
let pool = access_db().await;
let mut query_builder: QueryBuilder<Postgres> =
QueryBuilder::new("INSERT INTO post_record (url) ");
query_builder.push_values(urls, |mut b, url| {
b.push_bind(url);
});
let query = query_builder.build();
@DefectingCat
DefectingCat / sqlx_pool.rs
Last active January 24, 2024 01:18
Tokio once_cell global postgres sqlx rust
static DB: OnceCell<Pool<Postgres>> = OnceCell::const_new();
async fn access_db() -> &'static Pool<Postgres> {
let initer = || async {
let db_url = env::var("SPIO_DB").expect("db host url must be set");
let pool = PgPoolOptions::new()
.max_connections(20)
.acquire_timeout(Duration::from_secs(3))
.connect(&db_url)
.await;
match pool {
@DefectingCat
DefectingCat / zego.ts
Last active January 25, 2024 00:56
Zego message slice
import { AppThunk, RootState } from '@/store';
import { createSlice, PayloadAction } from '@reduxjs/toolkit';
import { notification } from 'antd';
import { ZegoUser } from 'zego-express-engine-webrtc/sdk/src/common/zego.entity';
import type { ZegoRoomStateChangedReason } from 'zego-express-engine-webrtm/sdk/code/zh/ZegoExpressEntity';
import { ZegoBroadcastMessageInfo } from 'zego-express-engine-webrtm/sdk/code/zh/ZegoExpressEntity';
/**
* 是否是房间类消息
*/
@DefectingCat
DefectingCat / cors.go
Created January 15, 2024 06:11
Go gin CORS middleware
package middlewares
import (
"github.com/gin-gonic/gin"
)
func CORSMiddleware() gin.HandlerFunc {
return func(c *gin.Context) {
c.Writer.Header().Set("Access-Control-Allow-Origin", "*")
c.Writer.Header().Set("Access-Control-Allow-Credentials", "true")
@DefectingCat
DefectingCat / Makefile
Last active January 17, 2024 03:32
Golang makefile example
NAME=exre
VERSION=0.0.1
.PHONY: build
## build: Compile the packages.
build:
@go build -buildvcs=false -o $(NAME)
.PHONY: run
## run: Build and Run in development mode.
@DefectingCat
DefectingCat / video.tsx
Created December 29, 2023 09:10
Create video stream from ArraryBuffer
useEffect(() => {
(async () => {
const result = await decrypt_from_url(VIDEO_PATH);
if (!ref.current) return;
const video = ref.current;
const source = new MediaSource();
video.src = URL.createObjectURL(source);
source.addEventListener("sourceopen", (e) => {
const target = e.target as MediaSource;
@DefectingCat
DefectingCat / package.json
Created December 26, 2023 03:45
Common package json scripts
{
"scripts": {
"pretty": "prettier --write \"./**/*.{js,jsx,ts,tsx,json,md,mdx,css}\" --ignore-unknown",
"pretty-check": "prettier \"./**/*.{js,jsx,ts,tsx,json,md,mdx,css}\" --ignore-unknown --check",
"prepare": "husky install"
}
}
@DefectingCat
DefectingCat / .prettierignore
Created December 26, 2023 03:44
Common prettier configuration
node_modules
out
.next
public
dist
build