Skip to content

Instantly share code, notes, and snippets.

@relyky
relyky / SecureStringExtension.cs
Last active February 25, 2021 01:42
C#, SecureString as String, Heap Inspection, Marshal
using System;
using System.Linq;
using System.Runtime.InteropServices;
using System.Security;
namespace ConsoleApp1
{
class Program
{
static void Main(string[] args)
@relyky
relyky / matchMedia.print.js
Created December 29, 2020 08:36
JavaScript, css @media matchMedia, Detecting Print Requests with JavaScript
//## check in printing or not
let printing = false
const mediaQueryList = window.matchMedia('print');
mediaQueryList.addListener(function (mql) {
if (mql.matches) {
console.log('onbeforeprint equivalent');
printing = true;
} else {
console.log('onafterprint equivalent');
@relyky
relyky / useClientRect.js
Last active December 28, 2020 15:30
JavaScript, useClientRect, useCallBack, getBoundingClientRect, 我該如何測量一個 DOM node?
/**
* ref→[我該如何測量一個 DOM node](https://zh-hant.reactjs.org/docs/hooks-faq.html#how-can-i-measure-a-dom-node)
*/
/** 測量一個 DOM node
* 參考:[我該如何測量一個 DOM node](https://zh-hant.reactjs.org/docs/hooks-faq.html#how-can-i-measure-a-dom-node)
*/
export function useClientRect(): [DOMRect, (node: any) => void] {
const [rect, setRect] = useState<DOMRect>()
const [f_resize, setResizeFlag] = useState(true)
@relyky
relyky / useStyles.pre.tsx
Last active December 23, 2020 07:18
TypeScript, makeStyles/useStyles React.FC sample, function component, with Material UI
import React from 'react'
import { makeStyles} from '@material-ui/core'
const usePreStyles = makeStyles(({ palette }) => ({
root: {
whiteSpace: 'break-spaces',
'&:hover': {
backgroundColor: palette.grey[100]
}
}
@relyky
relyky / BR.xsHide.sample.tsx
Last active December 16, 2020 11:15
JavaScript, BR xsHide, with Material-UI
/**
* 範例: \<BR xsHide />
*/
import React from 'react'
import clsx from 'clsx'
import { withStyles } from '@material-ui/core/styles'
export const BR = withStyles(({ breakpoints }) => ({
xsHide: {
[breakpoints.down('xs')]: {
@relyky
relyky / ScrollTopFab.tsx
Last active December 9, 2020 16:47
React, scroll to top, FAB,useScrollTrigger, Material-UI
//========================================================
/**
* Scroll Top FAB
*
* 範例:
* <ScrollTopFab />
*/
export function ScrollTopFab() {
const classes = useScrollTopFabStyles()
const trigger = useScrollTrigger({ threshold: 100 });
const useStyles = makeStyles(({ palette, zIndex }) => ({
container: {
zIndex: `${zIndex.modal}!important` as any /* <-- 轉換成 any 弱型別 */
},
}))
@relyky
relyky / AppFooter.withStyles.jsx
Last active December 9, 2020 10:59
TypeScript, withStyles sample, React.FC, function component, custom IconButton with Material UI
///
/// Material-UI withStyles 範例
///
const AppFooter = withStyles({
root: {
flexGrow: 1,
textAlign: 'center'
}
})((props: any) => {
const { classes } = props
@relyky
relyky / Anti_Path_Traversal.cs
Last active November 9, 2021 01:17
AntiXSS, xss encode, Sanitizer
/// <summary>
/// Path Traversal, 目錄瀏覽漏洞檢查。
/// </summary>
/// <param name="fileName">檔案名稱</param>
public static string AntiPathTraversal(string fileName)
{
/// 檢查是否往父層或子層目錄瀏灠。 ".." 或 "/xxx/yyy"
if (Regex.IsMatch(fileName, @"(\.\.)|(\/.+\/)|(\\.+\\)"))
throw new AppRCodeException(RCodes.InvalidData, "檔案名稱不合規定。");
@relyky
relyky / MySwal.apply.js
Last active November 21, 2020 08:30
JavaScript, 客製化 sweetalert2 with React, withReactContent, sweetalert2-react-content, MySwal
///
/// MySwal: 應用
///
import React, { useState } from 'react'
import * as MySwal from 'Widgets/MySwal'
export default function AppForm({ formProfile }) {
const [result, setResult] = useState(null)
return (