add BMK site

This commit is contained in:
Alexander Nozik 2023-01-23 20:33:48 +03:00
parent 92b031392a
commit 7192f7fafe
42 changed files with 414 additions and 10 deletions

View File

@ -11,7 +11,7 @@ plugins {
application application
} }
group = "ru.mipt.npm" group = "center.sciprog"
version = "0.1.0" version = "0.1.0"
application { application {

12
data/bmk/content/about.md Normal file
View File

@ -0,0 +1,12 @@
---
title: БМК-Сервис
fragment: about
language: ru
---
ООО «БМК-Сервис» - отечественная высокотехнологическая компания - разработчик программного обеспечения в области геофизических исследований.
Компания основана в 2020 году и ее штат состоит из инженеров, программистов, математиков и научных сотрудников. Исследования, разработки, а также тестирование компании размещены в г. Долгопрудный Московской области.
Мы создаем решения для оптимального планирования морских сейсморазведочных 2D, 3D, и 4D работ. Наша экспертиза позволяет соединить различные аспекты при планировании разведки. Совместный учет геофизических и навигационных особенностей вместе с передовыми практиками программирование позволяет нам создавать передовое программное обеспечение для решений в области оптимального планирования разведывательных работ.
Разрабатываемое программное обеспечение протестировано с лидирующими отечественными нефтесервисными компаниями, среди которых СКФ Гео и Росгеология, а также защищено свидетельством о государственной регистрации программы для ЭВМ № 2022667423 «Программное обеспечение для моделирования и оптимизации проведения морских сейсморазведочных работ».

View File

@ -0,0 +1,18 @@
---
title: Решения
fragment: solutions
language: ru
---
### Рынок сейсморазведки
По оценкам, к концу 2030 года мировой рынок сейсморазведки принесет доход в размере 11 658,2 млн долларов США, увеличившись со среднегодовым темпом роста в 3,96%. На рост помимо увеличения спроса на поиск новых залежей нефти и природного газа, развитее Carbon Capture & Storage технологий требует изучение геологических структур под дном морей для создания хранилищ углекислого газа.
Стоимость сейсморазведки при этом может составлять порядка $100,000 за квадратную милю для 3D работ. При этом основная часть затрат находится в аренде сейсморазведочного судна. Поэтому для уменьшения стоимости работ и увеличения прибыли необходимо производить оптимальное планирование разведки.
### LotSeis
Планирование разведки состоит из нескольких этапов от выдвижения гипотез о геологической структуре и построения области разведки до создания траектории движения сейсморазведочного судна. LotSeis помогает с последней частью.
LotSeis является продвинутым программным обеспечением, которое автоматизирует и оптимизирует планирование сейсморазведки. LotSeis разделяет планирование на два этапа. Первый основан на геофизическом планировании. Рассчитывается карта разрешений съемки, которая позволяет выбрать более подходящую конфигурацию корабля или изменить область разведки. Второй этап производит оптимизацию навигации. LotSeis позволяет задавать препятствия различных форм и устанавливать для них разные безопасные расстояния. В результате LotSeis создает оптимальный маршрут движения судна, учитывая все физические ограничения и особенности.
Ядро оптимизации LotSeis основано на продвинутых алгоритмах, симулирующих природные явления. Архитектура ядра позволяет добавлять различные модули, изменяющие решение. Это делает LotSeis гибким решением, которое может подстраиваться под клиента. LotSeis является частью Kotlin-экосистемы, поэтому использует наиболее продвинуты инструменты и технологии.

View File

@ -0,0 +1,5 @@
---
title: Партнеры
fragment: partners
language: ru
---

View File

@ -0,0 +1,25 @@
content:
- title: Институт физики Земли им. О.Ю. Шмидта РАН
target: "https://ifz.ru/"
image: images/ifz.jpeg
- title: Институт океанологии им. П.П. Ширшова
target: "https://ocean.ru/"
image: images/IMG_8289.jpg
- title: ООО «СПЛИТ»
target: "https://split-k.com/"
image: images/scf.jpg
- title: ООО «СКФ ГЕО»
target: "https://www.scf-group.ru/"
image: images/split.png
- title: АО «Морская арктическая геологоразведочная экспедиция»
target: "https://mage.ru/ru/"
image: images/IMG_8287.jpg
- title: АО «Росгеология»
target: "https://rusgeology.ru/"
image: images/rosgeo.jpeg
- title: МФТИ
target: "https://mipt.ru/"
image: images/IMG_8290.jpg
- title: ФГБОУ «Фонд содействия развитию малых форм предприятий в научно-технической сфере»
target: "https://fasie.ru/"
image: images/IMG_8284.jpg

View File

@ -0,0 +1,5 @@
---
title: "Команда"
fragment: team
language: ru
---

View File

@ -0,0 +1,8 @@
---
type: team
title: Святослав Ковалев
image: kovalev.png
order: 4
language: ru
---
Более 15 лет опыта в ИТ-сфере. Участвовал в проектах по разработке CAD-ов, антивирусов. Занимал должности математика-программиста, разработчика в тестировании, инженера-программиста, тимлида, системного аналитика. Выпускник ФГАОУ ВО «Южный федеральный университет».

View File

@ -0,0 +1,8 @@
---
type: team
title: Сергей Курков
image: kurcov.png
order: 1
language: ru
---
Руководитель высокотехнологичных проектов с более чем 10-летним опытом работы. Реализовано более 10 проектов по разработке оборудования и программного обеспечения, организации производства, по заказам нефтяных и нефтесервисных компаний, в том числе международных. Выпускник МФТИ.

View File

@ -0,0 +1,8 @@
---
type: team
title: Александр Нозик
image: Nozik.jpg
order: 3
language: ru
---
Более 15 лет опыта в научном программировании. Реализация международных проектов. Руководитель центра Научного программирования МФТИ, заместитель руководителя лаборатории методов ядерной физики в МФТИ, Руководитель исследовательской группы в JetBrains Research, автор образовательных курсов в МФТИ. Выпускник МФТИ.

View File

@ -0,0 +1,8 @@
---
type: team
title: Владимир Пальмин
image: palmin.jpeg
order: 2
language: ru
---
Руководитель аналитического отдела Центра Научного Программирования МФТИ. Реализовано более 3 проектов по разработке программного обеспечения, в том числе для международных нефтегазовых компаний. Выпускник МФТИ.

View File

@ -0,0 +1,8 @@
---
type: team
title: Андрей Разин
image: razin.jpg
order: 5
language: ru
---
Инженер-геофизик с 32-летним стажем морских геофизических работ, один из ведущих российских специалистов по сейсморазведке в «транзитных» зонах. Выпускник ФГБОУ ВО «Российский государственный геологоразведочный университет имени Серго Орджоникидзе».

Binary file not shown.

After

Width:  |  Height:  |  Size: 181 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 62 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

BIN
data/bmk/images/Nozik.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 98 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 840 KiB

BIN
data/bmk/images/ifz.jpeg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

BIN
data/bmk/images/kovalev.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 299 KiB

BIN
data/bmk/images/kurcov.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 274 KiB

BIN
data/bmk/images/palmin.jpeg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 49 KiB

BIN
data/bmk/images/razin.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

BIN
data/bmk/images/rosgeo.jpeg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

BIN
data/bmk/images/scf.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

BIN
data/bmk/images/split.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.9 KiB

View File

@ -17,7 +17,7 @@ In our course, we will try to analyze in detail the issues of the practical appl
The course is planned in the optional format once a week, while lectures will be held every second week, and practical classes (seminars) will be held between the lectures, discussing examples and solving problems from modern experimental physics and everyday life (including laboratory work) . The course is planned in the optional format once a week, while lectures will be held every second week, and practical classes (seminars) will be held between the lectures, discussing examples and solving problems from modern experimental physics and everyday life (including laboratory work) .
Announcements of important events, as well as discussion of any issues related to the course, are available in the Telegram group (<https://t.me/mipt_statmethods>). Announcements of important events, as well as discussion of any issues related to the course, are available in the Telegram group (https://t.me/mipt_statmethods).
[Materials](https://github.com/mipt-npm-study/stat-methods) [Materials](https://github.com/mipt-npm-study/stat-methods)

View File

@ -25,7 +25,7 @@ application, currently targeting browser JavaScript and JVM.
- 3D visualization of complex experimental set-ups - 3D visualization of complex experimental set-ups
- Event display such as particle tracks, etc. - Event display such as particle tracks, etc.
- Scales up to few hundred thousands of elements - Scales up to few hundred thousand elements
- Camera move, rotate, zoom-in and zoom-out - Camera move, rotate, zoom-in and zoom-out
- Scene graph as an object tree with property editor - Scene graph as an object tree with property editor
- Settings export and import - Settings export and import

View File

@ -1,4 +1,4 @@
package ru.mipt.spc package center.sciprog
import io.ktor.server.application.Application import io.ktor.server.application.Application
import io.ktor.server.application.call import io.ktor.server.application.call
@ -45,6 +45,14 @@ fun Application.spcModule() {
) )
spcMasters(dataPath = mastersDataPath) spcMasters(dataPath = mastersDataPath)
val bmkDataPath = extractResources(
"/bmk",
dataPath / "bmk"
)
bmk(dataPath = bmkDataPath)
} }
routing{ routing{

View File

@ -0,0 +1,291 @@
package center.sciprog
import kotlinx.coroutines.runBlocking
import kotlinx.html.*
import space.kscience.dataforge.data.Data
import space.kscience.dataforge.data.DataTree
import space.kscience.dataforge.data.await
import space.kscience.dataforge.data.getByType
import space.kscience.dataforge.meta.Meta
import space.kscience.dataforge.meta.get
import space.kscience.dataforge.meta.getIndexed
import space.kscience.dataforge.meta.string
import space.kscience.dataforge.names.Name
import space.kscience.dataforge.names.parseAsName
import space.kscience.snark.html.*
import java.nio.file.Path
private val Data<*>.title: String
get() = meta["title"].string ?: ""
private val Data<*>.fragment: String
get() = meta["fragment"].string ?: ""
internal fun SiteBuilder.bmk(dataPath: Path, prefix: Name = "bmk".parseAsName()) {
val data: DataTree<Any> = snark.readDirectory(dataPath.resolve("content"))
site(prefix, data) {
file(dataPath.resolve("assets"))
file(dataPath.resolve("images"))
file(dataPath.resolve("../common"), "")
val about: Data<HtmlFragment> = data.resolveHtml("about")!!
val team: Data<HtmlFragment> = data.resolveHtml("team.index")!!
val teamData: Map<Name, Data<HtmlFragment>> = data.resolveAllHtml { _, meta -> meta["type"].string == "team" }
val solutions: Data<HtmlFragment> = data.resolveHtml("lotSeis")!!
val partners: Data<HtmlFragment> = data.resolveHtml("partners")!!
val partnersData = runBlocking { data.getByType<Meta>("partnersData")!!.await() }
page {
head {
title = "БМК-Сервис"
meta {
charset = "utf-8"
}
meta {
name = "viewport"
content = "width=device-width, initial-scale=1, user-scalable=no"
}
link {
rel = "stylesheet"
href = resolveRef("assets/css/main.css")
}
noScript {
link {
rel = "stylesheet"
href = resolveRef("assets/css/noscript.css")
}
}
}
body("is-preload") {
// Wrapper
div {
id = "wrapper"
// Header
header("alt") {
id = "header"
span("logo") {
img {
src = "images/logo.svg"
alt = ""
}
}
h1 { +"""БМК-Сервис""" }
// p {
// +"""Just another free, fully responsive site template"""
// br {
// }
// +"""built by"""
// a {
// href = "https://twitter.com/ajlkn"
// +"""@ajlkn"""
// }
// +"""for"""
// a {
// href = "https://html5up.net"
// +"""HTML5 UP"""
// }
// +"""."""
// }
}
// Nav
nav {
id = "nav"
ul {
li {
a(classes = "active") {
href = "#${about.fragment}"
+about.title
}
}
li {
a {
href = "#${team.fragment}"
+team.title
}
}
li {
a {
href = "#${solutions.fragment}"
+solutions.title
}
}
li {
a {
href = "#${partners.fragment}"
+partners.title
}
}
}
}
div {
id = "main"
section("main") {
id = about.fragment
div("spotlight") {
div("content") {
header("major") {
h2 { +about.title }
}
htmlData(about)
}
}
}
section("main") {
id = team.fragment
header("major") {
h2 { +team.title }
}
htmlData(team)
teamData.values.sortedBy { it.order }.forEach { data ->
span("image left") {
img {
src = resolveRef("images/${data.meta["image"].string!!}")
height = "120dp"
}
}
h3 { +data.title }
htmlData(data)
}
}
section("main") {
id = solutions.fragment
header("major") {
h2 { +solutions.title }
htmlData(solutions)
span("image fit") {
img {
src = resolveRef("images/fresnel_lands_critdepth2.png")
}
}
}
}
section("main") {
id = partners.fragment
header("major") {
h2 { +partners.title }
htmlData(partners)
table {
partnersData.getIndexed("content").values.forEach {
tr {
td {
span("image right") {
img {
src = resolveRef(it["image"].string!!)
height = "120dp"
}
}
h3 {
a(href = it["target"].string!!) {
+it["title"].string!!
}
}
}
}
}
}
}
}
}
// Footer
footer {
// id = "footer"
// section {
// h2 { +"""Aliquam sed mauris""" }
// p { +"""Sed lorem ipsum dolor sit amet et nullam consequat feugiat consequat magna adipiscing tempus etiam dolore veroeros. eget dapibus mauris. Cras aliquet, nisl ut viverra sollicitudin, ligula erat egestas velit, vitae tincidunt odio.""" }
// ul("actions") {
// li {
// a(classes = "button") {
// href = "generic.html"
// +"""Learn More"""
// }
// }
// }
// }
// section {
// h2 { +"""Etiam feugiat""" }
// dl("alt") {
// dt { +"""Address""" }
// dd { +"""1234 Somewhere Road &bull; Nashville, TN 00000 &bull; USA""" }
// dt { +"""Phone""" }
// dd { +"""(000) 000-0000 x 0000""" }
// dt { +"""Email""" }
// dd {
// a {
// href = "#"
// +"""information@untitled.tld"""
// }
// }
// }
// ul("icons") {
// li {
// a(classes = "icon brands fa-twitter alt") {
// href = "#"
// span("label") { +"""Twitter""" }
// }
// }
// li {
// a(classes = "icon brands fa-facebook-f alt") {
// href = "#"
// span("label") { +"""Facebook""" }
// }
// }
// li {
// a(classes = "icon brands fa-instagram alt") {
// href = "#"
// span("label") { +"""Instagram""" }
// }
// }
// li {
// a(classes = "icon brands fa-github alt") {
// href = "#"
// span("label") { +"""GitHub""" }
// }
// }
// li {
// a(classes = "icon brands fa-dribbble alt") {
// href = "#"
// span("label") { +"""Dribbble""" }
// }
// }
// }
// }
p("copyright") {
+"""SPC. Design:"""
a {
href = "https://html5up.net"
+"""HTML5 UP"""
}
+"""."""
}
}
}
// Scripts
script {
src = resolveRef("assets/js/jquery.min.js")
}
script {
src = resolveRef("assets/js/jquery.scrollex.min.js")
}
script {
src = resolveRef("assets/js/jquery.scrolly.min.js")
}
script {
src = resolveRef("assets/js/browser.min.js")
}
script {
src = resolveRef("assets/js/breakpoints.min.js")
}
script {
src = resolveRef("assets/js/util.js")
}
script {
src = resolveRef("assets/js/main.js")
}
}
}
}
}

View File

@ -1,4 +1,4 @@
package ru.mipt.spc package center.sciprog
import html5up.forty.fortyScripts import html5up.forty.fortyScripts
import kotlinx.html.* import kotlinx.html.*

View File

@ -1,4 +1,4 @@
package ru.mipt.spc package center.sciprog
import html5up.forty.fortyScripts import html5up.forty.fortyScripts
import kotlinx.html.* import kotlinx.html.*

View File

@ -1,4 +1,4 @@
package ru.mipt.spc package center.sciprog
import kotlinx.coroutines.runBlocking import kotlinx.coroutines.runBlocking
import kotlinx.html.* import kotlinx.html.*

View File

@ -1,4 +1,4 @@
package ru.mipt.spc package center.sciprog
import kotlinx.html.* import kotlinx.html.*
import space.kscience.dataforge.meta.get import space.kscience.dataforge.meta.get

View File

@ -1,4 +1,4 @@
package ru.mipt.spc package center.sciprog
import space.kscience.snark.SnarkEnvironment import space.kscience.snark.SnarkEnvironment
import space.kscience.snark.html.static import space.kscience.snark.html.static

View File

@ -1,6 +1,6 @@
ktor { ktor {
application { application {
modules = [ ru.mipt.spc.ApplicationKt.spcModule ] modules = [ center.sciprog.ApplicationKt.spcModule ]
} }
deployment { deployment {