Category: Blog

  • go-ski

    GOSKI

    모바일 스키 강습 플랫폼 GOSKI

    목차

    1. 서비스 소개
    2. 주요기능 소개
    3. 기술 스택
    4. 시스템 아키텍처
    5. 팀원 소개
    6. 프로젝트 일정
    7. 참고

    💡 서비스 소개

    검증된 개인 맞춤형 스키/보드 강습

    스키장에 처음왔는데 어떤 강습을 받아야할지 모른다면?
    GOSKI에서 검증받은 강사 분들께 맞춤 강습을 받을 수 있습니다!
    강습 이후에는 강사 분들로부터 받은 피드백을 통해 실력을 향상 시킬 수 있어요.

    효율적인 강습 팀과 강습 스케줄 관리

    GOSKI와 함께라면 팀 단위 및 개인 단위 스케줄을 최적으로 분배할 수 있습니다.
    보다 쉽고 간편하게 강습 스케줄을 관리해보세요!

    🖥️ 주요 기능 소개

    수강생

    로그인 / 리조트 선택

    로그인 리조트선택_날씨

    강습내역

    피드백 / 리뷰

    피드백 리뷰

    강사 프로필

    강사 프로필

    강습 예약 / 강습 취소

    강습예약 예약취소

    결제 내역

    결제내역

    알림 / 실시간 쪽지

    알림 쪽지 보내기

    알림 설정

    알림 설정

    강사

    로그인 화면

    강사 로그인

    일정 확인 / 실시간 강습 예약

    강습 내역 실시간 강습 예약

    알림

    알림

    강습 내역 / 피드백 작성

    강습 내역 피드백 작성

    리뷰 내역

    리뷰 내역

    🛠️ 기술 스택






    상세 기술스택 및 버전
    구분 기술스택 상세내용 버전
    공통 형상관리 Gitlab
    이슈관리 Jira
    커뮤니케이션 Mattermost, Notion
    BackEnd DB MariaDB 11.3.2
    JPA
    Redis 7.2.4
    Java JDK-17 17.0.10
    Spring Spring
    Spring Boot 3.2.4
    Spring Security
    IDE IntelliJ
    Cloud Storage AWS S3
    Build Gradle 8.7
    FrontEnd Flutter
    DART
    Firebase
    Server 서버 AWS EC2
    플랫폼 Ubuntu
    배포 Docker
    배포 Jenkins

    🗂️ 시스템 아키텍처

    시스템 아키텍처

    👪 팀원 소개


    고승민
    (Team Leader)

    송준석
    (Front-End)

    최지찬
    (Front-End)

    고정원
    (Back-End)

    임종율
    (Back-End)

    장승호
    (Back-End)
    강습 예약 페이지 UI
    결제 페이지 UI
    팀 목록 UI
    강사 목록 UI
    강사/팀 상세페이지 UI
    로그인 페이지 UI
    회원가입 페이지 UI
    FCM 연동
    알림 설정 UI
    강사 스케줄 랜더링
    스케줄 세부정보 UI
    메인 페이지 UI
    강습 내역 UI
    결제 내역 UI
    피드백 UI
    쪽지 UI
    리조트 날씨 API 연동
    Infra
    회원 관리 API
    강습 내역 API
    스케줄 API
    카카오 API 기반 결제 API
    사장 정산 및 정산내역 조회 API
    강사프로필 및 리조트 조회 API
    codeF API 기반 계좌 실명 인증 기능
    팀 API
    피드백 및 리뷰 API
    FCM 알림기능

    📆 프로젝트 일정

    2024.04.08 ~ 2024.05.20

    • 기획 및 설계 : 2024.04.08 – 2024.04.13
    • 프로젝트 구현 : 2024.04.14 – 2024.05.12
    • QA 및 산출물 정리 : 2024.05.13 – 2024.05.20

    참고

    Visit original content creator repository
  • num-radix

    Number Radix

    This is a Python script and library to encode, decode and format numbers
    including fractions and exponential notation in radixes/bases other than
    decimal, such as octal, dozenal/duodecimal, hexadecimal, base57 and base62. The
    radix can also be determined by any number of digits specified: 0123456789ab…

    Requirements

    • Python 3

    Installation

    From the Python Package Index:

    pip install num-radix
    

    Or download and run:

    python3 setup.py install
    

    Command-Line

    Use the --help argument for help.

    num-radix --help
    

    By default, the script encodes and decodes in dozenal.

    This outputs ‘6X,534;3000’ encoded in dozenal.

    num-radix --encode 142456.25 --format ',.4f'
    

    The format string causes the output to have a scale of 4 and every 3 integer
    digits to be separated by a comma.
    The format is given in Python format string syntax.

    Format with e-notation. This outputs ‘4;133X82e-0E’.

    num-radix --encode 0.000000000005526745 --format '.6e'
    

    Encode in hexadecimal.

    num-radix --encode 142 --base hex
    

    Decode back to a decimal from dozenal.

    num-radix --decode '6X534;3'
    

    The input and output can be piped. Each line of input is encoded
    (or decoded) and output on a new line.

    echo -e "142\n4353" | num-radix --encode - | cat
    

    Python

    Import the library.

    from num_radix import Radix
    

    Create a radix.

    dozenal = Radix.dozenal()
    hexa = Radix.hex()
    base20 = Radix("0123456789ABCDEFGHIJ", sep="|")
    

    Encode with the radix object.

    dozenal.encode(3546)
    dozenal.encode(142456.25, "013.4f")
    numbers = [142456.25, 34, 0.000345]
    "These numbers {:013.4f}, {}, {:e} are in dozenal".format(*dozenal.wrap(numbers))
    

    Encoding date & time.

    from datetime import datetime
    now = datetime.now()
    dozenal_now = dozenal.wrap(now.timetuple()[:6])
    "{}-{:02}-{:02} {:02}:{:02}:{:02}".format(*dozenal_now)
    

    Decode with the radix object.

    dozenal.decode("6X534;3")
    

    There are more examples in the demo section at the end of the __init__.py file.

    Visit original content creator repository

  • vim-bootstrap

    vim-bootstrap

    Vim Bootstrap provides a simple method for generating .vimrc configuration files for Vim, NeoVim, NeoVim-Qt, MacVim and GVim.

    Want to generate your vim/neovim file? Access here!

    vim-bootstrap - Your configuration generator for Neovim/Vim | Product Hunt

    Pre-requisites

    The distribution is designed to work with Vim >= 8 and neovim.

    Mac OSX

    $ brew install git ctags
    

    Linux

    • Ubuntu\Debian
    $ sudo apt-get install git exuberant-ctags ncurses-term curl
    
    • Gentoo
    $ sudo emerge --ask dev-util/ctags sys-libs/ncurses dev-vcs/git dev-python/pyflakes net-misc/curl
    
    • Arch Linux via pacman
    $ sudo pacman -S git ctags ncurses curl
    
    • Fedora
    $ sudo dnf install ncurses-devel git ctags curl
    
    • openSUSE
    $ sudo zypper in ncurses-devel git ctags curl
    

    BSD

    • FreeBSD via packages collection
    # pkg install git p5-Parse-ExuberantCTags ncurses curl
    

    Python bundle (optionally)

    • pyflakes
    • jedi
    • neovim (neovim only)

    $ pip install flake8 jedi
    $ pip2 install --user --upgrade neovim
    $ pip3 install --user --upgrade neovim
    

    Elm bundle (optionally)

    • elm-test
    • elm-oracle
    • elm-format

    $ npm install -g elm-test
    $ npm install -g elm-oracle
    $ npm install -g elm-format@exp
    

    Rust

    curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
    

    Installation

    • Download your own vimrc file at https://vim-bootstrap.com
    • Put your vimrc file into home folder or $XDG_CONFIG_HOME/nvim/init.vim if you use NeoVim

    vim: mv ~/Downloads/generate.vim ~/.vimrc

    neovim: mv ~/Downloads/generate.vim $XDG_CONFIG_HOME/nvim/init.vim

    • Execute ViM and it will install plugins automatically
    vim
    

    Fast-installation by URL parameters

    Vim-bootstrap generator can accept URL params via request as example below.

    curl 'https://vim-bootstrap.com/generate.vim' --data 'editor=vim&frameworks=vuejs&langs=javascript&langs=php&langs=html&langs=ruby' > ~/.vimrc
    

    Updating to the latest version

    :VimBootstrapUpdate (thanks to @sherzberg)
    :PlugInstall
    

    Offline usage

    You can run vim-bootstrap Go package to generate a vimrc file, just download it:

    go get github.com/editor-bootstrap/vim-bootstrap
    cd $GOPATH/src/github.com/editor-bootstrap/vim-bootstrap
    go build
    

    Inside vim-bootstrap folder cd vim-bootstrap use vim-bootstrap module (file) like this example:

    ./vim-bootstrap -langs=python,lua,ruby,javascript,haskell -frameworks vuejs -editor=vim > ~/.vimrc
    

    For more instructions run vim-bootstrap -h

    openSUSE repo

    vim-bootstrap is also available on openSUSE on both Leap 42.2/42.3 and Tumbleweed. Leap versions must add devel:tools repository before, while Tumbleweed users should have vim-bootstrap in the default repository without the need to add any extra repository.

    • Leap 42.2

    $ sudo zypper ar -f http://download.opensuse.org/repositories/devel:/tools/openSUSE_Leap_42.2/ devel:tools
    $ sudo zypper ref
    $ sudo zypper in vim-bootstrap
    
    • Leap 42.3

    $ sudo zypper ar -f http://download.opensuse.org/repositories/devel:/tools/openSUSE_Leap_42.3/ devel:tools
    $ sudo zypper ref
    $ sudo zypper in vim-bootstrap
    
    • Tumbleweed

    $ sudo zypper ref
    $ sudo zypper in vim-bootstrap
    

    Adding a new Theme

    Create a folder inside generate/vim_template/themes/ with the name of your theme.

    mkdir generate/vim_template/themes/my_theme
    

    Inside this folder, add a file called mytheme.vim with colorscheme instruction (optionally other configs).

    echo "colorscheme mytheme" > generate/vim_template/themes/my_theme/mytheme.vim
    

    Add a .bundle extension file with instructions of how to install theme.

    echo "Plug username/mytheme" > generate/vim_template/themes/my_theme/mytheme.vim.bundle
    

    Submit a PR and when approved new theme was added.

    Customization

    It’s highly recommended to add customizations in a separate file. This way, you can maintain the original vim-bootstrap generated vimrc file and subsequent updates.

    For Vim users, the files available for customization are ~/.vimrc.local and ~/.vimrc.local.bundles. The former handles general configuration while the latter handles external Vim plugins through vim-plug.

    NeoVim users can also customize their configuration by using $XDG_CONFIG_HOME/nvim/local_init.vim and $XDG_CONFIG_HOME/nvim/local_bundles.vim.

    Commands

    ▪️ Basic Commands

    Commands Descriptions
    :cd <path> Open path /path
    Ctrlw+hjkl Navigate via split panels
    Ctrlww Alternative navigate vim split panels
    ,. Set path working directory
    ,w or ,x Next buffer navigate
    ,q or ,z previous buffer navigate
    shiftt Create a tab
    tab next tab navigate
    shifttab previous tab navigate
    ,e Find and open files
    ,b Find file on buffer (open file)
    ,c Close active buffer (close file)
    F2 Open tree navigate in actual opened file
    F3 Open/Close tree navigate files
    F4 List all class and method, support for python, go, lua, ruby and php
    ,v Split vertical
    ,h Split horizontal
    ,f Search in the project
    ,o Open github file/line (website), if used git in github
    ,sh Open shell.vim terminal inside Vim or NeoVim built-in terminal
    ,ga Execute git add on current file
    ,gc git commit (splits window to write commit message)
    ,gsh git push
    ,gll git pull
    ,gs git status
    ,gb git blame
    ,gd git diff
    ,gr git remove
    ,so Open Session
    ,ss Save Session
    ,sd Delete Session
    ,sc Close Session
    > indent to right
    < indent to left
    gc Comment or uncomment lines that {motion} moves over
    YY Copy to clipboard
    ,p Paste
    Ctrly + , Activate Emmet plugin
    Ctrlh Does a fuzzy search in your command mode history


    ▪️ Python hotkeys

    Commands Descriptions
    SHIFT+k Open documentation
    Control+Space Autocomplete
    ,d Go to the Class/Method definition
    ,r Rename object definition
    ,n Show where command is usage


    ▪️ Ruby hotkeys

    Commands Descriptions
    ,a Run all specs
    ,l Run last spec
    ,t Run current spec
    ,rap Add Parameter
    ,rcpc Inline Temp
    ,rel Convert Post Conditional
    ,rec Extract Constant (visual selection)
    ,rec Extract to Let (Rspec)
    ,relv Extract Local Variable (visual selection)
    ,rrlv Rename Local Variable (visual selection/variable under the cursor)
    ,rriv Rename Instance Variable (visual selection)
    ,rem Extract Method (visual selection)


    ▪️ Php hotkeys

    Commands Descriptions
    ,u Include use statement
    ,mm Invoke the context menu
    ,nn Invoke the navigation menu
    ,oo Goto definition
    ,oh Goto definition on horizontal split
    ,ov Goto definition on vertical split
    ,ot Goto definition on tab
    ,K Show brief information about the symbol under the cursor
    ,tt Transform the classes in the current file
    ,cc Generate a new class (replacing the current file)
    ,ee Extract expression (normal mode)
    ,ee Extract expression (visual selection)
    ,em Extract method (visual selection)
    ,pcd cs-fixer fix directory
    ,pcf cs-fixer fix file


    Learn Vim

    Visit the following sites to learn more about Vim:

    Visit original content creator repository

  • oreilly-hands-on-gpt-llm

    oreilly-logo

    Deploying GPT & Large Language Models

    This repository contains code for the O’Reilly Live Online Training for Deploying GPT & LLMs

    This course is designed to equip software engineers, data scientists, and machine learning professionals with the skills and knowledge needed to deploy AI models effectively in production environments. As AI continues to revolutionize industries, the ability to deploy, manage, and optimize AI applications at scale is becoming increasingly crucial. This course covers the full spectrum of deployment considerations, from leveraging cutting-edge tools like Kubernetes, llama.cpp, and GGUF, to mastering cost management, compute optimization, and model quantization.

    Base Notebooks

    Introduction to LLMs and Prompting

    Cleaning Data and Monitoring Drift

    Evaluating Agents

    Advanced Deployment Techniques

    More

    Instructor

    Sinan Ozdemir is the Founder and CTO of LoopGenius where he uses State of the art AI to help people create and run their businesses. Sinan is a former lecturer of Data Science at Johns Hopkins University and the author of multiple textbooks on data science and machine learning. Additionally, he is the founder of the recently acquired Kylie.ai, an enterprise-grade conversational AI platform with RPA capabilities. He holds a master’s degree in Pure Mathematics from Johns Hopkins University and is based in San Francisco, CA.

    Visit original content creator repository

  • triangle-counting

    Vertex-wise-triangle-counting

    Counting number of triangles that each node contributes to in large sparse matrices.
    For this algorithm we use large sparse matrices with in CSC or CSR format only!

    ~ Function V3 ~

    The logic followed in function V3 is as follows. First we access the
    nodes-rows (row_ptr table) and their corresponding column elements (col_index).
    For each possible col_index data pair of a given node, a search is started in the
    line, the pointer of which is defined by the first element of the pair. Searhing the data
    col_index contained in the respective row-node, if we locate its second component
    pair, we have proven the existence of a triangle, and the appropriate pointers increase.
    For example, lets say node zero is adjacent to the elements {1, 2, 3, 4}. For
    pair (1,2), a pointer will be referenced in line 1 and will
    access its col_index data. In case the second
    element of the pair is also located on the new line (line 1), there is a connection
    of nodes (0-1), (0-2), (1-2) therefore they participate in a triangle.

    ~ Function V4 ~

    The algorithm that implements V4 follows a similar logic to V3 with respect to
    accessing nodes, indirectly using array multiplication for
    finding the node contribution to existing triangles. This time we receive every
    pair of neighboring nodes, and look for the number of their common col_index elements.
    Considering the above example, node zero is adjacent to node 1, so
    our pointer will access the col_index table data corresponding to the row
    1, counting the common neighbors of the nodes (0,1). This result expresses
    substantially the number of non-zero existing multiplications (Hadamard
    product), therefore the final value of the index will be indicated in c3 [0,1].
    The algorithm uses merge function to compare lists of neighboring nodes
    in order to significantly reduce complexity. The process continues for
    all neighbors of node zero, ending in the calculation of c3 [0, {1,2,3,4}]
    by summing the individual c3 [0, x] and repeating the same for all of them
    remaining nodes.

    ~ Code Weaknesses ~

    none detected

    Visit original content creator repository

  • AllMicroServicesDev

    Run All Dev Pledge Micro Services here

    Pull all the relevant repos into your own project directory system that you use for everyday development.

    https://github.com/Dev-Pledge/Sentry

    • Set Sentry up first so it can be used by other docker projects – just follow the READ ME…
    • Once its setup bring the containers down and carry on with the install of the rest of the repos

    https://github.com/Dev-Pledge/Nginx

    https://github.com/Dev-Pledge/UI

    https://github.com/Dev-Pledge/Feed

    https://github.com/Dev-Pledge/API

    • Just follow the READ ME for environment setups – use the examples given in the docker-compose.yml to create your env files…

    https://github.com/Dev-Pledge/Cache

    sudo nano /etc/hosts
    

    Copy these entries into the hosts file

    #sentry
    127.0.0.1       dev.errors.projects.com
    #devpledge
    127.0.0.1       dev.errors.devpledge.com
    127.0.0.1       dev.auth.devpledge.com
    127.0.0.1       dev.api.devpledge.com
    127.0.0.1       dev.feed.devpledge.com
    127.0.0.1       dev.devpledge.com
    

    Symlink all the repos into the project

    ln -s ~/Projects/[yourlocalrepoofsentry] ~/Projects/[fullprojectdir]/sentry
    
    ln -s ~/Projects/[yourlocalrepoofapi] ~/Projects/[fullprojectdir]/api
    
    ln -s ~/Projects/[yourlocalrepooffeed] ~/Projects/[fullprojectdir]/feed
    
    ln -s ~/Projects/[yourlocalrepoofui] ~/Projects/[fullprojectdir]/ui
    
    ln -s ~/Projects/[yourlocalrepoofcache] ~/Projects/[fullprojectdir]/cache
    
    ln -s ~/Projects/[yourlocalrepoofnginx] ~/Projects/[fullprojectdir]/nginx
    

    Then setup create .sentry-env files in the api, auth, feed and ui

    SENTRY_DSN=http://holdingkey:holding@@sentry:9000/1
    

    Get things going with

    make up
    

    Then replace your holding SENTRY DSNs after you’ve generated your projects in sentry for api, auth, feed and ui – leave the sentry:9000 – change everything around it!

    make down-up
    

    Now every time you bring it up it will all work and you can create amazing micro services for DP!

    make stop
    
    make start
    

    If you commit and push any changes to the other repos always run:

    make git-up
    

    This will bring your containers down pull all the repos from git hub rebuild everything and bring it all back up.
    If it all comes back up and appears in your browser (automatically opens on macs) awesome. If not, please fix asap!!!

    Trouble Shooting

    If you run into any problems:

    make git-clean
    

    This will clean docker, clean your composer installs and rebuild all images. Then bring it all up for you.

    Visit original content creator repository

  • xlsx-laravel-spreadsheet-importer

    laravel-spreadsheet-importer

    Based on @proscom/xlsx-to-database

    CLI tool to import sheets from xlsx files into temporal database tables that are much easier to work with.

    • It optionally triggers PHP Laravel artisan commands to track the progress of the import into your Laravel app.
    • You can interact with those artisan commands by using the laravel package, it also allow you to easily interact with the temporal data: laravel-spreadsheet-importer
    • Compatible with multiple formats, see the compatible formated in the dependency (https://www.npmjs.com/package/xlsx#file-formats)
    • Once the temporal table is uploaded, you can play with the data, execute Eloquent & SQL queries, import the content into the final table, etc., and of course once you finish working with the data you can remove the temporal table.
    • Using node instead of PHP for reading and import spreadsheets is considerably faster, also, because you will work with a temporal database table, the data is much easier to work with and the operations are faster.
    • Compatible with PostgreSQL as MySQL

    Uses pg-copy-streams for faster inserts in PostgreSql datatabases.
    Uses xlsx to parse xlsx files.

    Installation:

    npm install @alfonsobries/xlsx-laravel-spreadsheet-importer --save

    Usage:

    Create a .env file with the database settings (If the files exists in your laravel app this step is not neccesary)

    DB_CONNECTION=pgsql # or mysql
    DB_HOST=127.0.0.1
    DB_PORT=5432
    DB_DATABASE=my_database
    DB_USERNAME=admin
    DB_PASSWORD=
    

    $ ./node_modules/.bin/xlsx-laravel-spreadsheet-importer \
        -i input.xlsx \

    Or for a laravel app

    $ ./node_modules/.bin/xlsx-laravel-spreadsheet-importer \
        -i input.xlsx \
        --php /usr/bin/php \
        --artisan /home/myproject/path/artisan \
        --env testing
        --relatedId 1
        --relatedClass "App\Models\MyModel"

    The laravel package automatically generates this command for you: laravel-spreadsheet-importer

    $ xlsx-laravel-spreadsheet-importer --help
    Options:
      --help               Show help                                       [boolean]
      --version            Show version number                             [boolean]
      --input, -i          Input xlsx file                       [string] [required]
      --sheets, -s         Only import specified sheets                      [array]
      --sheetsIndex, --si  Only import specified sheets index                [array]
      --prefix, -p         Prefix is prepended to the table name
                                                              [string] [default: ""]
      --tableNames, -n     Table names to use when storing the data (instead of the
                           sheet name)                         [array] [default: []]
      --batchSize, -b      Amount of rows per single insert query
                                                            [number] [default: 1000]
      --drop               Drops and recreates matched tables
                                                          [boolean] [default: false]
      --create, -c         Creates tables                 [boolean] [default: false]
      --id                 If set generates and ID column with the value
                                                            [string] [default: null]
      --relatedId          Name of the related ID where the data comes from (to send
                           to the artisan command)          [string] [default: null]
      --relatedClass       Name of the related Model Class where the data comes from
                           (to send to the artisan command) [string] [default: null]
      --columns            Extra column:value to add into the database
                                                               [array] [default: []]
      --formatted, -f      Read as formatted text by default
                                                          [boolean] [default: false]
      --artisan            Laravel php artisan path           [string] [default: ""]
      --php                php executable path             [string] [default: "php"]
      --env                enviroment to sent to the artisan command
                                                              [string] [default: ""]

    Artisan command

    If the --artisan option is set it will create a Laravel artisan command with the progress of the import that can be read in a Laravel app.

    Option Possible values Description
    –relatedClass Any value used a relatedClass param Optional id that was sent as a param when running the script (useful to associate the data to a model for example)
    –relatedId Any value used a relatedId param Optional id that was sent as a param when running the script (useful to associate the data to a model for example)
    –type started, readed, connected, total_rows, table_created, error, finished,processing
    –data Depends of the type of the progress, for total_rows the number of rows, for table_created the name of the table, for error the error message, for processing the total rows processed Data related with the progress type
    –env Laravel app enviroment Optional env that was sent as a param when running the script (to run the artisan command in different enviroments)
    –pid The current process id The process id of the running script, useful for kill the process if neccesary


    Visit original content creator repository

  • covid-19-ensemblevis

    COVID-19 EnsembleVis

    COVID-19 EnsembleVis

    This repository contains the source code for COVID-19 EnsembleVis, a visual analytics system that allows the assessment of ensembles and individual models at the county level, by enabling users to effortlessly navigate through and compare ensemble members considering their space and time dimensions. This visual interface provides an overview summary of ensemble data to assess uncertainty, identifies spatiotemporal trends, i.e., how a group of members change over space and time, and visually identifies differences between two or more ensemble members.

    The team includes:

    Table of contents

    Prerequisites

    You will need to install Node.js and Angular to build the interface and Jupyter to preprocess the data. You can install all prerequisites by first installing Anaconda (or miniconda) and running the following command:

    conda install nodejs jupyter
    

    Pre-processing the data

    COVID-19 EnsembleVis makes use of forecasts collected by the COVID-19 Forecast Hub, a site that maintains up-to-data records for forecasts of COVID-19 cases, deaths and hospitalizations in the US. The data is hosted on their GitHub repository, so in order to pre-process the data, first clone the repository:

    git clone https://github.com/reichlab/covid19-forecast-hub
    

    Next, run our parser notebook inside the preprocessing folder. The notebook considers that the COVID-19 Forecast Hub repository was cloned at the same level of the COVID-19 EnsembleVis repository. In other words:

    ./
    ../
    covid-19-ensemblevis/
    covid19-forecast-hub/
    

    The jupyter notebook parser.ipynb will save a json file (models.json) inside the folder vis/src/assets/ containing the pre-processed data required by the interface.

    Building the project

    The project was generated with Angular CLI version 12.2.0. First install Angular CLI using npm (the default package manager for Node.js):

    npm install –g @angular/cli
    

    Next, run ng build inside the vis folder to build the project, and ng serve to create a server and serve the COVID-19 EnsembleVis application. The interface will be available at http://localhost:4200/.

    Visit original content creator repository

  • radiator_performance-Matlab

    Radiator Return Temperature Calculator

    This Matlab tool calculates the radiator return temperature as based on the performance/rating measures making use of various mean temperature difference approaches.

    Table of Contents

    Features

    The main idea here is to develop simple and reliable emprical models for residential radiator units so to be used in system level modelling (i.e. at district heating simulations). Hence, this Matlab models estimate the radiator behaviour in terms of return temperature at different operational conditions (e.g. changing heat demand rate at different degrees of supply temperature).

    • Four different Matlab functions are given, each basing on different approaches for the radiator excess temperature such as either Logarithmic Mean Temperature Difference (LMTD) – implicit, Geometric Mean Temperature Difference (GTMD) – explicit, or Arithmetic Mean Temperature Difference (AMTD) – explicit.
    • Error evaluation are involved for GMTD and AMTD approaches, as error criteria formulated with the approach factor.
    • In order to avoid deviations at low flow conditions, Schlapmann factors are included in the AMTD method.

    How2Use

    An example script is given: ExampleRadiatorReturnTemperature.m, which illustrates how to use the Matlab functions developed Tr_LMTD.m, Tr_GMTD.m, Tr_AMTD.m, and Tr_AMTD_Schlapmann.m. Please clone or download the whole repository and run this example script!

    License

    You are free to use, modify and distribute the code as long as authorship is properly acknowledged. The same applies for the original works ‘XSteam.m’ by Holmgren M.

    Acknowledgement

    We would like to acknowledge all of the open-source minds in general for their willing of share (as apps or comments/answers in forums), which has encouraged our department to publish our Matlab tools developed during the PhD study here in GitHub.

    This Matlab tool makes use of other original open-source project:

    • XSteam by Holmgren M. | Author Description: XSteam provides accurate steam and water properties from 0 – 1000 bar and from 0 – 2000 deg C according to the standard IAPWS IF-97. For accuracy of the functions in different regions see IF-97 (www.iapws.org).

    How2Cite:

    1. Tol, Hİ. radiator_performance-Matlab. DOI: 10.5281/zenodo.1297065. GitHub Repository 2018; https://github.com/DrTol/radiator_performance-Matlab
    2. Tol, Hİ. District heating in areas with low energy houses – Detailed analysis of district heating systems based on low temperature operation and use of renewable energy. PhD Supervisors: Svendsen S. & Nielsen SB. Technical University of Denmark 2015; 204 p. ISBN: 9788778773685.

    References

    • Phetteplace GE. Optimal design of piping systems for district heating. Hanover, N.H.: U.S. Army Cold Regions Research and Engineering Laboratory; 1995.
    • Bøhm B. Energy-economy of Danish district heating systems: A technical and economic analysis. Lyngby, Denmark: Laboratory of Heating and Air Conditioning, Technical University of Denmark; 1988.
    • Benonysson A. Dynamic modelling and operational optimization of district heating systems. Lyngby, Denmark: Laboratory of Heating and Air Conditioning, Technical University of Denmark; 1991.
    • Heat Emission from Radiators and Heating Panels, link: https://www.engineeringtoolbox.com/heat-emission-radiators-d_272.html
    • British Standards Institution. BS EN 442-2:2014: Radiators and convectors – Part 2: Test methods and rating 2014:82.
    • Soumerai H. Practical thermodynamic tools for heat exchanger design engineers. New York: Wiley-Interscience; 1987.
    • Radson. Kv-calculator_-_03-2012(1).xls 2012:2.
    • Schlapmann D. Heat output and surface temperature of room heat emitters [Warmeleitung und oberflachentemperatureen von raumheizkorpern] (German). Heiz Luft Haustechnik 1976;27:317–21.
    • Kilkis İB. Equipment oversizing issues with hydronic heating systems. ASHRAE J 1998;40:25–30.

    Visit original content creator repository