コンテキスト: https://togetter.com/li/1331865
グーグルジャパンではなくてUSの本社での採用の話。私が受けたのはSoftware EngineerではなくてDeveloper Advocate。Engineering組織の下についているのでコーディング面接有り。ただし評価項目がSWEとは異なる。
コンテキスト: https://togetter.com/li/1331865
グーグルジャパンではなくてUSの本社での採用の話。私が受けたのはSoftware EngineerではなくてDeveloper Advocate。Engineering組織の下についているのでコーディング面接有り。ただし評価項目がSWEとは異なる。
I'm on my way back to New York from Berlin, trying to not sleep on flight so I can beat jet lag. Here are some questions I answered to stay awake.
I'm great. I just survived JSConfEU weekend and gave one meetup talk in Berlin. On my way back home to New York City.
machine: iPad Pro 9.7 inch with matte screen protector
stylus: apple pencil
app: "Paper" by @FiftyThree (I use diagram tool almost exclusively)
<!-- This, screen reader reads the chinese character too like "chinese character ___, kan, chinese character___, ji" --> | |
<ruby> | |
漢<rp>(</rp><rt>Kan</rt><rp>)</rp> | |
字<rp>(</rp><rt>ji</rt><rp>)</rp> | |
</ruby> | |
<!-- This, just reads "kan ji" --> | |
<ruby> | |
<span aria-hidden="true">漢</span> <rp>(</rp><rt>Kan</rt><rp>)</rp> | |
<span aria-hidden="true">字</span> <rp>(</rp><rt>ji</rt><rp>)</rp> |
var sbn = {} | |
sbn.VERSION = '0.0.1' | |
sbn.lexer = lexer | |
sbn.parser = parser | |
sbn.transformer = transformer | |
sbn.generator = generator | |
sbn.compile = function (code) { | |
return this.generator(this.transformer(this.parser(this.lexer(code)))) | |
} |
function generator (svg_ast) { | |
// create attributes string out of attr object | |
// { "width": 100, "height": 100 } becomes 'width="100" height="100"' | |
function createAttrString (attr) { | |
return Object.keys(attr).map(function (key){ | |
return key + '="' + attr[key] + '"' | |
}).join(' ') | |
} |
function transformer (ast) { | |
var svg_ast = { | |
tag : 'svg', | |
attr: { | |
width: 100, height: 100, viewBox: '0 0 100 100', | |
xmlns: 'http://www.w3.org/2000/svg', version: '1.1' | |
}, | |
body:[] | |
} | |
function parser (tokens) { | |
var AST = { | |
type: 'Drawing', | |
body: [] | |
} | |
// extract a token at a time as current_token. Loop until we are out of tokens. | |
while (tokens.length > 0){ | |
var current_token = tokens.shift() | |
// Since number token does not do anything by it self, we only analyze syntax when we find a word. |
function lexer (code) { | |
return code.split(/\s+/) | |
.filter(function (t) { return t.length > 0 }) | |
.map(function (t) { | |
return isNaN(t) | |
? {type: 'word', value: t} | |
: {type: 'number', value: t} | |
}) | |
} |
Paper 100 | |
Pen 0 | |
Line 19 91 0 70 | |
Line 0 70 39 91 | |
Line 19 91 39 91 | |
Line 39 91 73 68 | |
Line 73 68 73 50 | |
Line 73 50 46 50 | |
Line 46 50 25 83 |
/* | |
* CHALLANGE: | |
* Cache `index.html` file using service worker. | |
* | |
* This bit of code is included in <script> tag of index.html | |
* if (navigator.serviceWorker) { | |
* navigator.serviceWorker.register('serviceworker.js', {scope: '/'}) | |
* } | |
* | |
*/ |