a blog about nothing
Luther Vandross - Dance With My Father
Lyrics
Back when I was a child
Before life removed all the innocence
My father would lift me high
And dance with my mother and me and then
Spin me around till I fell asleep
Then up the stairs he would carry me
And I knew for sure I was loved
If I could get another chance
Another walk, another dance with him
I'd play a song that would never ever end
How I'd love, love, love to dance with my father again, ooh
When I and my mother would disagree
To get my way I would run from her to him
He'd make me laugh just to comfort me, yeah, yeah
Then finally make me do just what my momma said
Later that night when I was asleep
He left a dollar under my sheet
Never dreamed that he would be gone from me
If I could steal one final glance, one final step
One final dance with him
I'd play a song that would never ever end
'Cause I'd love, love, love to dance with my father again
Sometimes I'd listen outside her door
And I'd hear how my mother cried for him
I pray for her even more than me
I pray for her even more than me
I know I'm praying for much too much
But could you send back the only man she loved?
I know you don't do it usually
But dear Lord she's dying to dance with my father again
Every night I fall asleep and this is all I ever dream
Wheels and Engine Sound
Last year, we took Ayden to monster truck show. We didn’t know how loud these trucks can be. So we bought ear protection headphones for him. He was still feeling a little scared.
Later he came up with idea that sound of engine comes from the tires. He would keep telling me that monster trucks tires are loud or they made it louder after he put on his headphone.
…How to backup Kubernetes' Config
The easiest solution seems to be following script by Stackoverflow user, Timothy Perez
:
<pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-bash" data-lang="bash">#!/bin/bash
# NAMESPACED EXPORTS
for ns in $( kubectl get ns --no-headers | cut -d " " -f1 ) ; do
kubectl --namespace = " ${ ns} " get -o = json bindings,cm,ep,ev,limits,pvc,po,podtemplates,rc,quota,secrets,sa,svc,controllerrevisions,ds,deploy,rs,sts,localsubjectaccessreviews,hpa,cj,jobs,leases,ev,ds,deploy,ing,netpol,rs,pods,netpol,pdb,roles,rolebindings | \
jq '.items[] |
select(.type!="kubernetes.io/service-account-token") |
del(
.spec.clusterIP,
.metadata.uid,
.metadata.selfLink,
.metadata.resourceVersion,
.metadata.creationTimestamp,
.metadata.generation,
.status,
.spec.template.spec.securityContext,
.spec.template.spec.dnsPolicy,
.spec.template.spec.terminationGracePeriodSeconds,
.spec.template.spec.restartPolicy
)' >> "./ ${ ns} .json"
done
# NON-NAMESPACED EXPORTS
kubectl get -o = json cs,ns,no,pv,mutatingwebhookconfigurations,validatingwebhookconfigurations,crds,apiservices,tokenreviews,selfsubjectaccessreviews,selfsubjectrulesreviews,subjectaccessreviews,csr,psp,nodes,psp,clusterrolebindings,clusterroles,pc,sc,volumeattachments | \
jq '.items[] |
select(.type!="kubernetes.io/service-account-token") |
del(
.spec.clusterIP,
.metadata.uid,
.metadata.selfLink,
.metadata.resourceVersion,
.metadata.creationTimestamp,
.metadata.generation,
.status,
.spec.template.spec.securityContext,
.spec.template.spec.dnsPolicy,
.spec.template.spec.terminationGracePeriodSeconds,
.spec.template.spec.restartPolicy
)' >> "./cluster_non-namespaced_export.json"
Script copied here under CC BY-SA 4.0 license
…Crispy-Skinned Baked Chicken Drumsticks
Ingredients
- 8 (4 oz each) skin-on chicken drumsticks (about 2 lb. total weight)
- 2 tablespoons olive oil
- 1 teaspoon salt
- ½ teaspoon black pepper
- 1 teaspoon garlic powder
- 1 teaspoon onion powder
- 1 teaspoon smoked paprika
- 1/4 teaspoon chilli pepper
Instructions
- Preheat your oven to 400 degrees F. Line a rimmed baking sheet with parchment paper and arrange the drumsticks in a single layer on the parchment.
- Make the seasoning paste: In a medium bowl, use a fork or a spatula to mix the olive oil, salt, pepper, and spices.
- Using a pastry brush or your hands, coat the chicken pieces with the seasoning paste.
- Bake the drumsticks uncovered until their internal temperature reaches 165 degrees F, about 40 minutes.
- Baste the drumsticks with the pan juices using a clean pastry brush. Serve immediately.
LeetCode 605. Can Place Flowers
/**
* @param {number[]} flowerbed
* @param {number} n
* @return {boolean}
*/
var canPlaceFlowers = function (flowerbed , n ) {
for ( let i = 0 ; i < flowerbed .length ; i ++ ) {
if (flowerbed [i ] == 0
&& (i == 0 || flowerbed [i - 1 ] == 0 )
&& (i == flowerbed .length - 1 || flowerbed [i + 1 ] == 0 )) {
n --
flowerbed [i ] = 1
if (n < 1 )
return true
}
}
return n <= 0
};
LeetCode 1268. Search Suggestions System
/**
* @param {string[]} products
* @param {string} searchWord
* @return {string[][]}
*/
var suggestedProducts = function (products , searchWord ) {
products .sort ((a , b ) => {
if (a > b ) return 1
if (a < b ) return - 1
return 0
})
const r = []
for ( let i = 1 ; i <= searchWord .length ; i ++ ) {
const arr = products .filter ((s ) => s .startsWith (searchWord .substring ( 0 , i ))).slice ( 0 , 3 )
//console.log(searchWord.substring(0, i))
r .push (arr )
}
return r
};
LeetCode 253. Meeting Rooms II
Lack of built-in Priority Queues in JavaScript makes it a bit hard to do problems like this. I end looking at the solution:
/**
* @param {number[][]} intervals
* @return {number}
*/
var minMeetingRooms = function (intervals ) {
if (intervals .length < 1 ) return 0
const startTimes = []
const endTimes = []
for ( let i = 0 ; i < intervals .length ; i ++ ) {
startTimes [i ] = intervals [i ][ 0 ]
endTimes [i ] = intervals [i ][ 1 ]
}
startTimes .sort ((a , b ) => a - b )
endTimes .sort ((a , b ) => a - b )
let startPtr = 0
let endPtr = 0
let rooms = 0
for ( let i = 0 ; i < intervals .length ; i ++ ) {
if (startTimes [i ] >= endTimes [endPtr ]) {
endPtr ++
} else {
rooms ++
}
}
return rooms
};
LeetCode 937. Reorder Data in Log Files
/**
* @param {string[]} logs
* @return {string[]}
*/
var reorderLogFiles = function(logs) {
const sorted = []
const numLogs = []
const charLogs = []
for (let i = 0; i<logs.length; i++) {
const log = logs[i]
const tokenized = log.split(" ")
if (Number.isInteger(parseInt(tokenized[1]))) {
numLogs.push(log)
} else {
charLogs.push(log)
}
}
charLogs.sort(function (a, b) {
const stra = a.substr(a.indexOf(' ') + 1)
const strb = b.substr(b.indexOf(' ') + 1)
if (stra > strb) {
return 1
}
if (stra < strb) {
return -1
}
const ida = a.substr(0, a.indexOf(' '))
const idb = b.substr(0, b.indexOf(' '))
//console.log({ida})
if (ida > idb) {
return 1
}
if (ida < idb) {
return -1
}
return 0
})
return [...charLogs, ...numLogs]
};
LeetCode 49. Group Anagrams
/**
* @param {string[]} strs
* @return {string[][]}
*/
var groupAnagrams = function(strs) {
const map = []
for (let i = 0; i<strs.length; i++) {
const str = strs[i].split('').sort().join('')
if (!map[str]) map[str] = []
map[str].push(strs[i])
}
const ans = []
for (let k in map) {
ans.push(map[k])
}
return ans
};
LeetCode 71. Simplify Path
/**
* @param {string} path
* @return {string}
*/
var simplifyPath = function(path) {
const simple = [];
const splitPath = path.split("/").filter(x => x.length>0 && x !== '.')
for (let i = 0; i<splitPath.length; i++) {
if (splitPath[i] === '..') {
simple.pop()
} else {
simple.push(splitPath[i])
}
}
return `/${simple.join('/')}`
};