Compare commits
1 Commits
lab6
...
cd13aca48d
| Author | SHA1 | Date | |
|---|---|---|---|
| cd13aca48d |
2
.gitignore
vendored
@@ -1,2 +0,0 @@
|
||||
node_modules
|
||||
to_reform
|
||||
104
embeded_details.html
Normal file
@@ -0,0 +1,104 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>
|
||||
"Portfolio"
|
||||
</title>
|
||||
</head>
|
||||
|
||||
<body bgcolor="#F0F8FF">
|
||||
<details>
|
||||
<summary>Menu</summary>
|
||||
<ul>
|
||||
<li><a href="./index.html">Home</a></li>
|
||||
<li><a href="./embeded_details.html">Embeded Details</a></li>
|
||||
<li><a href="./opencv_details.html">OpenCV Details</a></li>
|
||||
<li><a href="./photography_details.html">Photography Details</a></li>
|
||||
<li><a href="./table.html">Table with filters (not working yet)</a></li>
|
||||
<li><a href="./images/institute.png">Institute</a></li>
|
||||
</ul>
|
||||
</details>
|
||||
<h2 align="center">Embedded Details</h2>
|
||||
<hr width="80%" align="center">
|
||||
<div style="text-align:center;">
|
||||
<img src="./images/esp32.png" alt="ESP32" height="150">
|
||||
<img src="./images/arduino.png" alt="Arduino" height="150">
|
||||
<img src="./images/stm32.png" alt="STM32" height="150">
|
||||
</div>
|
||||
<p align="justify">My programming path started with embeded systems,
|
||||
i love all the low level things that Mcu could do with just a little bit of code,
|
||||
sometimes build or flashing progress could take some time to get a hand of , but after that everething usualy
|
||||
goes smooth</p>
|
||||
|
||||
<p align="justify">The first MCU i tried was a ATmega328P,
|
||||
after some time i was surprised with the debug capabilities on the Stm32
|
||||
and now i'm working with esp32-s3 , that's a good chip, has internal JTAG and all the shiny wireless interfaces
|
||||
but feels faulty
|
||||
for some reason <i> regular segfaults with CDC</i></p>
|
||||
|
||||
|
||||
<h3 align="center">Microcontroller Comparison Table</h3>
|
||||
<table border="1" align="center" cellpadding="6" cellspacing="0">
|
||||
<tr>
|
||||
<th>Board/MCU</th>
|
||||
<th>UART Count</th>
|
||||
<th>Dynamic UART Assignment</th>
|
||||
<th>ADC Channels</th>
|
||||
<th>Debug Support</th>
|
||||
<th>Flash Size</th>
|
||||
<th>Wireless Connectivity</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>ESP32</td>
|
||||
<td>3</td>
|
||||
<td>Yes (via IO MUX)</td>
|
||||
<td>18</td>
|
||||
<td>JTAG, Serial</td>
|
||||
<td>4MB (typical)</td>
|
||||
<td>Wi-Fi, Bluetooth</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>ESP32-S3</td>
|
||||
<td>3</td>
|
||||
<td>Yes (via IO MUX)</td>
|
||||
<td>20</td>
|
||||
<td>JTAG, Serial</td>
|
||||
<td>8MB (typical)</td>
|
||||
<td>Wi-Fi, Bluetooth LE</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>ESP-01</td>
|
||||
<td>1</td>
|
||||
<td>No</td>
|
||||
<td>1</td>
|
||||
<td>Serial only</td>
|
||||
<td>512KB/1MB</td>
|
||||
<td>Wi-Fi</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Arduino Uno (ATmega328P)</td>
|
||||
<td>1</td>
|
||||
<td>No</td>
|
||||
<td>6</td>
|
||||
<td>Serial, DebugWire</td>
|
||||
<td>32KB</td>
|
||||
<td>None</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Blue Pill (STM32F103C8T6)</td>
|
||||
<td>3</td>
|
||||
<td>Yes (remappable)</td>
|
||||
<td>10</td>
|
||||
<td>SWD, Serial</td>
|
||||
<td>64KB/128KB</td>
|
||||
<td>None</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<p align="right"> no rpi pico here , the build system has won over my temper</p>
|
||||
|
||||
</body>
|
||||
|
||||
</html>
|
||||
|
Before Width: | Height: | Size: 1.2 MiB After Width: | Height: | Size: 1.2 MiB |
|
Before Width: | Height: | Size: 80 KiB After Width: | Height: | Size: 80 KiB |
|
Before Width: | Height: | Size: 347 KiB After Width: | Height: | Size: 347 KiB |
|
Before Width: | Height: | Size: 41 KiB After Width: | Height: | Size: 41 KiB |
|
Before Width: | Height: | Size: 1.1 MiB After Width: | Height: | Size: 1.1 MiB |
|
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 13 KiB |
|
Before Width: | Height: | Size: 99 KiB After Width: | Height: | Size: 99 KiB |
77
index.html
Normal file
@@ -0,0 +1,77 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>
|
||||
"Portfolio"
|
||||
</title>
|
||||
</head>
|
||||
|
||||
<body bgcolor="#F0F8FF">
|
||||
<details>
|
||||
<summary>Menu</summary>
|
||||
<ul>
|
||||
<li><a href="./index.html">Home</a></li>
|
||||
<li><a href="./embeded_details.html">Embeded Details</a></li>
|
||||
<li><a href="./opencv_details.html">OpenCV Details</a></li>
|
||||
<li><a href="./photography_details.html">Photography Details</a></li>
|
||||
<li><a href="./table.html">Table with filters (not working yet)</a></li>
|
||||
<li><a href="./images/institute.png">Institute</a></li>
|
||||
</ul>
|
||||
</details>
|
||||
<h2 align="center">OkunElya's Portfolio</h2>
|
||||
<p align="center">
|
||||
<b>Q:</b> What's this site for? <br>
|
||||
<b>A:</b> Just to show progress in education ( check git)
|
||||
</p>
|
||||
|
||||
<p align="center">
|
||||
<b>Q:</b> Why? <br>
|
||||
<b>A:</b> Because.
|
||||
</p>
|
||||
<hr width="80%" align="center">
|
||||
<h3>Experience:</h3>
|
||||
<a href="./embeded_details.html">
|
||||
<h4><i>Embedded Systems:</i></h4>
|
||||
</a>
|
||||
<p> Had a serval projects with different MCUs and wrote firmware for them. <br>
|
||||
My main stack consists of Platformio+EspIdf or Arduino, also tried STM32</p>
|
||||
|
||||
<a href="https://github.com/OkunElya/Air-Quality-Monitor-Device">
|
||||
<img src="./images/AQ_monitor.png" width="50%" border="2" alt="Air Quality Monitor Device"><br>
|
||||
<p><i>Click the image to check GitHub Project</i></p>
|
||||
</a>
|
||||
|
||||
<hr width="80%" align="center">
|
||||
|
||||
<a href="./opencv_details.html">
|
||||
<h4><i>OpenCV:</i></h4>
|
||||
</a>
|
||||
<p> I love when programs are able to <i>see</i> things or recognise them<br>
|
||||
so i had serval projects involding image processing <br>
|
||||
Sadly i'm used to opencv binding in python and not C++ , but that is solvable)</p>
|
||||
|
||||
<p>
|
||||
<img src="./images/arucos.png" width="50%" border="2" alt="Image of a table with arucos sheet"><br>
|
||||
<i>Random image from the internet (not mine)</i>
|
||||
</p>
|
||||
|
||||
<hr width="80%" align="center">
|
||||
<h3>Hobbies:</h3>
|
||||
<ol>
|
||||
<li>
|
||||
<p>Reading:<br> I love Stephen King's books , especially "<a href="./images/institute.png">Insitite</a>"</p>
|
||||
</li>
|
||||
<li>
|
||||
<p><a href="./photography_details.html">Photography:</a><br> If I have some <i>free time</i> I may take some pictures and post them <a
|
||||
href="https://t.me/iTakePhotosOnTapok">here</a> </p>
|
||||
</li>
|
||||
</ol>
|
||||
<hr width="80%" align="center">
|
||||
|
||||
<h3><a href="./table.html"> Table!!!! With Filters!!! (not working yet)</a></h3>
|
||||
</body>
|
||||
<p align="right">Author: Kulesh <br>
|
||||
Group: Б9123-09.03.04</p>
|
||||
</html>
|
||||
@@ -1,40 +0,0 @@
|
||||
CN Tower, Торонто, Канада
|
||||
|
||||
553,3-метровая телевизионная башня. Была самым высоким свободно стоящим сооружением в мире с 1976 по 2007 год,
|
||||
а также до сих пор остаётся таковым в Западном полушарии. Является символом Торонто.
|
||||
|
||||
Земляные работы для сооружения железобетонной конструкции с последующим
|
||||
натяжением арматуры весом 130 000 т начались 12 февраля 1973 г., а уже 2 апреля 1975 г. возведение башни было завершено.
|
||||
|
||||
Башня используется для телекоммуникационных нужд. Кроме того, башня используется как обзорная площадка.
|
||||
Также на башне имеется вращающийся ресторан.
|
||||
|
||||
На высоте 447 м находится астрономическая обсерватория.
|
||||
|
||||
|
||||
|
||||
Бурдж-Халифа, Дубай, ОАЭ
|
||||
|
||||
Небоскрёб высотой 828 метров, самое высокое сооружение в мире. Форма здания напоминает сталагмит.
|
||||
|
||||
Строительство небоскрёба началось в 2004 году и шло со скоростью 1—2 этажа в неделю. Ежедневно на строительстве
|
||||
работало до 12 000 рабочих. На его создание ушло около 320 тыс. м³ бетона и более 60 тыс. тонн стальной арматуры.
|
||||
Бетонные работы были завершены после возведения 160 этажа, далее шла сборка 180-метрового шпиля из металлических
|
||||
конструкций.
|
||||
|
||||
Специально для «Бурдж-Халифа» была разработана особая марка бетона, который выдерживает температуру до +50 °C.
|
||||
Бетонную смесь укладывали только ночью, а в раствор добавляли лёд.
|
||||
|
||||
|
||||
Небесное дерево, Токио, Япония
|
||||
|
||||
Телевизионная башня в районе Сумида самая высокая среди телебашен мира. Высота телебашни вместе с антенной составляет 634 метра.
|
||||
Высота башни была выбрана так, чтобы цифры: 6 (на старом японском «му»), 3 («са»), 4 («си») были созвучны «Мусаси» —
|
||||
названию исторической области, где находится современный Токио.
|
||||
|
||||
Здание напоминает пятиярусную пагоду, что хорошо сочетается с историческим районом Асакуса на другом берегу реки.
|
||||
Основание башни напоминает штатив; с высоты примерно 350 м она имеет цилиндрическую форму, позволяющую наслаждаться
|
||||
панорамными видами реки и города.
|
||||
|
||||
Имеются две наблюдательные площадки: одна на высоте 350 м (вместимостью 2000 человек), другая на высоте 450 м
|
||||
(вместимостью 900 человек).
|
||||
6
labs/fake-lab4/css/bootstrap.min.css
vendored
|
Before Width: | Height: | Size: 16 KiB |
|
Before Width: | Height: | Size: 14 KiB |
|
Before Width: | Height: | Size: 28 KiB |
|
Before Width: | Height: | Size: 15 KiB |
|
Before Width: | Height: | Size: 31 KiB |
|
Before Width: | Height: | Size: 17 KiB |
|
Before Width: | Height: | Size: 15 KiB |
|
Before Width: | Height: | Size: 35 KiB |
|
Before Width: | Height: | Size: 16 KiB |
|
Before Width: | Height: | Size: 11 KiB |
|
Before Width: | Height: | Size: 28 KiB |
|
Before Width: | Height: | Size: 24 KiB |
|
Before Width: | Height: | Size: 27 KiB |
@@ -1,208 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="ru">
|
||||
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<title>Лабораторная работа Bootstrap</title>
|
||||
<link href="css/bootstrap.min.css" rel="stylesheet">
|
||||
<script src="js/bootstrap.bundle.min.js"></script>
|
||||
<style>
|
||||
.lead{
|
||||
text-align: justify;
|
||||
}
|
||||
|
||||
@media (max-width: 576px) {
|
||||
.lead{
|
||||
font-size: 1rem;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
</style>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<header>
|
||||
<nav class="navbar navbar-expand-md bg-light navbar-light">
|
||||
|
||||
<!-- Заголовок -->
|
||||
<a class="navbar-brand" href="#">Топ высотных зданий</a>
|
||||
<!-- Кнопка для свернутого меню -->
|
||||
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#menu">
|
||||
<span class="navbar-toggler-icon"></span>
|
||||
</button>
|
||||
<!-- меню -->
|
||||
<div class="collapse navbar-collapse" id="menu">
|
||||
<ul class="navbar-nav">
|
||||
<li class="nav-item">
|
||||
<a class="nav-link active" href="#">Главная</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="#">Список зданий</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link disabled" href="#">Контакты</a>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<!-- форма для поиска -->
|
||||
<form class="d-flex">
|
||||
<input class="form-control" type="text" placeholder="Найти">
|
||||
<button class="btn btn-outline-success" type="submit">Найти</button>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
</nav>
|
||||
|
||||
</header>
|
||||
<div class="row gy-3 text-center d-none d-md-flex">
|
||||
<div class="col-lg-2 col-md-4 col-6 img-fluid img-thumbnail">
|
||||
<img src="images/image1.jpg" alt="">
|
||||
</div>
|
||||
<div class="col-lg-2 col-md-4 col-6 img-fluid img-thumbnail">
|
||||
<img src="images/image2.jpg" alt="">
|
||||
</div>
|
||||
<div class="col-lg-2 col-md-4 col-6 img-fluid img-thumbnail">
|
||||
<img src="images/image12.jpg" alt="">
|
||||
</div>
|
||||
<div class="col-lg-2 col-md-4 col-6 img-fluid img-thumbnail">
|
||||
<img src="images/image4.jpg" alt="">
|
||||
</div>
|
||||
<div class="col-lg-2 col-md-4 col-6 img-fluid img-thumbnail">
|
||||
<img src="images/image5.jpg" alt="">
|
||||
</div>
|
||||
<div class="col-lg-2 col-md-4 col-6 img-fluid img-thumbnail">
|
||||
<img src="images/image6.jpg" alt="">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div id="gallery" class="carousel slide carousel-dark d-block d-md-none " data-bs-ride="carousel">
|
||||
|
||||
<!-- Содержимое галереи -->
|
||||
<div class="carousel-inner">
|
||||
<div class="carousel-item active">
|
||||
|
||||
</div>
|
||||
<div class="carousel-item ">
|
||||
<img src="images/image1.jpg" class="d-block mx-auto" alt="">
|
||||
</div>
|
||||
<div class="carousel-item">
|
||||
<img src="images/image2.jpg" class="d-block mx-auto" alt="">
|
||||
</div>
|
||||
<div class="carousel-item">
|
||||
<img src="images/image12.jpg" class="d-block mx-auto" alt="">
|
||||
</div>
|
||||
<div class="carousel-item">
|
||||
<img src="images/image4.jpg" class="d-block mx-auto" alt="">
|
||||
</div>
|
||||
<div class="carousel-item">
|
||||
<img src="images/image5.jpg" class="d-block mx-auto" alt="">
|
||||
</div>
|
||||
<div class="carousel-item">
|
||||
<img src="images/image6.jpg" class="d-block mx-auto" alt="">
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Кнопки управления -->
|
||||
<button class="carousel-control-prev" type="button" data-bs-target="#gallery" data-bs-slide="prev">
|
||||
<span class="carousel-control-prev-icon" aria-hidden="true"></span>
|
||||
<span class="visually-hidden">Предыдущий</span>
|
||||
</button>
|
||||
<button class="carousel-control-next" type="button" data-bs-target="#gallery" data-bs-slide="next">
|
||||
<span class="carousel-control-next-icon" aria-hidden="true"></span>
|
||||
<span class="visually-hidden">Следующий</span>
|
||||
</button>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<main class="container">
|
||||
<div class="row">
|
||||
<div class="col-md-9">
|
||||
<h2>
|
||||
CN Tower, <span class="text-muted">Торонто, Канада</span>
|
||||
</h2>
|
||||
<p class="lead">
|
||||
553,3-метровая телевизионная башня. Была самым высоким свободно стоящим сооружением в мире с 1976 по
|
||||
2007 год,
|
||||
а также до сих пор остаётся таковым в Западном полушарии. Является символом Торонто.
|
||||
|
||||
</p>
|
||||
<p class="lead">
|
||||
Земляные работы для сооружения железобетонной конструкции с последующим
|
||||
натяжением арматуры весом 130 000 т начались 12 февраля 1973 г., а уже 2 апреля 1975 г. возведение
|
||||
башни было завершено.
|
||||
</p>
|
||||
<p class="lead">
|
||||
Башня используется для телекоммуникационных нужд. Кроме того, башня используется как обзорная
|
||||
площадка.
|
||||
Также на башне имеется вращающийся ресторан.
|
||||
</p>
|
||||
<p class="lead">
|
||||
На высоте 447 м находится астрономическая обсерватория.
|
||||
</p>
|
||||
</div>
|
||||
<div class="col-md-3">
|
||||
<img src="images/image9.jpg">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row order flex-row-reverse">
|
||||
<div class="col-md-9">
|
||||
<h2>
|
||||
Бурдж-Халифа, <span class="text-muted">Дубай, ОАЭ</span>
|
||||
</h2>
|
||||
<p class="lead">
|
||||
Небоскрёб высотой 828 метров, самое высокое сооружение в мире. Форма здания напоминает сталагмит.
|
||||
</p>
|
||||
<p class="lead">
|
||||
Строительство небоскрёба началось в 2004 году и шло со скоростью 1—2 этажа в неделю. Ежедневно на строительстве
|
||||
работало до 12 000 рабочих. На его создание ушло около 320 тыс. м³ бетона и более 60 тыс. тонн стальной арматуры.
|
||||
Бетонные работы были завершены после возведения 160 этажа, далее шла сборка 180-метрового шпиля из металлических
|
||||
конструкций.
|
||||
</p>
|
||||
<p class="lead">
|
||||
Специально для «Бурдж-Халифа» была разработана особая марка бетона, который выдерживает температуру до +50 °C.
|
||||
Бетонную смесь укладывали только ночью, а в раствор добавляли лёд.
|
||||
</p>
|
||||
</div>
|
||||
<div class="col-md-3">
|
||||
<img src="images/image13.jpg">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-9">
|
||||
<h2>
|
||||
Небесное дерево, <span class="text-muted">Токио, Япония</span>
|
||||
</h2>
|
||||
<p class="lead">
|
||||
Телевизионная башня в районе Сумида самая высокая среди телебашен мира. Высота телебашни вместе с антенной составляет 634 метра.
|
||||
Высота башни была выбрана так, чтобы цифры: 6 (на старом японском «му»), 3 («са»), 4 («си») были созвучны «Мусаси» —
|
||||
названию исторической области, где находится современный Токио.
|
||||
</p>
|
||||
<p class="lead">
|
||||
Здание напоминает пятиярусную пагоду, что хорошо сочетается с историческим районом Асакуса на другом берегу реки.
|
||||
Основание башни напоминает штатив; с высоты примерно 350 м она имеет цилиндрическую форму, позволяющую наслаждаться
|
||||
панорамными видами реки и города.
|
||||
</p>
|
||||
<p class="lead">
|
||||
Имеются две наблюдательные площадки: одна на высоте 350 м (вместимостью 2000 человек), другая на высоте 450 м
|
||||
(вместимостью 900 человек).
|
||||
</p>
|
||||
</div>
|
||||
<div class="col-md-3">
|
||||
<img src="images/image11.jpg">
|
||||
</div>
|
||||
</div>
|
||||
</main>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
7
labs/fake-lab4/js/bootstrap.bundle.min.js
vendored
|
Before Width: | Height: | Size: 38 KiB |
|
Before Width: | Height: | Size: 29 KiB |
|
Before Width: | Height: | Size: 29 KiB |
|
Before Width: | Height: | Size: 21 KiB |
|
Before Width: | Height: | Size: 40 KiB |
|
Before Width: | Height: | Size: 37 KiB |
@@ -1,23 +0,0 @@
|
||||
.main-block{
|
||||
margin: auto;
|
||||
width: 90%;
|
||||
background-color: lightgreen;
|
||||
}
|
||||
|
||||
.info-block{
|
||||
display: inline-block;
|
||||
margin:15px;
|
||||
width: 180px;
|
||||
}
|
||||
|
||||
.info-block-header{
|
||||
padding: 5px;
|
||||
background-color: white;
|
||||
display: inline-block;
|
||||
font-weight: bold;
|
||||
}
|
||||
.info-block-text{
|
||||
padding: 5px;
|
||||
|
||||
background-color: white;
|
||||
}
|
||||
@@ -1,42 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>
|
||||
Lab 2
|
||||
</title>
|
||||
<link rel="stylesheet" href="./lab2.css">
|
||||
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div class="main-block">
|
||||
<div class="info-block">
|
||||
<div class="info-block-header">C</div>
|
||||
<div class="info-block-text">разработан в 1969–1973 годах сотрудником Bell Labs Деннисом Ритчи.</div>
|
||||
</div>
|
||||
<div class="info-block">
|
||||
<div class="info-block-header">JavaScript </div>
|
||||
<div class="info-block-text">разработан в 1996 году, автор - американский программист Брендан Айк.</div>
|
||||
</div>
|
||||
<div class="info-block">
|
||||
<div class="info-block-header">Prolog </div>
|
||||
<div class="info-block-text">разработан в 1972 году, автор - французский программист Ален Колмероэ.</div>
|
||||
</div>
|
||||
<div class="info-block">
|
||||
<div class="info-block-header">Python </div>
|
||||
<div class="info-block-text">создан в 1989–1991 годах голландским программистом Гвидо ван Россумом.</div>
|
||||
</div>
|
||||
<div class="info-block">
|
||||
<div class="info-block-header">Java </div>
|
||||
<div class="info-block-text">разработан в 1990–1996 годах канадским программистом Джеймсом Гослингом.</div>
|
||||
</div>
|
||||
<div class="info-block">
|
||||
<div class="info-block-header">Ruby </div>
|
||||
<div class="info-block-text">разработан в 1993-1995 годах, автор - японский программист Юкихиро Мацумото.</div>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
</body>
|
||||
@@ -1,55 +0,0 @@
|
||||
h3{
|
||||
text-align: center;
|
||||
margin: 1vh;
|
||||
}
|
||||
|
||||
.content{
|
||||
background-color: lightgreen;
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
flex-wrap: nowrap;
|
||||
padding:10px;
|
||||
}
|
||||
|
||||
.topic > b{
|
||||
display: block;
|
||||
width: 40%;
|
||||
}
|
||||
.topic * {
|
||||
display: inline-block;
|
||||
}
|
||||
.content :first-child b, .content :first-child a{
|
||||
background-color: lightgreen;
|
||||
}
|
||||
|
||||
.topic{
|
||||
/* width:calc(50%-10px); */
|
||||
padding:5px 10px;
|
||||
margin: 10px ;
|
||||
background-color: white;
|
||||
}
|
||||
@media (max-width:800px) {
|
||||
.content{
|
||||
flex-direction: column;
|
||||
}
|
||||
}
|
||||
|
||||
/* grid part */
|
||||
|
||||
p{
|
||||
margin: 5px auto;
|
||||
max-width: 600px;
|
||||
display: grid;
|
||||
grid-template-rows: 1fr 1fr;
|
||||
grid-template-columns: 1fr 1fr;
|
||||
grid-gap: 5px;
|
||||
}
|
||||
p > a{
|
||||
background-color: lightgray;
|
||||
text-decoration: none;
|
||||
color: black;
|
||||
text-align: center;
|
||||
}
|
||||
p> :first-child{
|
||||
background-color: lightgreen;
|
||||
}
|
||||
@@ -1,34 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>
|
||||
Lab 3
|
||||
</title>
|
||||
<link rel="stylesheet" href="./lab3.css">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<h3>Языки программирования</h3>
|
||||
<p>
|
||||
<a href="#">Python</a>
|
||||
<a href="#">C</a>
|
||||
<a href="#">Java</a>
|
||||
<a href="#">JavaScript</a>
|
||||
</p>
|
||||
<div class="content">
|
||||
<div class="topic">
|
||||
<b>Python</b> создан в 1989–1991 годах голландским программистом <a href="#"> Гвидо ван Россумом</a>.
|
||||
</div>
|
||||
<div class="topic">
|
||||
<b>C</b> разработан в 1969–1973 годах сотрудником Bell Labs <a href="#"> Деннисом Ритчи</a>.
|
||||
</div>
|
||||
<div class="topic">
|
||||
<b>Java</b> разработан в 1990–1996 годах канадским программистом <a href="#"> Джеймсом Гослингом</a>.
|
||||
</div>
|
||||
<div class="topic">
|
||||
<b>JavaScript</b> разработан в 1996 году, автор - американский программист <a href="#">Брендан Айк</a>.
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
6
labs/lab4/css/bootstrap.min.css
vendored
|
Before Width: | Height: | Size: 38 KiB |
|
Before Width: | Height: | Size: 29 KiB |
|
Before Width: | Height: | Size: 29 KiB |
|
Before Width: | Height: | Size: 21 KiB |
|
Before Width: | Height: | Size: 40 KiB |
|
Before Width: | Height: | Size: 37 KiB |
@@ -1,99 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="ru">
|
||||
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<title>Лабораторная работа Bootstrap</title>
|
||||
<link href="css/bootstrap.min.css" rel="stylesheet">
|
||||
<script src="js/bootstrap.bundle.min.js"></script>
|
||||
<style>
|
||||
.lead {
|
||||
text-align: justify;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
|
||||
|
||||
|
||||
<body class="container">
|
||||
|
||||
<div class="row bg-lg-light justify-content-center">
|
||||
<div class="col-sm-12 col-md-6 col-xl-4 p-4 text-center">
|
||||
<h3 class="bg-light d-sm-block d-lg-inline my-0 p-2">
|
||||
JavaScript
|
||||
</h3>
|
||||
<div class="bg-light d-lg-flex align-self-center">
|
||||
<p class="lead px-2 m-0">
|
||||
разработан в 1996 году, автор - американский программист Брендан Айк.
|
||||
</p>
|
||||
<img src="images/javascript.jpg" class="d-block m-auto w-50">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row bg-lg-light justify-content-center">
|
||||
<div class="col-sm-12 col-md-6 col-xl-4 p-4 text-center">
|
||||
<h3 class="bg-light d-sm-block d-lg-inline my-0 p-2">
|
||||
Java
|
||||
</h3>
|
||||
<div class="bg-light d-lg-flex align-self-center">
|
||||
<p class="lead px-2 m-0"></p>
|
||||
разработан в 1990–1996 годах канадским программистом Джеймсом Гослингом.
|
||||
</p>
|
||||
<img src="images/java.jpg" class="d-block m-auto w-50">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-sm-12 col-md-6 col-xl-4 p-4 text-center">
|
||||
<h3 class="bg-light d-sm-block d-lg-inline my-0 p-2">
|
||||
C
|
||||
</h3>
|
||||
<div class="bg-light d-lg-flex align-self-center">
|
||||
<p class="lead px-2 m-0">
|
||||
разработан в 1969–1973 годах сотрудником Bell Labs Деннисом Ритчи.
|
||||
</p>
|
||||
<img src="images/c.jpg" class="d-block m-auto w-50">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row bg-lg-light justify-content-center">
|
||||
<div class="col-sm-12 col-md-6 col-xl-4 p-4 text-center">
|
||||
<h3 class="bg-light d-sm-block d-lg-inline my-0 p-2">
|
||||
Prolog
|
||||
</h3>
|
||||
<div class="bg-light d-lg-flex align-self-center">
|
||||
<p class="lead px-2 m-0">
|
||||
разработан в 1972 году, автор - французский программист Ален Колмероэ.
|
||||
</p>
|
||||
<img src="images/prolog.jpg" class="d-block m-auto w-50">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-sm-12 col-md-6 col-xl-4 p-4 text-center">
|
||||
<h3 class="bg-light d-sm-block d-lg-inline my-0 p-2">
|
||||
Python
|
||||
</h3>
|
||||
<div class="bg-light d-lg-flex align-self-center">
|
||||
<p class="lead px-2 m-0">
|
||||
создан в 1989–1991 годах голландским программистом Гвидо ван Россумом.
|
||||
</p>
|
||||
<img src="images/python.jpg" class="d-block m-auto w-50">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-sm-12 col-md-6 col-xl-4 p-4 text-center">
|
||||
<h3 class="bg-light d-sm-block d-lg-inline my-0 p-2">
|
||||
Ruby
|
||||
</h3>
|
||||
<div class="bg-light d-lg-flex align-self-center">
|
||||
<p class="lead px-2 m-0">
|
||||
разработан в 1993-1995 годах, автор - японский программист Юкихиро Мацумото.
|
||||
</p>
|
||||
<img src="images/ruby.jpg" class="d-block m-auto w-50">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
7
labs/lab4/js/bootstrap.bundle.min.js
vendored
1
labs/lab5/.gitignore
vendored
@@ -1 +0,0 @@
|
||||
node_modules
|
||||
6695
labs/lab5/package-lock.json
generated
@@ -1,30 +0,0 @@
|
||||
{
|
||||
"name": "template_pug",
|
||||
"version": "1.0.0",
|
||||
"description": "",
|
||||
"main": "index.js",
|
||||
"scripts": {
|
||||
"build": "webpack --mode production",
|
||||
"serve": "webpack serve --open --mode development",
|
||||
"dev": "webpack --mode development",
|
||||
"test": "echo \"Error: no test specified\" && exit 1"
|
||||
},
|
||||
"keywords": [],
|
||||
"author": "",
|
||||
"license": "ISC",
|
||||
"devDependencies": {
|
||||
"chokidar": "^4.0.3",
|
||||
"css-loader": "^6.8.1",
|
||||
"filemanager-webpack-plugin": "^8.0.0",
|
||||
"glob": "^11.0.3",
|
||||
"html-webpack-plugin": "^5.5.3",
|
||||
"pug": "^2.0.4",
|
||||
"pug-loader": "^2.4.0",
|
||||
"style-loader": "^3.3.3",
|
||||
"stylus": "^0.61.0",
|
||||
"stylus-loader": "^7.1.3",
|
||||
"webpack": "^5.89.0",
|
||||
"webpack-cli": "^5.1.4",
|
||||
"webpack-dev-server": "^4.15.1"
|
||||
}
|
||||
}
|
||||
@@ -1,36 +0,0 @@
|
||||
block variables
|
||||
- var title = 'Самые высокие здания и сооружения'
|
||||
-
|
||||
var dictMenu = {'Главная': 'index.html',
|
||||
'Небоскребы' : "#",
|
||||
'Башни': "#",
|
||||
'Список': "#"
|
||||
}
|
||||
|
||||
- var listImages = ['image1.jpg', 'image2.jpg', 'image3.jpg', 'image4.jpg', 'image5.jpg']
|
||||
|
||||
-
|
||||
var listSections = [
|
||||
{'header' : 'Бурдж-Халифа в Дубае, ОАЭ',
|
||||
'image' : 'image7.jpg',
|
||||
'text' : 'Небоскрёб высотой 828 метров, самое высокое сооружение в мире. Форма здания напоминает сталагмит.'
|
||||
},
|
||||
{'header' : 'Токийское небесное дерево, Япония',
|
||||
'image' : 'image6.jpg',
|
||||
'text' : 'Телевизионная башня в районе Сумида самая высокая среди телебашен мира. Высота телебашни вместе с антенной составляет 634 метра.'
|
||||
},
|
||||
{'header' : 'CN Tower, Канада',
|
||||
'image' : 'image8.jpg',
|
||||
'text' : 'Си-Эн Тауэр — самое высокое свободно стоящее сооружение в мире с 1976 по 2007 год. Его высота составляет 553,33 метра.'
|
||||
}
|
||||
]
|
||||
-
|
||||
var structures = [
|
||||
{
|
||||
menuItem: "Ворота Запада, США",
|
||||
pict: "image1_big.jpg",
|
||||
firstP: `Арка в Сент-Луисе, также известная под именем «Врата на запад» — мемориал, являющийся частью Джефферсоновского национального экспансиального мемориала, а также визитной карточкой Сент-Луиса, штат Миссури, США.`,
|
||||
secondP: `Арка была спроектирована финско-американским архитектором Ээро Саариненом в 1947 году. Её высота 192 метра в самой высокой точке, ширина её основания также 192 метра.
|
||||
Таким образом арка является самым высоким памятником на территории США. Её строительство началось 12 февраля 1963 года и было закончено 28 октября 1965 года. Памятник открылся для посетителей 24 июля 1967 года.`
|
||||
}
|
||||
]
|
||||
@@ -1,2 +0,0 @@
|
||||
h2= 'Hello World!'
|
||||
img(src= require("../images/img1.jpg"))
|
||||
@@ -1,20 +0,0 @@
|
||||
include ../components/data.pug
|
||||
|
||||
mixin createMenu(menu, active)
|
||||
each value, key in menu
|
||||
if active == key
|
||||
a.active(href= value)= key
|
||||
else
|
||||
a(href= value)= key
|
||||
|
||||
mixin createMenuBuild(menu, active)
|
||||
each value, key in menu
|
||||
a(href= value)= key
|
||||
a.active(href= "")= active
|
||||
mixin createSection()
|
||||
each item in listSections
|
||||
section
|
||||
h3= item.header
|
||||
img(src= require("../images/" + item.image))
|
||||
p= item.text
|
||||
a(href="#") …
|
||||
|
Before Width: | Height: | Size: 16 KiB |
|
Before Width: | Height: | Size: 162 KiB |
|
Before Width: | Height: | Size: 17 KiB |
|
Before Width: | Height: | Size: 15 KiB |
|
Before Width: | Height: | Size: 35 KiB |
|
Before Width: | Height: | Size: 11 KiB |
|
Before Width: | Height: | Size: 27 KiB |
|
Before Width: | Height: | Size: 14 KiB |
|
Before Width: | Height: | Size: 28 KiB |
@@ -1 +0,0 @@
|
||||
import './styles/main.styl'
|
||||
@@ -1,19 +0,0 @@
|
||||
extends template
|
||||
|
||||
block nav
|
||||
title #{structures[0].menuItem}
|
||||
nav
|
||||
+createMenuBuild(dictMenu, structures[0].menuItem)
|
||||
|
||||
block header
|
||||
h2= structures[0].menuItem
|
||||
|
||||
block content
|
||||
|
||||
img.big(src= require("../images/" + structures[0].pict))
|
||||
|
||||
section
|
||||
p= structures[0].firstP
|
||||
p= structures[0].secondP
|
||||
|
||||
|
||||
@@ -1,19 +0,0 @@
|
||||
extends template
|
||||
|
||||
block nav
|
||||
nav
|
||||
+createMenu(dictMenu, 'Главная')
|
||||
|
||||
block content
|
||||
div.images
|
||||
each pict in listImages
|
||||
a(href= "building.html")
|
||||
img(src= require("../images/" + pict))
|
||||
|
||||
article
|
||||
each item in listSections
|
||||
section
|
||||
h3= item.header
|
||||
img(src= require("../images/" + item.image))
|
||||
p= item.text
|
||||
a(href="#") …
|
||||
@@ -1,18 +0,0 @@
|
||||
include ../components/mixin.pug
|
||||
include ../components/data.pug
|
||||
|
||||
doctype html
|
||||
html(lang="ru")
|
||||
head
|
||||
title #{title}
|
||||
body
|
||||
block header
|
||||
h2= title
|
||||
|
||||
block nav
|
||||
|
||||
block content
|
||||
|
||||
block footer
|
||||
footer
|
||||
h4 © Пример html-страницы
|
||||
@@ -1,84 +0,0 @@
|
||||
colorText = #6f6d6d
|
||||
|
||||
back(size)
|
||||
background-color #f1f1f1
|
||||
box-shadow 4px 5px 10px rgba(0, 0, 0, 0.4)
|
||||
padding: size + "%"
|
||||
margin 0 0 1% 0
|
||||
|
||||
html
|
||||
color colorText
|
||||
|
||||
nav
|
||||
back(0)
|
||||
text-align right
|
||||
|
||||
& a
|
||||
display inline-block
|
||||
padding 1%
|
||||
color colorText
|
||||
text-decoration: none
|
||||
|
||||
&:hover
|
||||
&.active
|
||||
background-color #f87777
|
||||
color #f8f8f8
|
||||
|
||||
div.images
|
||||
display grid
|
||||
grid-template-columns repeat(5, 1fr)
|
||||
grid-gap 0.5%
|
||||
back(1)
|
||||
|
||||
& img
|
||||
width: 100%
|
||||
@media (max-width: 600px)
|
||||
grid-template-rows repeat(5, 1fr)
|
||||
grid-template-columns 1fr
|
||||
& img
|
||||
width 80%
|
||||
margin auto
|
||||
article
|
||||
width 80%
|
||||
margin auto
|
||||
display grid
|
||||
grid-template-columns repeat(3, 1fr)
|
||||
grid-gap 4%
|
||||
@media (max-width: 600px)
|
||||
grid-template-rows repeat(3, 1fr)
|
||||
grid-template-columns 1fr
|
||||
& section
|
||||
display grid
|
||||
grid-template-columns 1fr 2fr
|
||||
grid-gap 2%
|
||||
align-items center
|
||||
back(2)
|
||||
|
||||
& h3
|
||||
grid-column 1/3
|
||||
margin 0
|
||||
text-align center
|
||||
|
||||
& img
|
||||
width: 100%
|
||||
|
||||
|
||||
footer
|
||||
background-color colorText
|
||||
color white
|
||||
@media (max-width: 600px)
|
||||
margin 3vh 0
|
||||
& h4
|
||||
padding:10px
|
||||
|
||||
.big
|
||||
width 50vw
|
||||
@media (max-width: 600px)
|
||||
width 100vw
|
||||
|
||||
section
|
||||
display grid
|
||||
grid-template-columns 1fr 1fr
|
||||
|
||||
@media (max-width: 600px)
|
||||
grid-template-columns 1fr
|
||||
@@ -1,69 +0,0 @@
|
||||
const HtmlWebpackPlugin = require("html-webpack-plugin");
|
||||
const FileManagerPlugin = require("filemanager-webpack-plugin");
|
||||
const path = require("path");
|
||||
const fs = require("fs");
|
||||
|
||||
const pagesDir = path.join(__dirname, "src", "pages");
|
||||
const pages = fs.readdirSync(pagesDir).filter(file => file.endsWith(".pug"));
|
||||
|
||||
module.exports = {
|
||||
output: {
|
||||
path: path.join(__dirname, "dist"),
|
||||
filename: "index.[contenthash].js",
|
||||
assetModuleFilename: path.join("images", "[name].[contenthash][ext]"),
|
||||
},
|
||||
entry: path.join(__dirname, "src", "index.js"),
|
||||
module: {
|
||||
rules: [
|
||||
{
|
||||
test: /\.pug$/,
|
||||
loader: "pug-loader",
|
||||
},
|
||||
{
|
||||
test: /\.(png|jpg|jpeg|gif)$/i,
|
||||
type: "asset/resource",
|
||||
},
|
||||
{
|
||||
test: /\.svg$/,
|
||||
type: "asset/resource",
|
||||
generator: {
|
||||
filename: path.join("icons", "[name].[contenthash][ext]"),
|
||||
},
|
||||
},
|
||||
{
|
||||
test: /\.styl$/,
|
||||
use: [
|
||||
{
|
||||
loader: "style-loader",
|
||||
},
|
||||
{
|
||||
loader: "css-loader",
|
||||
},
|
||||
{
|
||||
loader: "stylus-loader",
|
||||
},
|
||||
],
|
||||
},
|
||||
],
|
||||
},
|
||||
plugins: [
|
||||
...pages.map(
|
||||
(page) =>
|
||||
new HtmlWebpackPlugin({
|
||||
template: path.join(pagesDir, page),
|
||||
filename: page.replace(".pug", ".html"),
|
||||
})
|
||||
),
|
||||
new FileManagerPlugin({
|
||||
events: {
|
||||
onStart: {
|
||||
delete: ["dist"],
|
||||
},
|
||||
},
|
||||
}),
|
||||
],
|
||||
devServer: {
|
||||
watchFiles: path.join(__dirname, "src"),
|
||||
port: 9000,
|
||||
},
|
||||
};
|
||||
@@ -1,19 +0,0 @@
|
||||
function areNumbersEqual(num1,num2,percision){
|
||||
return Math.abs(num1 - num2) < percision;
|
||||
}
|
||||
|
||||
func=(...args) => {
|
||||
const percision=0.1E-2;
|
||||
args.sort();
|
||||
let out = "";
|
||||
let lastElem = null;
|
||||
for (let i = 0; i < args.length-1; i++){
|
||||
if (areNumbersEqual(args[i],args[i+1],percision) && (!areNumbersEqual(args[i],lastElem,percision) || lastElem === null)){
|
||||
lastElem = args[i];
|
||||
out += lastElem+" ";
|
||||
}
|
||||
}
|
||||
return out;
|
||||
}
|
||||
|
||||
console.log(func(-0.0009111,0,-0.0009111,-0.009111,-0,1.1,1.101,2.0001,2))
|
||||
0
last_git_commits.csv
Normal file
|
|
@@ -1,17 +0,0 @@
|
||||
|
||||
|
||||
function updateDict(dict, update) {
|
||||
let key, value = update.entries()[0];
|
||||
dict[key] = value + (key in dict) ? dict[key] : 0;
|
||||
}
|
||||
|
||||
|
||||
|
||||
aboba={"asd":123}
|
||||
upd={"asd":123}
|
||||
upd1={"asd":123}
|
||||
|
||||
updateDict(aboba,upd1)
|
||||
console.log(aboba)
|
||||
updateDict(aboba,upd1)
|
||||
console.log(aboba)
|
||||
0
opencv_details.html
Normal file
6692
package-lock.json
generated
30
package.json
@@ -1,30 +0,0 @@
|
||||
{
|
||||
"name": "template_pug",
|
||||
"version": "1.0.0",
|
||||
"description": "",
|
||||
"main": "index.js",
|
||||
"scripts": {
|
||||
"build": "webpack --mode production",
|
||||
"serve": "webpack serve --open --mode development",
|
||||
"dev": "webpack --mode development",
|
||||
"test": "echo \"Error: no test specified\" && exit 1"
|
||||
},
|
||||
"keywords": [],
|
||||
"author": "",
|
||||
"license": "ISC",
|
||||
"devDependencies": {
|
||||
"chokidar": "^4.0.3",
|
||||
"css-loader": "^6.8.1",
|
||||
"filemanager-webpack-plugin": "^8.0.0",
|
||||
"glob": "^11.0.3",
|
||||
"html-webpack-plugin": "^5.5.3",
|
||||
"pug": "^2.0.4",
|
||||
"pug-loader": "^2.4.0",
|
||||
"style-loader": "^3.3.3",
|
||||
"stylus": "^0.61.0",
|
||||
"stylus-loader": "^7.1.3",
|
||||
"webpack": "^5.89.0",
|
||||
"webpack-cli": "^5.1.4",
|
||||
"webpack-dev-server": "^4.15.1"
|
||||
}
|
||||
}
|
||||
0
photography_details.html
Normal file
@@ -1,306 +0,0 @@
|
||||
block variables
|
||||
-
|
||||
var navbarItems = {
|
||||
Home: './index.html',
|
||||
Embedded: './embeded_details.html',
|
||||
OpenCV: './opencv_details.html',
|
||||
Photography: './photography-details.html',
|
||||
Table: './table.html',
|
||||
Institute: './images/institute.png'
|
||||
};
|
||||
|
||||
var smallCards = [
|
||||
{
|
||||
header: 'Заголовок',
|
||||
text: '3D printers are versatile tools used for creating prototypes, custom parts, and artistic designs. They work by layering materials.',
|
||||
image: require('../images/16x10/3d-printer.jpeg'),
|
||||
imageAlt: '3D Printer',
|
||||
link: '#',
|
||||
},
|
||||
{
|
||||
header: 'BLHeli ESCs',
|
||||
text: 'BLHeli ESCs are electronic speed controllers designed for drones, offering smooth and precise motor control.',
|
||||
image: require('../images/16x10/blheli-esc.jpeg'),
|
||||
imageAlt: 'BLHeli ESC',
|
||||
link: '#',
|
||||
},
|
||||
{
|
||||
header: 'Raspberry Pi Nano',
|
||||
text: 'Raspberry Pi Nano is a compact computer ideal for learning, prototyping, and IoT projects. It is highly energy-efficient.',
|
||||
image: require('../images/16x10/rpi-nano.jpeg'),
|
||||
imageAlt: 'Raspberry Pi Nano',
|
||||
link: '#',
|
||||
},
|
||||
{
|
||||
header: 'Smart Thermostats',
|
||||
text: 'Smart thermostats help regulate home temperatures efficiently, saving energy and enhancing comfort with automation.',
|
||||
image: require('../images/16x10/thermostat.jpeg'),
|
||||
imageAlt: 'Smart Thermostat',
|
||||
link: '#',
|
||||
}
|
||||
];
|
||||
|
||||
var galleryImages= [
|
||||
{ src: require('../images/sqarucos.png'), alt: 'ESP32'},
|
||||
{ src: require('../images/sqstm32.png'), alt: 'Arduino'},
|
||||
{ src: require('../images/sqesp32.png'), alt: 'STM32'}
|
||||
];
|
||||
|
||||
var locationFilters = [
|
||||
{ id: 'loc_kitchen', value: 'Kitchen', label: 'Kitchen' },
|
||||
{ id: 'loc_living', value: 'Living Room', label: 'Living Room' },
|
||||
{ id: 'loc_balcony', value: 'Balcony', label: 'Balcony' },
|
||||
{ id: 'loc_bedroom', value: 'Bedroom', label: 'Bedroom' }
|
||||
];
|
||||
|
||||
var sensorTypeFilters = [
|
||||
{ id: 'type_xiaomi', value: 'Xiaomi', label: 'Xiaomi' },
|
||||
{ id: 'type_bmp220', value: 'Bmp220', label: 'Bmp220' },
|
||||
{ id: 'type_scd30', value: 'Scd30(Internal)', label: 'Scd30(Internal)' },
|
||||
{ id: 'type_bmp280', value: 'Bmp280', label: 'Bmp280' }
|
||||
];
|
||||
|
||||
var sortOptions = [
|
||||
{ value: '', label: '-- None --' },
|
||||
{ value: 'SensorID', label: 'SensorID' },
|
||||
{ value: 'Timestamp', label: 'Time' },
|
||||
{ value: 'BatteryLevel', label: 'BatteryLevel' },
|
||||
{ value: 'Temperature', label: 'Temperature' },
|
||||
{ value: 'Humidity', label: 'Humidity' }
|
||||
];
|
||||
|
||||
var axisOptions = [
|
||||
{ id: 'x_time', value: 'Time', label: 'Time', checked: true },
|
||||
{ id: 'x_battery', value: 'BatteryLevel', label: 'BatteryLevel', checked: false },
|
||||
{ id: 'x_temperature', value: 'Temperature', label: 'Temperature', checked: false },
|
||||
{ id: 'x_humidity', value: 'Humidity', label: 'Humidity', checked: false }
|
||||
];
|
||||
|
||||
var valueOptions = [
|
||||
{ id: 'val_temperature', value: 'AverageTemperature', label: 'Average Temperature', checked: true },
|
||||
{ id: 'val_humidity', value: 'Humidity', label: 'Average Humidity', checked: false },
|
||||
{ id: 'val_battery', value: 'BatteryLevel', label: 'Average BatteryLevel', checked: false }
|
||||
]
|
||||
|
||||
var sensorData = [
|
||||
{
|
||||
sensorId: 'TEMP-001',
|
||||
location: 'Balcony',
|
||||
timestamp: '2025-10-03T03:41:50Z',
|
||||
temperature: 19.4,
|
||||
tempDifference: -0.2,
|
||||
sensorType: 'Bmp220',
|
||||
batteryLevel: 95,
|
||||
humidity: 38.1,
|
||||
lastCalibrationDate: '2025-07-26'
|
||||
},
|
||||
{
|
||||
sensorId: 'TEMP-003',
|
||||
location: 'Bedroom',
|
||||
timestamp: '2025-10-03T03:42:46Z',
|
||||
temperature: 18.2,
|
||||
tempDifference: -0.1,
|
||||
sensorType: 'Xiaomi',
|
||||
batteryLevel: 75,
|
||||
humidity: 45.5,
|
||||
lastCalibrationDate: '2025-07-21'
|
||||
},
|
||||
{
|
||||
sensorId: 'TEMP-004',
|
||||
location: 'Balcony',
|
||||
timestamp: '2025-10-03T03:43:48Z',
|
||||
temperature: 24.1,
|
||||
tempDifference: 0.1,
|
||||
sensorType: 'Xiaomi',
|
||||
batteryLevel: 72,
|
||||
humidity: 50.5,
|
||||
lastCalibrationDate: '2025-08-30'
|
||||
},
|
||||
{
|
||||
sensorId: 'TEMP-001',
|
||||
location: 'Balcony',
|
||||
timestamp: '2025-10-03T03:44:34Z',
|
||||
temperature: 19.1,
|
||||
tempDifference: -0.3,
|
||||
sensorType: 'Bmp220',
|
||||
batteryLevel: 95,
|
||||
humidity: 56.5,
|
||||
lastCalibrationDate: '2025-07-26'
|
||||
},
|
||||
{
|
||||
sensorId: 'TEMP-006',
|
||||
location: 'Kitchen',
|
||||
timestamp: '2025-10-03T03:45:46Z',
|
||||
temperature: 22.8,
|
||||
tempDifference: 0.0,
|
||||
sensorType: 'Scd30(Internal)',
|
||||
batteryLevel: 80,
|
||||
humidity: 41.4,
|
||||
lastCalibrationDate: '2025-09-10'
|
||||
},
|
||||
{
|
||||
sensorId: 'TEMP-010',
|
||||
location: 'Balcony',
|
||||
timestamp: '2025-10-03T03:46:18Z',
|
||||
temperature: 21.7,
|
||||
tempDifference: 0.5,
|
||||
sensorType: 'Scd30(Internal)',
|
||||
batteryLevel: 79,
|
||||
humidity: 59.8,
|
||||
lastCalibrationDate: '2025-08-07'
|
||||
},
|
||||
{
|
||||
sensorId: 'TEMP-006',
|
||||
location: 'Balcony',
|
||||
timestamp: '2025-10-03T03:47:05Z',
|
||||
temperature: 22.7,
|
||||
tempDifference: -0.1,
|
||||
sensorType: 'Scd30(Internal)',
|
||||
batteryLevel: 80,
|
||||
humidity: 36.1,
|
||||
lastCalibrationDate: '2025-09-10'
|
||||
},
|
||||
{
|
||||
sensorId: 'TEMP-006',
|
||||
location: 'Bedroom',
|
||||
timestamp: '2025-10-03T03:48:13Z',
|
||||
temperature: 22.9,
|
||||
tempDifference: 0.2,
|
||||
sensorType: 'Scd30(Internal)',
|
||||
batteryLevel: 80,
|
||||
humidity: 56.1,
|
||||
lastCalibrationDate: '2025-09-10'
|
||||
},
|
||||
{
|
||||
sensorId: 'TEMP-005',
|
||||
location: 'Living Room',
|
||||
timestamp: '2025-10-03T03:49:03Z',
|
||||
temperature: 24.4,
|
||||
tempDifference: 0.4,
|
||||
sensorType: 'Bmp180',
|
||||
batteryLevel: 91,
|
||||
humidity: 30.1,
|
||||
lastCalibrationDate: '2025-08-07'
|
||||
},
|
||||
{
|
||||
sensorId: 'TEMP-001',
|
||||
location: 'Kitchen',
|
||||
timestamp: '2025-10-03T03:50:24Z',
|
||||
temperature: 19.1,
|
||||
tempDifference: 0.0,
|
||||
sensorType: 'Bmp220',
|
||||
batteryLevel: 95,
|
||||
humidity: 64.8,
|
||||
lastCalibrationDate: '2025-07-26'
|
||||
},
|
||||
{
|
||||
sensorId: 'TEMP-008',
|
||||
location: 'Living Room',
|
||||
timestamp: '2025-10-03T03:51:12Z',
|
||||
temperature: 21.9,
|
||||
tempDifference: -0.1,
|
||||
sensorType: 'Scd30(Internal)',
|
||||
batteryLevel: 92,
|
||||
humidity: 36.0,
|
||||
lastCalibrationDate: '2025-08-02'
|
||||
},
|
||||
{
|
||||
sensorId: 'TEMP-009',
|
||||
location: 'Balcony',
|
||||
timestamp: '2025-10-03T03:51:46Z',
|
||||
temperature: 22.3,
|
||||
tempDifference: 0.0,
|
||||
sensorType: 'Xiaomi',
|
||||
batteryLevel: 76,
|
||||
humidity: 74.0,
|
||||
lastCalibrationDate: '2025-09-17'
|
||||
},
|
||||
{
|
||||
sensorId: 'TEMP-003',
|
||||
location: 'Kitchen',
|
||||
timestamp: '2025-10-03T03:52:23Z',
|
||||
temperature: 18.4,
|
||||
tempDifference: 0.2,
|
||||
sensorType: 'Xiaomi',
|
||||
batteryLevel: 75,
|
||||
humidity: 45.2,
|
||||
lastCalibrationDate: '2025-07-21'
|
||||
},
|
||||
{
|
||||
sensorId: 'TEMP-010',
|
||||
location: 'Living Room',
|
||||
timestamp: '2025-10-03T03:53:44Z',
|
||||
temperature: 21.8,
|
||||
tempDifference: 0.1,
|
||||
sensorType: 'Scd30(Internal)',
|
||||
batteryLevel: 79,
|
||||
humidity: 36.3,
|
||||
lastCalibrationDate: '2025-08-07'
|
||||
},
|
||||
{
|
||||
sensorId: 'TEMP-001',
|
||||
location: 'Kitchen',
|
||||
timestamp: '2025-10-03T03:54:46Z',
|
||||
temperature: 18.7,
|
||||
tempDifference: -0.4,
|
||||
sensorType: 'Bmp220',
|
||||
batteryLevel: 95,
|
||||
humidity: 44.3,
|
||||
lastCalibrationDate: '2025-07-26'
|
||||
},
|
||||
{
|
||||
sensorId: 'TEMP-006',
|
||||
location: 'Bedroom',
|
||||
timestamp: '2025-10-03T03:55:24Z',
|
||||
temperature: 23.3,
|
||||
tempDifference: 0.4,
|
||||
sensorType: 'Scd30(Internal)',
|
||||
batteryLevel: 80,
|
||||
humidity: 55.9,
|
||||
lastCalibrationDate: '2025-09-10'
|
||||
},
|
||||
{
|
||||
sensorId: 'TEMP-002',
|
||||
location: 'Kitchen',
|
||||
timestamp: '2025-10-03T03:55:57Z',
|
||||
temperature: 17.7,
|
||||
tempDifference: -0.5,
|
||||
sensorType: 'Scd30(Internal)',
|
||||
batteryLevel: 93,
|
||||
humidity: 70.2,
|
||||
lastCalibrationDate: '2025-08-30'
|
||||
},
|
||||
{
|
||||
sensorId: 'TEMP-002',
|
||||
location: 'Balcony',
|
||||
timestamp: '2025-10-03T03:57:05Z',
|
||||
temperature: 17.4,
|
||||
tempDifference: -0.3,
|
||||
sensorType: 'Scd30(Internal)',
|
||||
batteryLevel: 93,
|
||||
humidity: 66.7,
|
||||
lastCalibrationDate: '2025-08-30'
|
||||
},
|
||||
{
|
||||
sensorId: 'TEMP-009',
|
||||
location: 'Living Room',
|
||||
timestamp: '2025-10-03T03:58:28Z',
|
||||
temperature: 22.6,
|
||||
tempDifference: 0.3,
|
||||
sensorType: 'Xiaomi',
|
||||
batteryLevel: 76,
|
||||
humidity: 56.4,
|
||||
lastCalibrationDate: '2025-09-17'
|
||||
},
|
||||
{
|
||||
sensorId: 'TEMP-004',
|
||||
location: 'Bedroom',
|
||||
timestamp: '2025-10-03T03:59:51Z',
|
||||
temperature: 24.3,
|
||||
tempDifference: 0.2,
|
||||
sensorType: 'Xiaomi',
|
||||
batteryLevel: 72,
|
||||
humidity: 47.3,
|
||||
lastCalibrationDate: '2025-08-30'
|
||||
}
|
||||
];
|
||||
@@ -1,24 +0,0 @@
|
||||
include mixins.pug
|
||||
|
||||
html
|
||||
head
|
||||
meta(charset="UTF-8")
|
||||
block title
|
||||
title Details Page
|
||||
body
|
||||
block navbar
|
||||
+navbarMixin("")
|
||||
|
||||
.details
|
||||
header.details__header
|
||||
block header
|
||||
h1 Default Header
|
||||
|
||||
.details__content
|
||||
.details__text
|
||||
block text
|
||||
p Default text content
|
||||
|
||||
.details__gallery
|
||||
block gallery
|
||||
p No images available
|
||||
@@ -1,158 +0,0 @@
|
||||
include data.pug
|
||||
|
||||
mixin navbarMixin(selectedItem)
|
||||
.navbar
|
||||
each navbarUrl,navbarName in navbarItems
|
||||
if navbarName == selectedItem
|
||||
a.navbar__link-wrapper(href=navbarUrl)
|
||||
.navbar__item.navbar__item_selected #{navbarName}
|
||||
else
|
||||
a.navbar__link-wrapper(href=navbarUrl)
|
||||
.navbar__item #{navbarName}
|
||||
|
||||
mixin infoCardsMinxin()
|
||||
each cardData in smallCards
|
||||
.small-card
|
||||
.small-card__content
|
||||
h3.small-card__header #{cardData.header}
|
||||
p.small-card__text #{cardData.text}
|
||||
a.small-card__link(href=cardData.link) Подробнее»
|
||||
.small-card__image
|
||||
img(src=cardData.image alt=cardData.imageAlt)
|
||||
|
||||
mixin galleryMixin()
|
||||
each img in galleryImages
|
||||
img.gallery__image(src=img.src alt=img.alt)
|
||||
|
||||
mixin filtersMixin()
|
||||
details.filters
|
||||
summary.filters__summary Filters
|
||||
form.filters__form
|
||||
fieldset.filters__fieldset
|
||||
.filter-group
|
||||
i.filter-group__label
|
||||
b Location
|
||||
br
|
||||
.filter-group__items
|
||||
each filter in locationFilters
|
||||
input.filter-group__checkbox(type="checkbox" id=filter.id name="location" value=filter.value)
|
||||
span #{filter.label}
|
||||
br
|
||||
|
||||
.filter-group
|
||||
i.filter-group__label
|
||||
b Sensor Type
|
||||
br
|
||||
.filter-group__items
|
||||
each filter in sensorTypeFilters
|
||||
input.filter-group__checkbox(type="checkbox" id=filter.id name="sensor_type" value=filter.value)
|
||||
span #{filter.label}
|
||||
br
|
||||
|
||||
.filter-group
|
||||
i.filter-group__label
|
||||
b Numeric Values
|
||||
br
|
||||
.filter-group__range
|
||||
span Temperature from:
|
||||
input.filter-group__input(type="number" name="temp_min" placeholder="20")
|
||||
span to:
|
||||
input.filter-group__input(type="number" name="temp_max" placeholder="30")
|
||||
br
|
||||
span Humidity from:
|
||||
input.filter-group__input(type="number" name="humidity_min" placeholder="40")
|
||||
span to:
|
||||
input.filter-group__input(type="number" name="humidity_max" placeholder="60")
|
||||
br
|
||||
|
||||
.filter-group
|
||||
i.filter-group__label
|
||||
b Device Specific Filters
|
||||
br
|
||||
.filter-group__items
|
||||
span Sensor Name:
|
||||
input.filter-group__input(type="text" name="sensor_name")
|
||||
br
|
||||
span Days Since Calibration (max):
|
||||
input.filter-group__input(type="number" name="calibration_days" placeholder="30")
|
||||
br
|
||||
|
||||
.filter-group
|
||||
i.filter-group__label
|
||||
b Measurement Period
|
||||
br
|
||||
.filter-group__dates
|
||||
span From:
|
||||
input.filter-group__input(type="date" name="date_from")
|
||||
br
|
||||
span To:
|
||||
input.filter-group__input(type="date" name="date_to")
|
||||
br
|
||||
|
||||
.filter-group__buttons
|
||||
input.filter-group__button.filter-group__button--submit(type="submit" value="Apply Filters")
|
||||
input.filter-group__button.filter-group__button--reset(type="reset" value="Reset Filters")
|
||||
|
||||
mixin sortLevel(level)
|
||||
.sort-level
|
||||
i.sort-level__label
|
||||
b Sort Level #{level}
|
||||
br
|
||||
label.sort-level__field-label(for=`sort${level}`) Field:
|
||||
select.sort-level__select(id=`sort${level}` name=`sort${level}`)
|
||||
each option in sortOptions
|
||||
option(value=option.value) #{option.label}
|
||||
label.sort-level__reverse-label(for=`sort${level}_reverse`)
|
||||
input.sort-level__checkbox(type="checkbox" id=`sort${level}_reverse` name=`sort${level}_reverse`)
|
||||
span Reverse
|
||||
br
|
||||
if level === '3'
|
||||
input.sort-level__submit(type="submit" value="Sort")
|
||||
else
|
||||
br
|
||||
|
||||
mixin sortingMixin()
|
||||
- const sortLevels = ['1', '2', '3'];
|
||||
details.sorting
|
||||
summary.sorting__summary Sortings
|
||||
form.sorting__form
|
||||
fieldset.sorting__fieldset
|
||||
each level in sortLevels
|
||||
+sortLevel(level)
|
||||
|
||||
mixin graphXOption(option)
|
||||
if option.checked
|
||||
input.axis-group__radio(type="radio" id=option.id name="x_axis" value=option.value checked)
|
||||
else
|
||||
input.axis-group__radio(type="radio" id=option.id name="x_axis" value=option.value)
|
||||
label.axis-group__option-label(for=option.id) #{option.label}
|
||||
br
|
||||
|
||||
mixin graphYOption(option)
|
||||
if option.checked
|
||||
input.values-group__checkbox(type="checkbox" id=option.id name="values" value=option.value checked)
|
||||
else
|
||||
input.values-group__checkbox(type="checkbox" id=option.id name="values" value=option.value)
|
||||
label.values-group__option-label(for=option.id) #{option.label}
|
||||
br
|
||||
|
||||
mixin graphMixin()
|
||||
details.graph
|
||||
summary.graph__summary Graph
|
||||
form.graph__form
|
||||
fieldset.graph__fieldset
|
||||
.axis-group
|
||||
i.axis-group__label
|
||||
b X axis
|
||||
br
|
||||
.axis-group__options
|
||||
each option in axisOptions
|
||||
+graphXOption(option)
|
||||
.values-group
|
||||
i.values-group__label
|
||||
b Values
|
||||
br
|
||||
.values-group__options
|
||||
each option in valueOptions
|
||||
+graphYOption(option)
|
||||
button.values-group__button(type="submit" id="build_graph" name="build_graph") Build
|
||||
|
Before Width: | Height: | Size: 198 KiB |
|
Before Width: | Height: | Size: 159 KiB |
|
Before Width: | Height: | Size: 106 KiB |
|
Before Width: | Height: | Size: 229 KiB |
|
Before Width: | Height: | Size: 22 KiB |
|
Before Width: | Height: | Size: 14 KiB |
|
Before Width: | Height: | Size: 17 KiB |
|
Before Width: | Height: | Size: 10 KiB |
|
Before Width: | Height: | Size: 2.3 MiB |
|
Before Width: | Height: | Size: 5.2 MiB |
|
Before Width: | Height: | Size: 99 KiB |
|
Before Width: | Height: | Size: 3.9 MiB |
|
Before Width: | Height: | Size: 4.4 MiB |
|
Before Width: | Height: | Size: 1.9 MiB |
|
Before Width: | Height: | Size: 65 KiB |
|
Before Width: | Height: | Size: 30 KiB |
|
Before Width: | Height: | Size: 53 KiB |
|
Before Width: | Height: | Size: 50 KiB |
@@ -1,3 +0,0 @@
|
||||
import './styles/index.styl'
|
||||
import './styles/details.styl'
|
||||
import './styles/table.styl'
|
||||
@@ -1,51 +0,0 @@
|
||||
include ../components/mixins.pug
|
||||
|
||||
-
|
||||
const infoBlockA = {
|
||||
header: "Embedded Systems",
|
||||
text: "Had a serval projects with different MCUs and wrote firmware for them. My main stack consists of Platformio+EspIdf or Arduino, also tried STM32 asdadas",
|
||||
description: "I love embeded development beceuse of autonomity of produced devices, the redices are not dependant on any other hardware and can work autunomously",
|
||||
img: require('../images/AQ_monitor.png'),
|
||||
imgAlt: "ESP32"
|
||||
}
|
||||
const infoBlockB = {
|
||||
header: "Embedded Systems",
|
||||
text: "Had a serval projects with different MCUs and wrote firmware for them. My main stack consists of Platformio+EspIdf or Arduino, also tried STM32",
|
||||
description: "I love embeded development device because of autonomity of produced devices, the devices are not dependant on any other hardware and can work autunomously or off the grid",
|
||||
img: require('../images/remote.jpeg'),
|
||||
imgAlt: "ESP32"
|
||||
}
|
||||
|
||||
html(lang="en")
|
||||
head
|
||||
meta(charset="UTF-8")
|
||||
title Portfolio
|
||||
|
||||
body
|
||||
+navbarMixin("Home")
|
||||
|
||||
.gallery
|
||||
+galleryMixin()
|
||||
|
||||
.main-container
|
||||
.main-container__content
|
||||
article.info-block
|
||||
h2.info-block__header #{infoBlockA.header}
|
||||
.info-block__container.info-block__container_layout-a
|
||||
p.info-block__text #{infoBlockA.text}
|
||||
.info-block__details
|
||||
p.info-block__description #{infoBlockA.description}
|
||||
a.info-block__link(href="#") More info
|
||||
img.info-block__image(src=infoBlockA.img alt=infoBlockA.imgAlt)
|
||||
|
||||
article.info-block
|
||||
h2.info-block__header #{infoBlockB.header}
|
||||
.info-block__container.info-block__container_layout-b
|
||||
p.info-block__text #{infoBlockB.text}
|
||||
img.info-block__image(src=infoBlockB.img alt=infoBlockB.imgAlt)
|
||||
.info-block__details
|
||||
p.info-block__description #{infoBlockB.description}
|
||||
a.info-block__link(href="./photography-details.html") More info
|
||||
|
||||
.sidebar
|
||||
+infoCardsMinxin()
|
||||
@@ -1,22 +0,0 @@
|
||||
extends ../components/details-template.pug
|
||||
|
||||
block title
|
||||
title Photography Portfolio - Details
|
||||
|
||||
block navbar
|
||||
+navbarMixin("Photography")
|
||||
|
||||
block header
|
||||
h1.details__title Photography
|
||||
p.details__description I prefer landscape photography.
|
||||
|
||||
block text
|
||||
p.details__text-content D3100 -> SLT A58.
|
||||
|
||||
block gallery
|
||||
.details__gallery-item
|
||||
img.details__gallery-image(src=require('../images/photos/image0.png') alt="Photography 1")
|
||||
.details__gallery-item
|
||||
img.details__gallery-image(src=require('../images/photos/image1.png') alt="Photography 2")
|
||||
.details__gallery-item
|
||||
img.details__gallery-image(src=require('../images/photos/image2.png') alt="Photography 3")
|
||||