Skip to content

Instantly share code, notes, and snippets.

@icai
icai / Waves.js
Created February 26, 2019 03:50
Waves.js
(function () {
var pi = Math.PI;
var pi2 = 2 * Math.PI;
this.Waves = function (holder, options) {
var Waves = this;
Waves.options = extend(options || {}, {
resize: false,
@icai
icai / decode.js
Created March 20, 2019 09:40
decode Unicode to chinese
var decodeUnicode = function(str) {
str = str.replace(/\\u/gi, "%u");
return unescape(str);
}
@icai
icai / PHP:is_crawler
Created July 5, 2019 02:40 — forked from zhangguiqiang/PHP:is_crawler
PHP:is_crawler(判断是否是爬虫)
function isCrawler() {
if(ini_get('browscap')) {
$browser= get_browser(NULL, true);
if($browser['crawler']) {
return true;
}
} else if (isset($_SERVER['HTTP_USER_AGENT'])){
$agent= $_SERVER['HTTP_USER_AGENT'];
$crawlers= array(
"/Googlebot/",
Vm1wR1lWWXlTWGhXV0dST1ZsZG9WbGxVU2pSV2JGcHlWMjVrVldKSVFsaFdWelZMWWtkS1NWRnJXbGRTZWtZeldWUkdZV1JGT1ZWV2JGWk9WakpvYjFZeFdsWmxSMUpZVW10c1ZXSkdXbFJhVjNSaFZWWmtjbGt6YUZSTlZuQkhWREZXVjFSc1NrVlJWR3M5
@icai
icai / index.js
Created July 26, 2019 05:42
tvsourcemanager
var fs = require('fs');
var path = require('path');
var _ = require('lodash');
var LineByLineReader = require('line-by-line');
var fsExistsSync = function(filepath, options) {
options = options || {}
if (!filepath) return false
@icai
icai / japanese.json
Last active August 3, 2019 16:09
Tegaki zinnia japanese
{"0":[[[322,102],[218,158],[170,292],[198,524],[320,562],[444,476],[458,286],[314,104]]],"1":[[[322,90],[262,528]]],"2":[[[172,180],[220,124],[328,140],[364,264],[156,500],[414,512]]],"3":[[[200,124],[320,110],[362,230],[244,282],[318,294],[368,376],[266,480],[200,426]]],"4":[[[312,88],[106,332],[484,364]],[[338,120],[278,494]]],"5":[[[212,78],[128,328],[276,318],[340,450],[250,508],[148,480]],[[224,106],[396,132]]],"6":[[[434,104],[334,138],[204,330],[238,494],[382,460],[372,314],[232,320]]],"7":[[[166,128],[426,150],[350,234],[266,510]]],"8":[[[406,188],[302,108],[212,186],[224,264],[364,398],[384,500],[252,540],[178,436],[404,190]]],"9":[[[390,142],[256,70],[172,172],[182,240],[274,264],[390,164],[278,516]]],"あ":[[[108,116],[498,136]],[[294,20],[290,402],[364,504]],[[448,206],[298,460],[164,480],[106,408],[172,298],[364,278],[480,344],[496,448],[456,500]]],"い":[[[112,126],[86,426],[134,518],[188,486]],[[426,132],[462,342],[416,434]]],"う":[[[204,70],[374,90]],[[146,242],[334,210],[412,278],[396,422],[270,55
@icai
icai / useCopyClipboard.ts
Created August 6, 2019 06:19
react copy hooks useCopyClipboard
import { useState } from "react";
import copy from "@utils/copy";
export default function useCopyClipboard(
text: string
): [boolean, (v: boolean) => void] {
const [isCopied, setIsCopied] = useState(false);
return [
isCopied,
(setcopy = true) => {
@icai
icai / CKEditor.react.tsx
Created August 16, 2019 03:45
CKeditor with React SSR
import React from "react";
let ClassicEditor, CKEditor;
if(__CLIENT__) {
ClassicEditor = _ckeditor_ckeditor5BuildClassic;
CKEditor = _ckeditor_ckeditor5React;
}
class MyUploadAdapter {
loader: any;
@icai
icai / i18n-middleware.js
Created January 14, 2020 17:55
nuxt i18n middleware which don't need to format the nuxt-link url, hack
import LOCALES from '~/lang/locales'
const debug = require('debug')('auth:server:i18n:middleware')
const DEFAULT_LOCALE = 'en'
export default function (context) {
const { app, store, route, error, redirect, hotReload, from } = context;
// Check if middleware called from hot-reloading, ignore
@icai
icai / dictionary.js
Created April 21, 2021 16:59
carck dictionary
var iiiilIil = ["EsOoR8K4wpl0TMOcFcOlw5Y=", "PsK4Tw==", "CMOsXg==", "w4DCvjg0HsO3", "XAfClA==", "VjjCmAkKwobCpg==", "NVnCgl5EwpE=", "XgfCnnnDmDY=", "Vm0Fwoc=", "UsKRIj5kwrY=", "w5jDqBMcR8KAwodvwq1ew7Y=", "w60LN8ObF24tIA==", "w57Dh8OHZsK0w6bCjsKAwrQ=", "AsOELcOqwpouw6VLFEo6", "KMK/wqJBw4Y=", "OcKiRsKXw4YsTcOJMyc/wpcMwrY=", "U8KdIjBAwqzCjMOqw6bCpQc=", "EcOOFcOAwoM9", "w5jDqBMcZ8KAwodvwq1ew7Y=", "w5jCuTI4KMOswot1XGvDtA==", "YEYWMgduEcK5", "w5DCm8KpwqVUw4TCocOEwrbDgMOeQsO/TzIcfBtwDsK4w4HDsg==", "VMKCScKs", "fwMOw7YxJQ==", "Z1/DlT/DkBE3ZMOrHCtVwoHDu8OqL8Ki", "A8OFBcOgwosiw7ltEQ==", "w5rCsjY0G8Oq", "SsOGw77DsmF/bMKI", "w7bDksO8JhYpDk4zw5TCj0nClQ==", "w7B+Ti3Cig==", "wqDDgE/DriU=", "AMO9Q8Kdwo4=", "wqfDgcKhKUk5XQ==", "U8KdIjBgwqzCjMOqw6bCpQc=", "w6PCscKBwqzCoClo", "O8OOKsOBwoY=", "wrjDnhHCgA==", "w4UbFMKB", "BMO1UMKUwod0QMOBDQ==", "S2TCmgUC", "wqvDmgHCmyU=", "wqjDgcKo", "Q2oEwoB7", "dMK4XlHDkHM=", "w6F7TSk=", "wqXDhMOZBsOIwoQ=", "wqjCpsOiW8Kr", "w48aHMKdwqLCulk=", "w4rDq8OdUAw=", "wqrDjsOZEsOTwoDDuA==", "w7R8TC7CgQ=