Update education pages

This commit is contained in:
Alexander Nozik 2022-09-03 18:39:06 +03:00
parent 38e739c5c4
commit 9284e107d7
No known key found for this signature in database
GPG Key ID: F7FCF2DD25C71357
5 changed files with 71 additions and 15 deletions

View File

@ -15,6 +15,7 @@ Our research, which primarily includes open source projects, has already been ap
## We do ## We do
<!--suppress HtmlUnknownTarget -->
<section id="one" class="tiles"> <section id="one" class="tiles">
<article> <article>
<span class="image"> <span class="image">

View File

@ -0,0 +1,45 @@
---
type: page
title: Education
transformation: snark.basic
language: en
---
<section id="masters">
<div class="inner">
<header class="major">
<h2>Masters program</h2>
</header>
<p>Masters program "Scientific programming" at MIPT aims to prepare specialists both in application programming and domain field (such as physics, biology, biotechnology, computer science and other research areas).</p>
<p> In modern science and technology application level programming is an integral part of any major work. And in order to be successful in this field one needs to know both software engineering and the domain field. </p>
<ul class="actions">
<li><a href="${resolvePageRef("education.masters")}" class="button next">More</a></li>
</ul>
</div>
</section>
<hr/>
## Courses in 2022-2023:
* Scientific literature seminar
curated by Aleksandr Svetlichnyi
* [Statistical methods and data analysis](https://t.me/mipt_statmethods) ([SPC-A-6](https://npm.mipt.ru/youtrack/articles/SPC-A-6))
by Alexander Nozik and Vladimir Palmin
* Численные методы ([SPC-A-3](https://npm.mipt.ru/youtrack/articles/SPC-A-3))
by Konstantin Tikhonov and Rolan Grinis
* Instruments of development ([SPC-A-5](https://npm.mipt.ru/youtrack/articles/SPC-A-5))
* [Advanced Python](https://t.me/mipt_npm_python) ([SPC-A-4](https://npm.mipt.ru/youtrack/articles/SPC-A-4))
by Mikhail Zelenyy
* Computational finance ([SPC-A-10](https://npm.mipt.ru/youtrack/articles/SPC-A-10))
by Rolan Grinis

View File

@ -1,9 +1,13 @@
package ru.mipt.spc package ru.mipt.spc
import io.ktor.server.application.Application import io.ktor.server.application.Application
import io.ktor.server.application.call
import io.ktor.server.application.install import io.ktor.server.application.install
import io.ktor.server.plugins.forwardedheaders.ForwardedHeaders import io.ktor.server.plugins.forwardedheaders.ForwardedHeaders
import io.ktor.server.plugins.forwardedheaders.XForwardedHeaders import io.ktor.server.plugins.forwardedheaders.XForwardedHeaders
import io.ktor.server.response.respondRedirect
import io.ktor.server.routing.get
import io.ktor.server.routing.routing
import space.kscience.snark.SnarkEnvironment import space.kscience.snark.SnarkEnvironment
import space.kscience.snark.ktor.extractResources import space.kscience.snark.ktor.extractResources
import space.kscience.snark.ktor.prepareSnarkDataCacheDirectory import space.kscience.snark.ktor.prepareSnarkDataCacheDirectory
@ -42,6 +46,13 @@ fun Application.spcModule() {
spcMasters(dataPath = mastersDataPath) spcMasters(dataPath = mastersDataPath)
} }
routing{
get("magprog"){
call.respondRedirect("education/masters")
}
}
} }

View File

@ -149,11 +149,11 @@ context(WebPage) private fun HTML.spcHome() {
header("major") { header("major") {
h3 { h3 {
a(classes = "link") { a(classes = "link") {
href = resolvePageRef("magprog.index") href = resolvePageRef("education")
+"""Master's program""" +"""Education"""
} }
} }
p { +"""Master's program: "Scientific programming" """ } p { +""" Educational projects""" }
} }
} }
article { article {
@ -265,11 +265,14 @@ internal fun SiteBuilder.spcHome(dataPath: Path, prefix: Name = Name.EMPTY) {
pages("consulting", dataRenderer = FortyDataRenderer) pages("consulting", dataRenderer = FortyDataRenderer)
//pages("ru.consulting".parseAsName(), dataRenderer = FortyDataRenderer) //pages("ru.consulting".parseAsName(), dataRenderer = FortyDataRenderer)
spcSpotlight("team") { _, m -> pages("education", dataRenderer = FortyDataRenderer)
m["type"].string == "team"
spcSpotlight("team") { _, meta ->
meta["type"].string == "team"
} }
spcSpotlight("research") { name, m ->
name.startsWith("projects".asName()) && m["type"].string == "project" spcSpotlight("research") { name, meta ->
name.startsWith("projects".asName()) && meta["type"].string == "project"
} }
} }

View File

@ -9,13 +9,9 @@ import space.kscience.dataforge.meta.Meta
import space.kscience.dataforge.meta.get import space.kscience.dataforge.meta.get
import space.kscience.dataforge.meta.getIndexed import space.kscience.dataforge.meta.getIndexed
import space.kscience.dataforge.meta.string import space.kscience.dataforge.meta.string
import space.kscience.dataforge.names.Name import space.kscience.dataforge.names.*
import space.kscience.dataforge.names.asName import space.kscience.snark.SnarkContext
import space.kscience.dataforge.names.plus
import space.kscience.dataforge.names.withIndex
import space.kscience.snark.*
import space.kscience.snark.html.* import space.kscience.snark.html.*
import space.kscience.snark.html.WebPage
import java.nio.file.Path import java.nio.file.Path
import kotlin.collections.component1 import kotlin.collections.component1
import kotlin.collections.component2 import kotlin.collections.component2
@ -302,7 +298,7 @@ context(WebPage) internal fun BODY.magProgFooter() {
context(SnarkContext) private val HtmlData.mentorPageId get() = "mentor-${id}" context(SnarkContext) private val HtmlData.mentorPageId get() = "mentor-${id}"
internal fun SiteBuilder.spcMasters(dataPath: Path, prefix: Name = "magprog".asName()) { internal fun SiteBuilder.spcMasters(dataPath: Path, prefix: Name = "education.masters".parseAsName()) {
val magProgData: DataTree<Any> = snark.readDirectory(dataPath.resolve("content")) val magProgData: DataTree<Any> = snark.readDirectory(dataPath.resolve("content"))
@ -353,7 +349,7 @@ internal fun SiteBuilder.spcMasters(dataPath: Path, prefix: Name = "magprog".asN
li { li {
a( a(
classes = "spc-home", classes = "spc-home",
href = resolvePageRef(Name.of("..") + SiteBuilder.INDEX_PAGE_TOKEN) href = "/" //TODO provide a way to navigate out-of-site
) { ) {
i("fa fa-home") { i("fa fa-home") {
attributes["aria-hidden"] = "true" attributes["aria-hidden"] = "true"