Skip to content

Instantly share code, notes, and snippets.

View dohooo's full-sized avatar
🎯
Focusing

Caspian Zhao dohooo

🎯
Focusing
View GitHub Profile
function calcHours(ranges) {
const timeRanges = ranges.split(',').map(range => range.trim().split('-'));
let totalHours = 0;
timeRanges.forEach(range => {
const [start, end] = range.map(time => {
const [hour, minute] = time.split(':').map(Number);
return new Date(2000, 0, 1, hour, minute);
});
const targetLang = "Chinese"
const content = `
You are a Markdown translation expert. During the translation process, you need to pay special attention to maintaining the integrity of all Markdown syntax and tags, and not changing the function of HTML tags, to ensure that the translated content does not affect the rendering of any syntax or tags. Please follow the following rules to translate:
1. Identify and translate text content: Only identify and translate plain text content in Markdown, including text in headings, paragraphs, and list items.
2. Retain tags and attributes: When encountering HTML tags (such as <img>, <video>, <a>, etc.), please only translate the user-visible text in the tags (such as the text in the alt attribute), and retain all tags, attribute names and link addresses unchanged.
3. Special syntax processing: For Markdown-specific syntax (such as link, image tag ![alt text](link)), only translate the descriptive text part (such as alt text) without changing the link or syntax structu
const images = [
'https://ipfs.xlog.app/ipfs/bafkreib2uqok2rtc6rufnt4icqexi5fi3feqty3t2ejbcy4folb5iikjqm',
'https://ipfs.xlog.app/ipfs/bafkreicviikvuogo4bfmgjwi7trtsgzd24cohee6wkaqr7c6hqgkz5pexi',
'https://ipfs.xlog.app/ipfs/bafkreia4vkm6huitzkc4dpvhm54madub4752wnv2tqdelulmawgohc7ndq',
'https://ipfs.xlog.app/ipfs/bafkreic223ab6snnkcms4wepmwfa5m4ged2gresrgajyrqykbygyqikxiy',
'https://ipfs.xlog.app/ipfs/bafkreihrcscwhxl3zaswj4pffmoq6d23iqebviihqswzwree7hk5s7qmly',
'https://ipfs.xlog.app/ipfs/bafkreihuid4goghknzt5d2yjqlzatxapmxjrxdb54hjtcksphdndanqhyq',
'https://ipfs.xlog.app/ipfs/bafkreicblcxjux32ofvi6sil3utix5g52yxfhxadds2otmy2mqzr7gqqui',
'https://ipfs.xlog.app/ipfs/bafkreihigfyb24qcbza3bigxbbmxq3izevzg5scy7dwybwtwzj4ubycuei'
import { useEffect, type FC } from "react";
import { Button, Dimensions, ScrollView, Text, View } from "react-native";
import type { SharedValue } from "react-native-reanimated";
import { Easing, Extrapolate, interpolate, useDerivedValue, useSharedValue, withDecay, withDelay, withRepeat, withTiming } from "react-native-reanimated";
import { SafeAreaView } from "react-native-safe-area-context";
import { Blur, Canvas, DisplacementMap, Fill, FractalNoise, Group, LinearGradient, Rect, RoundedRect, Shadow, Turbulence, Vertices, vec } from "@shopify/react-native-skia";
const { width } = Dimensions.get("window");
@dohooo
dohooo / opentemp.sh
Last active April 5, 2023 10:01
Open temp file.
# This opentemp function is designed to help developers quickly create and switch to a new temporary branch for debugging and development purposes, without interfering with the existing files or branches. It automates the process of navigating to the ~/code/temp/ directory, checking for uncommitted changes, committing them if necessary, and creating a new branch with a user-defined or timestamp-based name.
# Here's a brief overview of how to use the opentemp function:
# Add the opentemp function to your ~/.zshrc file and save it. This ensures that the function is loaded every time you start a new terminal session.
# Run source ~/.zshrc to apply the new configuration immediately without restarting the terminal.
# To create a new temporary branch for debugging or development, simply run the opentemp command followed by an optional task name. For example:
# opentemp (without a task name) will create a new branch with a timestamp-based name, such as "temp-debug-20230405-143000".
# opentemp my-feature (with a ta
@dohooo
dohooo / gist:fc3789310802b1f4b66e8b110ad2ce78
Last active January 6, 2023 08:49
Development with docker.
We couldn’t find that file to show.
@dohooo
dohooo / snapshot.test.tsx
Last active December 29, 2022 04:09
Visual testing with vitest
import { join } from "path";
import type { Meta, StoryFn } from "@storybook/react";
import { composeStories } from "@storybook/react";
import { render } from "@testing-library/react";
import glob from "glob";
import { toMatchImageSnapshot } from "jest-image-snapshot";
import { chromium, type Browser, type Page } from "playwright";
import { afterAll, beforeAll, expect, describe, it, vi } from "vitest";
@dohooo
dohooo / setup.ts
Last active December 28, 2022 06:46
How to test file via visual testing.
import "@testing-library/jest-dom";
import { setProjectAnnotations } from "@storybook/react";
import "jest-styled-components";
import { decorators } from "../../.storybook/withEditor";
setProjectAnnotations({ decorators });
@dohooo
dohooo / download-tarball.js
Created December 28, 2022 06:40
Using `download` library download the tarball file.
download(TAR_URL, FILE_NAME, {
headers: {
Authorization: `Basic ${Buffer.from(`${USERNAME}:${PAT}`).toString('base64')}`,
},
}).then((r) => {
console.log(r)
})
@dohooo
dohooo / gitlab-ci-exit-process.yml
Last active December 28, 2022 06:41
Exit process when the target branch not matching in gitlab CI
check:
stage: verify
script:
- exit 1
rules:
- if: $CI_PIPELINE_SOURCE == "merge_request_event" && $CI_MERGE_REQUEST_SOURCE_BRANCH_NAME != "develop" && $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == $CI_DEFAULT_BRANCH