From 20922c8a7fce1da5e09b98c461f1fad67c832a5b Mon Sep 17 00:00:00 2001 From: Frederic Hemberger Date: Sat, 14 Jul 2018 10:12:06 +0200 Subject: [PATCH] Add JS Interactive 2018 banner (#1732) * Fix logo link * Fix image link in blog post * Add JS Interactive 2018 banner * Fix http -> https --- layouts/css/_base.styl | 7 +++++-- layouts/index.hbs | 6 ++++++ layouts/partials/header.hbs | 2 +- .../en/blog/uncategorized/profiling-node-js.md | 4 ++-- static/images/jsinteractive-2018-banner.png | Bin 0 -> 14626 bytes 5 files changed, 14 insertions(+), 5 deletions(-) create mode 100644 static/images/jsinteractive-2018-banner.png diff --git a/layouts/css/_base.styl b/layouts/css/_base.styl index 9c01c90cfd06..2b0d46b42ed1 100644 --- a/layouts/css/_base.styl +++ b/layouts/css/_base.styl @@ -34,8 +34,11 @@ a:hover background-color transparent color #fff -a.imagelink:hover - background-color transparent +a.imagelink + display inline-block + + &:hover + background-color transparent strong, b diff --git a/layouts/index.hbs b/layouts/index.hbs index cda223ce0d3a..f4c270c5863d 100644 --- a/layouts/index.hbs +++ b/layouts/index.hbs @@ -12,6 +12,12 @@ {{{ contents }}} +

+ + JS Interactive on October 10-12, 2018 in Vancouver, Canada + +

+ {{#if project.banner.visible}}

{{#if project.banner.text}}{{{ project.banner.text }}}{{else}}{{{ labels.banner }}}{{/if}} diff --git a/layouts/partials/header.hbs b/layouts/partials/header.hbs index 097ff3157de9..d29e02b5ddb3 100644 --- a/layouts/partials/header.hbs +++ b/layouts/partials/header.hbs @@ -1,7 +1,7 @@

- diff --git a/locale/en/blog/uncategorized/profiling-node-js.md b/locale/en/blog/uncategorized/profiling-node-js.md index c03b0b324827..f23901f10fcd 100644 --- a/locale/en/blog/uncategorized/profiling-node-js.md +++ b/locale/en/blog/uncategorized/profiling-node-js.md @@ -8,7 +8,7 @@ slug: profiling-node-js layout: blog-post.hbs --- -It's incredibly easy to visualize where your Node program spends its time using DTrace and node-stackvis (a Node port of Brendan Gregg's FlameGraph tool): +It's incredibly easy to visualize where your Node program spends its time using DTrace and node-stackvis (a Node port of Brendan Gregg's FlameGraph tool):
  1. Run your Node.js program as usual.
  2. @@ -27,7 +27,7 @@ It's incredibly easy to visualize where your Node program spends its time using You'll be looking at something like this: -'Hello World' HTTP server flame graph +'Hello World' HTTP server flame graph This is a visualization of all of the profiled call stacks. This example is from the "hello world" HTTP server on the Node.js home page under load. Start at the bottom, where you have "main", which is present in most Node stacks because Node spends most on-CPU time in the main thread. Above each row, you have the functions called by the frame beneath it. As you move up, you'll see actual JavaScript function names. The boxes in each row are not in chronological order, but their width indicates how much time was spent there. When you hover over each box, you can see exactly what percentage of time is spent in each function. This lets you see at a glance where your program spends its time. diff --git a/static/images/jsinteractive-2018-banner.png b/static/images/jsinteractive-2018-banner.png new file mode 100644 index 0000000000000000000000000000000000000000..d75a99f61e8bfbf7fb10c7cac5f23f4a1ce50321 GIT binary patch literal 14626 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