Added mentors

This commit is contained in:
Alexander Nozik 2021-03-29 18:26:28 +03:00
parent 1b738f88c9
commit 1e537b74ab
19 changed files with 350 additions and 1765 deletions

View File

@ -5,6 +5,7 @@
"version": "0.2.0", "version": "0.2.0",
"dependencies": { "dependencies": {
"bootstrap": "4.6.0", "bootstrap": "4.6.0",
"breakpoints": "^0.0.0",
"gatsby": "3.1.1", "gatsby": "3.1.1",
"gatsby-awesome-pagination": "0.3.6", "gatsby-awesome-pagination": "0.3.6",
"gatsby-cli": "3.1.0", "gatsby-cli": "3.1.0",
@ -22,25 +23,23 @@
"gatsby-source-graphql": "3.1.0", "gatsby-source-graphql": "3.1.0",
"gatsby-transformer-remark": "3.1.0", "gatsby-transformer-remark": "3.1.0",
"gatsby-transformer-sharp": "3.1.0", "gatsby-transformer-sharp": "3.1.0",
"node-sass": "^5.0.0",
"gatsby-plugin-sass": "4.1.0",
"html-react-parser": "1.2.4", "html-react-parser": "1.2.4",
"imagemin-pngquant": "9.0.2", "imagemin-pngquant": "9.0.2",
"jquery": "3.6.0", "jquery": "3.6.0",
"jquery.scrollex": "^0.2.1",
"jquery.scrolly": "^0.0.1",
"katex": "0.13.0", "katex": "0.13.0",
"mini-css-extract-plugin": "1.3.9", "mini-css-extract-plugin": "1.3.9",
"ncp": "2.0.0", "ncp": "2.0.0",
"netlify-cms-app": "2.14.32",
"prop-types": "15.7.2", "prop-types": "15.7.2",
"react": "17.0.2", "react": "17.0.2",
"react-bootstrap": "1.5.2", "react-bootstrap": "1.5.2",
"react-helmet": "6.1.0", "react-helmet": "6.1.0",
"react-intl": "^5.13.5", "react-intl": "^5.13.5",
"redux": "4.0.5",
"typescript": "^4.2.3",
"vertical-timeline-component-for-react": "1.0.7",
"react-scrollspy": "^3.4.3", "react-scrollspy": "^3.4.3",
"smoothscroll-polyfill": "^0.4.4" "redux": "4.0.5",
"smoothscroll-polyfill": "^0.4.4",
"vertical-timeline-component-for-react": "1.0.7"
}, },
"devDependencies": { "devDependencies": {
"autoprefixer": "10.2.5", "autoprefixer": "10.2.5",

View File

@ -18,13 +18,8 @@ const MagProgLayout = ({children}) => {
{/*<noscript>{*/} {/*<noscript>{*/}
{/* <link rel="stylesheet" href={withPrefix("magprog/css/noscript.css")}/>*/} {/* <link rel="stylesheet" href={withPrefix("magprog/css/noscript.css")}/>*/}
{/*</noscript>*/} {/*</noscript>*/}
<script src={withPrefix("magprog/js/jquery.min.js")} defer={true}/> {/* <script src={withPrefix("magprog/js/util.js")} defer={true}/>
<script src={withPrefix("magprog/js/jquery.scrollex.min.js")} defer={true}/> <script src={withPrefix("magprog/js/main.js")} defer={true}/>*/}
<script src={withPrefix("magprog/js/jquery.scrolly.min.js")} defer={true}/>
<script src={withPrefix("magprog/js/browser.min.js")} defer={true}/>
<script src={withPrefix("magprog/js/breakpoints.min.js")} defer={true}/>
<script src={withPrefix("magprog/js/util.js")} defer={true}/>
<script src={withPrefix("magprog/js/main.js")} defer={true}/>
</Helmet> </Helmet>
<NpmNavbar/> <NpmNavbar/>
<div className="container-fluid"> <div className="container-fluid">

View File

@ -3,69 +3,74 @@ import React from 'react';
import PropTypes from 'prop-types'; import PropTypes from 'prop-types';
const Element = props => { const Element = props => {
return props.children; return props.children;
}; };
class Scroll extends React.Component { class Scroll extends React.Component {
static propTypes = { static propTypes = {
type: PropTypes.string, type: PropTypes.string,
element: PropTypes.string, element: PropTypes.string,
offset: PropTypes.number, offset: PropTypes.number,
timeout: PropTypes.number, timeout: PropTypes.number,
children: PropTypes.node.isRequired, children: PropTypes.node.isRequired,
}; };
constructor() {
super(); constructor() {
this.handleClick = this.handleClick.bind(this); super();
} this.handleClick = this.handleClick.bind(this);
componentDidMount() {
smoothscroll.polyfill();
}
handleClick(e) {
e.preventDefault();
let elem = 0;
let scroll = true;
const { type, element, offset, timeout } = this.props;
if (type && element) {
switch (type) {
case 'class':
elem = document.getElementsByClassName(element)[0];
scroll = !!elem;
break;
case 'id':
elem = document.getElementById(element);
scroll = !!elem;
break;
default:
}
} }
scroll
? this.scrollTo(elem, offset, timeout) componentDidMount() {
: console.log(`Element not found: ${element}`); // eslint-disable-line smoothscroll.polyfill();
} }
scrollTo(element, offSet = 0, timeout = null) {
const elemPos = element handleClick(e) {
? element.getBoundingClientRect().top + window.pageYOffset e.preventDefault();
: 0; let elem = 0;
if (timeout) { let scroll = true;
setTimeout(() => { const {type, element, offset, timeout} = this.props;
window.scroll({ top: elemPos + offSet, left: 0, behavior: 'smooth' }); if (type && element) {
}, timeout); switch (type) {
} else { case 'class':
window.scroll({ top: elemPos + offSet, left: 0, behavior: 'smooth' }); elem = document.getElementsByClassName(element)[0];
scroll = !!elem;
break;
case 'id':
elem = document.getElementById(element);
scroll = !!elem;
break;
default:
}
}
scroll
? this.scrollTo(elem, offset, timeout)
: console.log(`Element not found: ${element}`); // eslint-disable-line
}
scrollTo(element, offSet = 0, timeout = null) {
const elemPos = element
? element.getBoundingClientRect().top + window.pageYOffset
: 0;
if (timeout) {
setTimeout(() => {
window.scroll({top: elemPos + offSet, left: 0, behavior: 'smooth'});
}, timeout);
} else {
window.scroll({top: elemPos + offSet, left: 0, behavior: 'smooth'});
}
}
render() {
return (
<Element>
{typeof this.props.children === 'object' ? (
React.cloneElement(this.props.children, {onClick: this.handleClick})
) : (
<span onClick={this.handleClick}>{this.props.children}</span>
)}
</Element>
);
} }
}
render() {
return (
<Element>
{typeof this.props.children === 'object' ? (
React.cloneElement(this.props.children, { onClick: this.handleClick })
) : (
<span onClick={this.handleClick}>{this.props.children}</span>
)}
</Element>
);
}
} }
export default Scroll; export default Scroll;

View File

@ -0,0 +1,22 @@
---
content_type: magprog_mentor
title: Долгоносов Максим Сергеевич
id: Dolgonosov
photo: Dolgonosov.jpg
language: ru
---
#### Организация
ИКИ РАН, ВШЭ
#### Биография
Выпускник МФТИ (ФПФЭ 2003, красный диплом). Аспирантура ИКИ РАН (теоретическая физика). Кандидат физико-математических наук. Работа в ИКИ РАН с 2001-по настоящее время отдел Физики космической плазмы. Научный руководитель космического эксперимента "Микроспутник Чибис-АИ" на борту МКС, старший научный сотрудник ИКИ РАН
#### Направление исследований
Исследование УКВ излучения грозовых разрядов.
#### Требования к студентам
Знание английского языка не ниже pre-intermidiate. Python продвинутый.

View File

@ -0,0 +1,26 @@
---
content_type: magprog_mentor
title: Герценбергер Константин Викторович
id: Gertsenberger
photo: Gertsenberger.jpg
language: ru
---
#### Организация
Объединенный институт ядерных исследований (ОИЯИ), начальник группы
#### Биография
Родился 03.06.1983 года в г. Дубна Московской области. В 2000 г. поступил в НИЯУ “Московский инженерно-физический институт”, который окончил в 2006 г. по специальности “Математическое и программное обеспечение вычислительных систем”, в 2009 году закончил аспирантуру МИФИ. В 2014 году стал кандидатом технических наук по специальности 05.13.11. С 2009 года работаю в ОИЯИ, в настоящее время являюсь начальником группы математического и программного обеспечения НЭОФСТИ на комплексе NICA ЛФВЭ ОИЯИ. Также являюсь координатором разработки программных систем для эксперимента BM@N и вхожу в исполнительный совет эксперимента.
#### Направление исследований
Разработка программного обеспечения для обработки экспериментальных и моделированных данных эксперимента на фиксированной мишени BM@N проекта NICA.
Направления работ по тематике магистерских диссертаций:
- Использование распределённых и высокопроизводительных вычислений для моделирования и обработки данных эксперимента.
- Развитие системы визуализации событий столкновения частиц эксперимента.
- Разработка баз данных эксперимента и интерфейсов доступа.
#### Требования к студентам
Требования: знание языка C++, желательно знание Linux, CERN ROOT. Возможность участия в конференциях ОИЯИ, оплачиваемых летних практиках, публикация работ.

View File

@ -0,0 +1,24 @@
---
content_type: magprog_mentor
title: Igor Khokhriakov
id: Khokhriakov
photo: Khokhriakov.jpg
language: ru
---
#### Организация
Helmholtz-Zentrum Geesthacht/IK Company (Solutions Architect/CTO)
#### Биография
I am a results-oriented professional who has been consistently praised as quality-oriented by my co-workers and management. Over the course of my 14-year career, I've developed a skill set directly relevant to full life cycle of software development including requirements capture, prototyping, design, implementation, testing and maintenance as well as team leading. Overall, I have consistently demonstrated critical thinking, analytical and problem-solving abilities in every aspect of my software solutions architect role at Helmholtz-Zentrum Geesthacht.
Regular participation as a speaker at various community meetings and scientific conferences since 2012. Have organized more than a dozen of workshops in different countries.
I enjoy reading about and applying new technologies.
Out with the world of Software development, I enjoy boardgaming, shooting short-movies with my friends about post nuclear mankind life based on Fallout (a Role Playing Game). DJing psytrance music. And I am interested in space research.
#### Направление исследований
SCADA, DCS, IoT, Micro-services architecture, Reactive systems design

View File

@ -0,0 +1,22 @@
---
content_type: magprog_mentor
title: Калашев Олег Евгеньевич
id: Kalashev
photo: Kalashev.jpg
language: ru
---
#### Организация
ИЯИ РАН
#### Биография
Окончил МФТИ в 1999. В 1999-2002 году обучался в аспирантуре Института ядерных исследований РАН под руководством В.А. Кузьмина. В 2005-2006 году работал на факультете физики и астрономии в университете штата Калифорния, Лос-Анджелес. В 2003 году защитил кандидатскую, а в 2017 докторскую диссертацию по специальности теоретическая физика и темам связанным с космическими лучами сверхвысоких энергий. С 2006 года работает в институте ядерных исследований РАН, преподает на кафедре физики частиц и космологии физического факультета МГУ и кафедре фундаментальных взаимодействий и космологии факультета проблем физики и энергетики МФТИ. С 2008 года действительный член международной коллаборации Telescope Array.
#### Направление исследований
Разработка методов, основанных на алгоритмах машинного обучения для анализа экспериментальных данных, а также в теоретических задачах астрофизики частиц. Моделирование распространения космических лучей.
#### Требования к студентам
Возможно сотрудничество с экспериментальными группами Telescope Array (США), Байкальского подводного нейтринного телескопа, Баксанской Нейтринной Обсерватории.

View File

@ -0,0 +1,25 @@
---
content_type: magprog_mentor
title: Петр Климай
id: Klimai
photo: Klimai.jpg
language: ru
---
#### Организация
ИЯИ РАН, МФТИ, JetBrains Research
#### Биография
Выпускник МФТИ (2007), учился в аспирантуре ИЯИ РАН, в 2010 году защитил диссертацию к.ф.-м.н. по теме ""Ограничения на концентрацию первичных черных дыр и их космологические следствия"". Автор более 30 научных работ.
Как наиболее интересные результаты можно выделить:
- Выявлена связь между первичными возмущениями плотности, спектром индуцированных гравитационных волн, и возможной концентрацией первичных черных дыр во Вселенной.
- Изучен вопрос рождения первичных черных дыр в ряде инфляционных моделей, в том числе в теоретических моделях «водопада» гибридной инфляции, «курватона», и модели аксионной инфляции.
- Рассчитаны временные и энергетические параметры «вспышки» излучения первичной черной дыры, находящейся на финальной стадии испарения. Получены параметризации результатов, удобные для использования при анализе экспериментальных данных. Эти результаты продолжают использоваться в работах нескольких экспериментальных коллабораций.
На сегодняшний день занимается разработкой научного программного обеспечения и построением ИТ-инфраструктуры для физических экспериментов. В работе в первую очередь использует языки программирования Kotlin и Python.
#### Направление исследований
ИТ-инфраструктура физических экспериментов

View File

@ -0,0 +1,37 @@
---
content_type: magprog_mentor
title: Александр Нозик
id: Nozik
photo: Nozik.jpg
language: ru
---
#### Организация
МФТИ, JetBrains Research, ИЯИ РАН
#### Биография
Окончил Л2Ш в 2002 году. Поступил в МФТИ на ФПФЭ, кафедру фундаментальных взаимодействий и космологии (ИЯИ РАН).
- В 2006 году с отличием окончил бакалавриат МФТИ.
- В 2008 году окончил магистратуру МФТИ.
- В 2012 году защитил кандидатскую диссертацию по направлению 01.04.16: физика атомного ядра и элементарных частиц. Тема: "Результаты обработки данных эксперимента "Троицк ню-масс" по прямому измерению массы электронного нейтрино"
- С 2013 году преподаватель общей физики в МФТИ.
- С 2019 года заместитель заведующего ЛМЯФЭ МФТИ.
- С 2019 года руководитель направления в JetBrains Research.
[ResearchGate](https://www.researchgate.net/profile/Alexander-Nozik)
[Страница на сайте JBR](https://research.jetbrains.org/groups/npm/)
#### Направление исследований
Разработка научного программного обеспечения на Kotlin и других языках.
* Разработка систем визуализации научных данных.
* Разработка систем сбора данных и управления оборудованием и использование этих систем в международных экспериментах, таких как Троицк ню-масс и IAXO.
* Разработка автоматизированных систем анализа данных.
Разработка научных библиотек на языке Kotlin.
#### Требования к студентам
Работа возможна в дистанционном и очном формате (в Москве).

View File

@ -0,0 +1,21 @@
---
content_type: magprog_mentor
title: Ильмир Усманов
id: Usmanov
photo: Usmanov.jpg
language: ru
---
#### Организация
JetBrains
#### Биография
Окончил в ФРТК МФТИ в 2013 г.
Последние 9 лет работал над различными компиляторами - от GCC и LLVM до котлиновского компилятора.
Сейчас работаю в JetBrans в команде Kotlin Language Research Team.
#### Направление исследований
Дизайн и реализация языков программирования, компиляторные оптимизации, гетерогенные вычисления, символьное исполнение

View File

@ -2,9 +2,8 @@
content_type: magprog_mentor content_type: magprog_mentor
title: Полиграф Шариков title: Полиграф Шариков
id: template id: template
order: 0
photo: Template.jpg photo: Template.jpg
publish: false published: false
language: ru language: ru
--- ---
Выдающийся ученый Выдающийся ученый

Binary file not shown.

After

Width:  |  Height:  |  Size: 613 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 555 KiB

View File

@ -14,14 +14,12 @@ function mentors(edges) {
return <section> return <section>
<a className="image"> <a className="image">
<img src={withPrefix(`images/magprog/mentors/${edge.node.frontmatter.photo}`)} <img src={withPrefix(`images/magprog/mentors/${edge.node.frontmatter.photo}`)}
alt={edge.node.frontmatter.title} data-position="25% 25%"/> alt={edge.node.frontmatter.title} width="100%" data-position="center center"/>
</a> </a>
<div className="content"> <div className="content">
<div className="inner"> <div className="inner">
<h2>{edge.node.frontmatter.title}</h2> <h2>{edge.node.frontmatter.title}</h2>
<p> {Parser(edge.node.html)}
{Parser(edge.node.html)}
</p>
{/* {/*
<ul className="actions"> <ul className="actions">
<li><a href="generic.html" className="button">Learn more</a></li> <li><a href="generic.html" className="button">Learn more</a></li>
@ -167,7 +165,7 @@ export const query = graphql`
} }
mentors: allMarkdownRemark(filter: {frontmatter: {content_type: {eq: "magprog_mentor"}, published: {ne: false}, language: {eq: "ru"}}}, mentors: allMarkdownRemark(filter: {frontmatter: {content_type: {eq: "magprog_mentor"}, published: {ne: false}, language: {eq: "ru"}}},
sort: {fields: frontmatter___order, order: ASC}) { sort: {fields: frontmatter___title, order: ASC}) {
edges{ edges{
node { node {
html html

View File

@ -3908,8 +3908,4 @@ body.is-preload #sidebar nav ul li {
background-attachment: scroll; background-attachment: scroll;
} }
}
.footer {
z-index: -100;
} }

View File

@ -4,8 +4,14 @@
Free for personal and commercial use under the CCA 3.0 license (html5up.net/license) Free for personal and commercial use under the CCA 3.0 license (html5up.net/license)
*/ */
if(typeof $ == "undefined"){
require("$")
}
(function($) { (function($) {
require("jquery.scrollex")
var $window = $(window), var $window = $(window),
$body = $('body'), $body = $('body'),
$sidebar = $('#sidebar'); $sidebar = $('#sidebar');

View File

@ -1,3 +1,8 @@
if(typeof $ == "undefined"){
require("$")
}
(function($) { (function($) {
/** /**
@ -6,13 +11,13 @@
*/ */
$.fn.navList = function() { $.fn.navList = function() {
var $this = $(this); const $this = $(this);
$a = $this.find('a'), $a = $this.find('a'),
b = []; b = [];
$a.each(function() { $a.each(function() {
var $this = $(this), const $this = $(this),
indent = Math.max(0, $this.parents('li').length - 1), indent = Math.max(0, $this.parents('li').length - 1),
href = $this.attr('href'), href = $this.attr('href'),
target = $this.attr('target'); target = $this.attr('target');
@ -48,7 +53,7 @@
// Multiple elements? // Multiple elements?
if (this.length > 1) { if (this.length > 1) {
for (var i=0; i < this.length; i++) for (let i=0; i < this.length; i++)
$(this[i]).panel(userConfig); $(this[i]).panel(userConfig);
return $this; return $this;
@ -149,7 +154,7 @@
$this $this
.on('click', 'a', function(event) { .on('click', 'a', function(event) {
var $a = $(this), const $a = $(this),
href = $a.attr('href'), href = $a.attr('href'),
target = $a.attr('target'); target = $a.attr('target');
@ -191,7 +196,7 @@
|| $this.touchPosY === null) || $this.touchPosY === null)
return; return;
var diffX = $this.touchPosX - event.originalEvent.touches[0].pageX, const diffX = $this.touchPosX - event.originalEvent.touches[0].pageX,
diffY = $this.touchPosY - event.originalEvent.touches[0].pageY, diffY = $this.touchPosY - event.originalEvent.touches[0].pageY,
th = $this.outerHeight(), th = $this.outerHeight(),
ts = ($this.get(0).scrollHeight - $this.scrollTop()); ts = ($this.get(0).scrollHeight - $this.scrollTop());
@ -199,8 +204,8 @@
// Hide on swipe? // Hide on swipe?
if (config.hideOnSwipe) { if (config.hideOnSwipe) {
var result = false, let result = false;
boundary = 20, const boundary = 20,
delta = 50; delta = 50;
switch (config.side) { switch (config.side) {
@ -327,7 +332,7 @@
$this.find('input[type=text],textarea') $this.find('input[type=text],textarea')
.each(function() { .each(function() {
var i = $(this); const i = $(this);
if (i.val() == '' if (i.val() == ''
|| i.val() == i.attr('placeholder')) || i.val() == i.attr('placeholder'))
@ -338,7 +343,7 @@
}) })
.on('blur', function() { .on('blur', function() {
var i = $(this); const i = $(this);
if (i.attr('name').match(/-polyfill-field$/)) if (i.attr('name').match(/-polyfill-field$/))
return; return;
@ -351,7 +356,7 @@
}) })
.on('focus', function() { .on('focus', function() {
var i = $(this); const i = $(this);
if (i.attr('name').match(/-polyfill-field$/)) if (i.attr('name').match(/-polyfill-field$/))
return; return;
@ -367,14 +372,14 @@
$this.find('input[type=password]') $this.find('input[type=password]')
.each(function() { .each(function() {
var i = $(this); const i = $(this);
var x = $( const x = $(
$('<div>') $('<div>')
.append(i.clone()) .append(i.clone())
.remove() .remove()
.html() .html()
.replace(/type="password"/i, 'type="text"') .replace(/type="password"/i, 'type="text"')
.replace(/type=password/i, 'type=text') .replace(/type=password/i, 'type=text')
); );
if (i.attr('id') != '') if (i.attr('id') != '')
@ -396,7 +401,7 @@
event.preventDefault(); event.preventDefault();
var x = i.parent().find('input[name=' + i.attr('name') + '-polyfill-field]'); const x = i.parent().find('input[name=' + i.attr('name') + '-polyfill-field]');
if (i.val() == '') { if (i.val() == '') {
@ -412,7 +417,7 @@
event.preventDefault(); event.preventDefault();
var i = x.parent().find('input[name=' + x.attr('name').replace('-polyfill-field', '') + ']'); const i = x.parent().find('input[name=' + x.attr('name').replace('-polyfill-field', '') + ']');
x.hide(); x.hide();
@ -437,7 +442,7 @@
$this.find('input[type=text],input[type=password],textarea') $this.find('input[type=text],input[type=password],textarea')
.each(function(event) { .each(function(event) {
var i = $(this); const i = $(this);
if (i.attr('name').match(/-polyfill-field$/)) if (i.attr('name').match(/-polyfill-field$/))
i.attr('name', ''); i.attr('name', '');
@ -462,8 +467,8 @@
$this.find('input,textarea') $this.find('input,textarea')
.each(function() { .each(function() {
var i = $(this), const i = $(this);
x; let x;
i.removeClass('polyfill-placeholder'); i.removeClass('polyfill-placeholder');
@ -525,7 +530,7 @@
*/ */
$.prioritize = function($elements, condition) { $.prioritize = function($elements, condition) {
var key = '__prioritize'; const key = '__prioritize';
// Expand $elements if it's not already a jQuery object. // Expand $elements if it's not already a jQuery object.
if (typeof $elements != 'jQuery') if (typeof $elements != 'jQuery')
@ -534,8 +539,9 @@
// Step through elements. // Step through elements.
$elements.each(function() { $elements.each(function() {
var $e = $(this), $p, const $e = $(this);
$parent = $e.parent(); let $p;
const $parent = $e.parent();
// No parent? Bail. // No parent? Bail.
if ($parent.length == 0) if ($parent.length == 0)

1714
yarn.lock

File diff suppressed because it is too large Load Diff