コンテキスト: 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: '/'}) | |
| * } | |
| * | |
| */ |