절대경로 및 상대경로는 의사적으로만 표기하고, 정확하게 표기하지 않음
- 이미지가 public 폴더에 있는 경우
// 이미지 경로: public/og.jpeg
<img src={"/og.jpeg"} style={{ width: 300, height: 300 }} />
- 이미지가 src/images 폴더에 있는 경우
const obj = [ | |
{ | |
name:'48홍길동', | |
age:'23' | |
}, | |
{ | |
name:'Kim나나', | |
age:'18' | |
}, | |
{ |
private void setClipboard(Context context, String text) { | |
if(android.os.Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.HONEYCOMB) { | |
android.text.ClipboardManager clipboard = (android.text.ClipboardManager) context.getSystemService(Context.CLIPBOARD_SERVICE); | |
clipboard.setText(text); | |
} else { | |
android.content.ClipboardManager clipboard = (android.content.ClipboardManager) context.getSystemService(Context.CLIPBOARD_SERVICE); | |
android.content.ClipData clip = android.content.ClipData.newPlainText("Copied Text", text); | |
clipboard.setPrimaryClip(clip); | |
} | |
} |
// 네이버 페이 사용금액 계산기 | |
// 1. https://order.pay.naver.com/home 접속 | |
// 2. 원하는 탭(쇼핑/콘텐츠) 들어가서, 모든 결제항목 더보기로 불러오기 | |
// 3. 콘솔창 오픈 후 아래 코드 실행 | |
const findElem = () => document.getElementsByClassName('button_viewmore')[0]; | |
async function getAll() { | |
return new Promise(resolve => { | |
const intv = setInterval(() => { | |
const elem = findElem(); |
/** | |
* Usage | |
* const log = Logger.log("LogTitle"); | |
* const warn = Logger.warn("WarnTitle"); | |
* | |
* log("some test log") | |
*/ | |
const LogBase = function(prefix, backgroundColor = '#0085ff', textColor = '#ffffff') { | |
this.prefix = prefix; | |
this.style = `background: ${backgroundColor}; color: ${textColor}; padding:5px 8px 5px 8px; margin-right:4px; border-radius:10px;`; |
// Following an answer I posted to my question here: | |
// http://stackoverflow.com/questions/21856892/node-crypto-aes256-cbc-0x0-padding-example/21858749#21858749 | |
//I'm expecting a utf8 encoded string | |
function customPadding(str, blockSize, padder, format) { | |
str = new Buffer(str,"utf8").toString(format); | |
//1 char = 8bytes | |
var bitLength = str.length*8; |
절대경로 및 상대경로는 의사적으로만 표기하고, 정확하게 표기하지 않음
// 이미지 경로: public/og.jpeg
<img src={"/og.jpeg"} style={{ width: 300, height: 300 }} />
const toWav = require('audiobuffer-to-wav') | |
const audioContext = new (window.AudioContext || window.webkitAudioContext)() | |
const fileReader = new FileReader() | |
function download(blob){ | |
const url = window.URL.createObjectURL(blob) | |
const anchor = document.createElement('a') | |
anchor.href = url | |
anchor.download = 'audio.wav' | |
anchor.click() |
this._panResponder = PanResponder.create({ | |
// ----------- NEGOTIATION: | |
// A view can become the touch responder by implementing the correct negotiation methods. | |
// Should child views be prevented from becoming responder on first touch? | |
onStartShouldSetPanResponderCapture: (evt, gestureState) => () => { | |
console.info('onStartShouldSetPanResponderCapture'); | |
return true; | |
}, |
interface RenderNode<T extends any[] = any[]> { | |
(...args: T): React.ReactNode; | |
} | |
function iife(fn: RenderNode) { | |
return fn(); | |
} | |
function RenderListFlat<T>({ data, renderItem }: { data: T[]; renderItem: RenderNode<[item: T, index: number]> }) { | |
return <View>{data.map(renderItem)}</View>; | |
} |
import Admob from '@invertase/react-native-google-ads' | |
const INSTALLED_APP_VERSION = '1.0.0'; | |
function checkSemver(v1, v2): boolean { | |
// ... v1 <= v2 | |
return true; | |
} | |
function isValidVersion(start: string, end?: string) { |