Blog

  • grade-buddy

    Grade Buddy

    This project assists teaching assistants and professors in automating the marking of programming assignments. Don’t re-invent the wheel! Teaching assistants often develop their own scripts over and over, year after year, to perform the same basic tasks. Instead, use this utility to automate the common operations and focus on what’s relevant: the marking code.

    Screenshot

    Build the application from the sources

    First, clone or download this repository and then package the application artefacts using Maven:

    git clone https://github.com/jachinte/grade-buddy ; cd grade-buddy
    mvn package

    Run the application

    The Grade Buddy is provided as a command-line application. Run it using the following command:

    java -jar target/grade-buddy.jar --help

    The previous command shows the application menu:

    Expecting parameters Directory, Naming script, and Marking script
    Usage: <program> [options]
      Options:
        --backup, -b
          A backup file containing a previous configuration
        --directory, -d
          The directory containing the assignment submissions
        --marking-script, -m
          A shell script to run over each submission
          Default: []
        --naming-script, -n
          A shell script to extract the submission's id
        --on-selected-script, -s
          A shell script to be executed when a submission is selected (useful only 
          when running the UI)
        --exclude, -e
          Regular expression to exclude directories
          Default: <empty string>
        --ui, -u
          Open the graphical user interface
          Default: false
        --timeout, -to
          The timeout for each submission part (in milliseconds)
          Default: 60000
        --thread-pool, -t
          The thread-pool size to use in marking the submissions
          Default: 1
        --help, -h
          Shows this message
          Default: false

    Demo

    Run the following command to see the Grade Buddy in action:

    java -jar target/grade-buddy.jar \
        -d src/test/resources/simple-assignment \
        -m src/test/resources/simple-assignment/P1.sh \
        -m src/test/resources/simple-assignment/P2.sh \
        -n src/test/resources/simple-assignment/naming.sh \
        -s src/test/resources/simple-assignment/open.sh \
        -u

    Create your own marking project

    First of all, organize the submissions directory into one single directory, let’s say submissions. Then, you need to create an ID provider and at least one marking script. The following subsections contain code examples to help you develop your own marking project. These examples rely on the following directory structure:

    .
    └── submissions
        ├── P1.sh
        ├── P2.sh
        ├── src
        │   ├── P1.java
        │   ├── P2.java
        ├── jane-doe
        │   ├── V00812345P1.c
        │   ├── V00812345P2.c
        ├── john-doe
        │   ├── V00898765P1.c
        │   ├── V00898765P2.c
        ├── naming.sh
        └── open.sh
    

    Where P1.sh and P2.sh are marking scripts (part 1 and part 2), and naming.sh is an ID provider. jane-doe and john-doe are student submissions.

    ID provider

    An ID provider is a script that returns a unique identifier given a submission directory. The ID may represent the student’s ID.

    Before marking the files in a submission, the Grade Buddy will run this script, passing the submission directory as argument. The following represents an example script:

    #!/bin/bash
    DIRECTORY=$1
    REGEX="V[0-9]+"
    
    ANY_FILE="$(find "$DIRECTORY" -name "*.c" | head -n 1)"
    name=${ANY_FILE##*/}
    base=${name%.c}
    
    ID="$(echo "$base" | grep -oEi "$REGEX")"
    
    # Print the upper-case version of the student ID
    echo $ID | awk '{print toupper($0)}'

    The previous code takes any C file from the submission directory and extracts the student ID.

    Marking files

    An assignment may be composed of several parts. You need to create a shell script for each part. When executing a marking script, the Grade Buddy will pass the submission directory as argument. The following elements are expected as output from a marking script (in the same order, each on a new line):

    1. A path to the source file being marked
    2. A number representing the corresponding marks
    3. A single line providing feedback to the student
    4. The student program’s output (may contain several lines)

    The following represents an example marking script:

    #!/bin/bash
    BASEDIR="$(dirname "$0")"
    DIRECTORY=$1
    SOURCE_FILE="$(find "$DIRECTORY" -regex '.*[P|p]1.c' | head -n 1)"
    
    if [ ! -f "$SOURCE_FILE" ]; then
        >&2 echo "Source code for part 1 not found. Perhaps, the file was given a different name than expected."
        exit 1
    fi
    
    # Set the submission as new working directory
    cd $DIRECTORY
    
    # Compile the source code
    name=${SOURCE_FILE##*/}
    base=${name%.c}
    compilation="$(gcc "$SOURCE_FILE" -o "$base".out)"
    if [ $? -ne 0 ]; then
        exit 2
    fi
    
    # Execute the program and capture the output
    output="$(./"$base".out)"
    
    # Print out the file to mark
    echo $SOURCE_FILE
    
    # Run the evaluator
    # It is expected to print the corresponding grade and feedback
    javac $BASEDIR/src/P1.java
    java -cp $BASEDIR/src P1 "$output"
    EXIT_CODE=$?
    
    # Print out the program's output and exit
    echo "$output"
    exit $EXIT_CODE

    Notice that the script above delegates the marking (grade and feedback determination) to a Java class, but this can be done in the same script.

    The EXIT_CODE variable is used to detect any erroneous execution of the student’s program. If the exit code is different than 0, the Grade Buddy will report this as part of the feedback.

    On submission selected (optional)

    If you are using the UI, you may run a script every time a submission is selected. This is useful to perform manual inspection on the submissions. As an example, the following shell script opens a file generated by the assignment’s part 1:

    #!/bin/bash
    DIRECTORY=$1
    
    # Open the text document from part 1
    open "$DIRECTORY/document.txt"

    As for marking scripts and ID providers, this script is passed the submission directory as argument.

    Running the Grade Buddy

    According to the project structure presented above, the command to run the Grade Buddy is:

    java -jar <path-to-target>/grade-buddy.jar \
        -d ./submissions \
        -m ./submissions/P1.sh \
        -m ./submissions/P2.sh \
        -n ./submissions/naming.sh \
        -s ./submissions/open.sh \
        -u

    Running the Grade Buddy from a backup

    You only need to mark the submissions once if you export a backup file. Next time that you want to navigate through the submissions, or correct them, you only have to specify the backup file using the --backup (or -b) switch. Notice that using this option causes that the rest of the arguments are ignored, except for the --ui and --on-selected-script options. If you have changed any of the paths (e.g., script paths), you cannot use a previous backup file.

    Visit original content creator repository
    https://github.com/jachinte/grade-buddy

  • Team-project-Eum

    세상 모든 사람들의 재능을 이어주다.

    안녕하세요.
    저희 재능 마켓 이음은 사소한 재능도 누군가에게는 많은 도움이 되지 않을까? 라는 생각으로 시작된 프로젝트입니다.

    🏠재능마켓 이음 바로가기

    🔗Notion

    📏Figma

    👨‍💻 팀 소개

    🧑‍🤝‍🧑__총 팀원 : FRONTEND (4명), DESIGNER (1명)
    🧑‍🤝‍🧑__구성원

    김미영(Leader), 김도원(Vice Leader), 정진수, 김남규 | 김예은 (Designer)

    🏷️팀명_노른자
    사물에서 알짜로 중요하거나 값지거나 한 부분이 의미인 것처럼
    팀원들도 함께 프로젝트에서 값진 경험과 소중하고 중요한 “인재”가 되자라는의미 입니다.

    🏷️프로젝트 명_이음
    “마주 이어서 합하는 일” 한국 고유의 뜻으로 모든 사람의 숨겨둔재능을 가치있게 만들자라는 의미입니다.

    📆 프로젝트 개발기간
    23.02.06. ~ 23.03.13. (5weeks)
    image

    📺 프로젝트 시연

    1. 회원 가입
      ezgif com-video-to-gif (7)
    2. 거래 진행
      ezgif com-video-to-gif (9)
    3. 채팅 하기
      ezgif com-video-to-gif (10)
    4. 마이페이지
      ezgif com-video-to-gif (11)
    5. 글쓰기
      ezgif com-video-to-gif (12)
    6. 거래 취소
      ezgif com-video-to-gif (13)

    🛠 Usage Technologies and Libraries





    🛠Service Architecture

    🛠Data modeling

    ✅ 기술적 의사결정

    1. 많은 양의 데이터 출력방법
      -> Infinit Scroll (✔️)
      -> pagination
      👍선택 이유
      __로드 되는 데이터가 쌓였을 때, 데이터 용량을 최소화 하여 가져오기 위해 선택하였습니다.
      __원하는 서비스를 찾아야 하는 매칭 서비스 특성 상, 게시 글을 페이지 개념보다 스크롤 형식으로 표현했을 때 UX가 좋다고 판단했습니다.
    2. 서버 상태 관리
      -> React-Query (✔️)
      -> RTK-Query
      -> SWR
      -> Redux-Thunk
      👍선택 이유
      __server state 관리가 편리합니다.
      __라이브러리에서 기본적으로 제공하는 기능(캐싱, 업데이트, 동기화 등)이 더욱 강력합니다.
      __자동으로 가비지 컬렉션을 지원 하여 데이터를 최적화 합니다.
    3. 클라이언트 상태 관리
      -> Recoil(✔️)
      -> Redux
      👍선택이유
      __BoilerPlate가 적습니다.
      __코드가 간결해 사용하기 쉽고 가독성이 좋습니다.
      __React와 상성이 좋으며 react 기반으로 제작된 라이브러리로서 안정성, 성능 면에서 뛰어납니다.
      __미들웨어가 필요하지 않다.
      __입력 데이터 값을 기억하여 동일 응답 시, 추가적으로 요청하지 않아 성능 적으로 유리합니다.
    4. 성능 개선
      -> Loadable components(✔️)
      -> React.lazy
      👍선택이유
      __React에서 code splitting과 SSR 모두 지원합니다.
      __React.lazy에서는 제공하지 않는 library splitting, import 지원합니다.
    5. authservice 데이터베이스
      -> firebase(✔️)
      -> supbase
      👍선택이유
      __보안성 높고, Auth서비스를 포함한 소셜 로그인을 지원합니다.
      __레퍼런스가 많습니다.
    Visit original content creator repository https://github.com/KoreaMoney/Team-project-Eum
  • cwsallauth

    cwsallauth – Django Working Code

    How Django All-Auth Works – Stand-alone Project

    
    This is all about AllAuth! 
    
    Django-allauth provides 
    a comprehensive set of tools 
    to handle user authentication and registration 
    in Django projects. 
    
    Its flexibility and customizability make it 
    a popular choice among Django developers. 
    
    Based On : Code With Stein - Python Django Social Authentication | Django AllAuth Tutorial
    
    

    What exactly is this project?

    It's a standalone Django Project
    Running a simple 
    How Django All-Auth Works
    in Django, obviouslly 🤪️
    
    

    Based: Code With Stein video Tutorial

    This is powered by Django , a web framework for perfectionists with deadlines!

    Django is a full-stack, open-source Python framework designed for efficient web development.

    Why Django?

    Django is a high-level Python web framework 
    that encourages rapid development and clean, pragmatic design. 
    
    Built by experienced developers, it takes care of much 
    of the hassle of web development, so you can focus on writing 
    your app without needing to reinvent the wheel. 
    It’s free and open source.
    

    You’re more then welcome to visit my Web Pages:

    👉️ All-Auth with Django-Allauth – Django AllAuth Tutorial #PureDjango — Episode #01

    Jungletronics (Arduino, RPi, PIC, Eagle, Blender, Unity3D, Pixy, and more) KidsTronics (MIT App Inventor, LEGO, Arduino For Kids, and more)

    And my Youtube Channel Playlist

    Or my old Atlassian,Inc. Repo: https://bitbucket.org/gilj3/

    Quick Start

    To get this project up and running locally on your computer:

    Set up the Python development environment. We recommend using a Python virtual environment. Assuming you have Python setup, run the following commands (if you’re on Windows you may use py or python-3 instead of python to start Python):

    Check list:

    Would you like some help? Read hystory.txt file

    • pip3 install -r requirements.txt
    • python3 manage.py makemigrations
    • python3 manage.py makemigrations
    • python3 manage.py migrate
    • python3 manage.py collectstatic
    • python3 manage.py test # Run the standard tests. These should all pass.
    • python3 manage.py createsuperuser # Create a superuser
    • python3 -m venv djangoEnv
    • djangoEnv\Scripts\activate
    • python3 -m pip install –upgrade pip
    • python3 -m pip install django
    • python3 -m django –version
    • python3 -m pip install django-crispy-forms
    • python3 -m pip install Pillow
    • python3 manage.py runserver
    • Open a browser to http://127.0.0.1:8000/admin/ to open the admin site
    • Create a superuser see console output ;b

    License

    License: CC BY-NC-ND 3.0

    Visit original content creator repository https://github.com/giljr/cwsallauth
  • Python-Data-Processing-App

    What is this app?

    This application is a simple command-line interface that provides data processing for various formats such as JSON, XML, CSV, and offers functionality tailored for both users and administrators.

    Key Features

    • Reads and integrates data from different formats (JSON, XML, CSV) located in the specified directory.
    • Provides commands for users and administrators to manipulate data based on their respective needs.
    • User actions enable the display and retrieval of information related to a user.
    • Administrator actions offer functionalities tailored for administrators, such as displaying all accounts and presenting information about the oldest account.

    Import and integrate data

    • Validate emails – validation criteria is listed below, reject entries without a valid email address
    • Reject entries without provided telephone number
    • Remove duplicates(by telephone number or email) from the merged dataset. Save the newer entry based on the timestamp.
    • Store telephone numbers as 9 digits, remove any special characters and leading zeros (+48123456789, 00123456789, (48) 123456789, 123 456 789, all of these should be stored as 123456789)
    • All telephone numbers has been generated in a way that after removing special chars and leading zeros, there will always be a valid 9-digit number. For the purposes of this exercise you can omit further validation.

    Validation Criteria for Emails:

    • Email must contain only one “@” symbol.
    • The part before “@” must be at least 1 character long.
    • The part between “@” and “.” must be at least 1 character long.
    • The part after the last “.” must be between 1 and 4 characters long, containing only letters and/or digits.

    ENV

    IDE: Atom
    OS: MacOS
    Python: 3.11.0
    Libraries: pandas, argparse etc (requirements.txt)

    DEMO

    Example of integrated data

    firstname telephone_number email password role created_at children
    Kathryn 108835339 carterlindsey@example.org +sUVpIkkY6 user 2023-11-20 07:22:51 []
    Michael 667574950 kimberlymartin@example.org ns6REVen+g admin 2023-11-19 20:42:33 [{‘name’: ‘Justin’, ‘age’: 15}, {‘name’: ‘Sarah’, ‘age’: 10}]
    Joseph 756037486 lisa93@example.com !q62J8^sYb user 2023-11-13 14:10:09 []
    Dawn 717279856 briancollins@example.net R9AjA5nb$! admin 2023-11-13 01:28:53 []
    Steven 691250247 weisskristina@example.net 9T1zNeAN(2 user 2023-11-10 09:52:49 []
    George 681988567 michelle93@example.org +hL*hdte2H admin 2023-11-08 16:38:28 [{‘name’: ‘Samantha’, ‘age’: 6}]
    Donna 504140673 ngutierrez@example.net @9TcRo15As user 2023-11-06 02:10:33 [{‘name’: ‘Jackie’, ‘age’: 9}, {‘name’: ‘Mitchell’, ‘age’: 6}]



    Command format
    “`
    python script.py –login –password
    “`

    Admin Action

    Print The Number of All Valid Accounts

    python script.py print-all-accounts --login ashleyhall@example.net --password '#0R0UT&yw2'
    
    84
    

    Meanwhile user can not access this command.

    python script.py print-all-accounts --login 108835339 --password '+sUVpIkkY6'
    
    User has no permission for this command!
    

    Print The Longest Existing Account

    python script.py print-oldest-account --login ashleyhall@example.net --password '#0R0UT&yw2'
    
    name: Justin
    email_address: opoole@example.org
    created_at: 2022-11-25 02:19:37
    

    Meanwhile user can not access this command.

    python script.py print-oldest-account --login 108835339 --password '+sUVpIkkY6'
    
    User has no permission for this command!
    

    Group Children by Age

    python script.py group-by-age --login ashleyhall@example.net --password '#0R0UT&yw2'
    
    age: 13, count: 2
    age: 15, count: 2
    age: 18, count: 2
    age: 3, count: 3
    age: 5, count: 3
    age: 10, count: 3
    age: 14, count: 3
    age: 4, count: 4
    age: 6, count: 4
    age: 7, count: 4
    age: 9, count: 4
    age: 12, count: 4
    age: 1, count: 5
    age: 2, count: 5
    age: 16, count: 5
    age: 8, count: 6
    age: 11, count: 6
    age: 17, count: 9
    

    Meanwhile user can not access this command.

    python script.py group-by-age --login 108835339 --password '+sUVpIkkY6'
    
    User has no permission for this command!
    

    User Action

    Print Children

    1. User & No Children

    $ python script.py print-children --login 108835339 --password '+sUVpIkkY6'
    
    No children found for this user.
    
    1. User & Having children

    python script.py print-children --login matthewdecker2@example.com --password '2p$v9zPt1+'
    
    Jonathan, 1
    Natalie, 11
    
    1. Admin has access too.

    python script.py print-children --login 232756993 --password '@%xHuZl)9l'
    
    Danielle, 11
    Dustin, 7
    Karen, 7
    

    Find Users with Children of Same Age

    1. User & No Children

    Profil-assignment % python script.py find-similar-children-by-age --login woodsjerry@example.com --password 'z2Y%0Hbcsi'
    
    No children found for this user.
    
    1. User & Having Children

    python script.py find-similar-children-by-age --login 401629185 --password 'WAq7M2xG&K'
    
    Amanda, 208579481: George, 8
    Amy, 361568741: Sara, 8
    Chad, 882294581: April, 8
    Christopher, 743328816: Zachary, 8; James, 9
    Curtis, 107058738: Eric, 8
    Donna, 504140673: Jackie, 9
    Sandra, 267687714: Robert, 9
    
    1. Admin has access too.

    python script.py find-similar-children-by-age --login ashleyhall@example.net --password '#0R0UT&yw2'
    
    Brian, 174746366: Victoria, 1
    Don, 612660796: Judith, 1
    Eric, 110355347: Mary, 1
    Kevin, 227397825: Kristin, 14
    Madeline, 441935720: Jonathan, 1
    Michael, 736121560: Angela, 14
    

    Invalid Credential

    python script.py print-all-accounts --login woodsjerry@example.com --password 'z2Y%afafadi'
    
    Invalid Login
    

    Author

    Seita Fujiwara 2023

    Visit original content creator repository
    https://github.com/seita-f/Python-Data-Processing-App

  • moex-bond-search-and-analysis

    🚀 Поиск ликвидных облигаций на Московской Бирже и их анализ

    Этот репозиторий содержит Python-скрипты, которые помогают частным инвесторам находить ликвидные облигации, анализировать денежные потоки и отслеживать новости эмитентов.

    Несмотря на обилие публичных сервисов для поиска облигаций, данное решение выделяется тем, что это open source решение, которое:

    1. Формирует краткий список привлекательных вариантов, доступных для покупки прямо сейчас.
    2. Проводит анализ денежных потоков.
    3. Собирает актуальные новости по каждой компании.

    🔧 Отдельные скрипты

    1️⃣ Поиск ликвидных облигаций

    Скрипт взаимодействует с API Московской биржи и фильтрует облигации по важным параметрам.
    На рынке торгуется более 2500 облигаций, но многие из них неликвидны: по ним либо нет предложений, либо их очень мало, что делает покупку невозможной. Этот скрипт отбирает только те облигации, которые действительно доступны для торговли.

    Читать подробнее об этом скрипте на: Хабр | Смартлаб

    2️⃣ Автоматический расчет денежных потоков

    Этот скрипт загружает данные о купонах и выплатах номинала для списка облигаций из Excel-файла bonds.xlsx, используя API Московской биржи, и записывает результат в отдельную вкладку того же файла. Третья вкладка содержит анализ выплат. Это удобный инструмент для автоматизированного расчета кэшфлоу по облигациям.

    Читать подробнее об этом скрипте на: Хабр | Смартлаб

    3️⃣ Сбор новостей по эмитентам

    Используя уже собранные коды ценных бумаг в Excel-файле bonds.xlsx для облигаций на Московской биржи, скрипт получает название эмитента с биржи и затем собирает последние новости по каждой из компаний. Просмотр заголовков помогает быстро понять, что сейчас происходит с эмитентом и чем он занимается.

    Читать подробнее об этом скрипте на: Смартлаб | Хабр

    4️⃣ Расчет оптимального объема покупки облигаций

    Скрипт автоматически рассчитывает оптимальное количество облигаций для покупки, основываясь на доступной сумме денег. Получает актуальные цены и НКД через API Московской биржи для списка облигаций из Excel-файла bonds.xlsx и сохраняет результаты расчета в новый файл bonds_calculation purchase volume.xlsx.

    Читать подробнее об этом скрипте на: Хабр | Смартлаб

    📊 Почему это важно?

    Многие частные инвесторы не ведут учет облигационного портфеля, что затрудняет принятие стратегических и тактических решений. Доступные портфельные трекеры платные, а самостоятельное ведение Excel-документов требует значительных усилий. Данный проект создан для тех, кто хочет вести учет облигаций в Excel, но хочет избавиться от рутины.

    ❓❗ Как это использовать на практике?

    Есть условные 300 000 руб: разделяем всю сумму на 10 облигаций.

    1. Воспользуемся первой частью скрипта на питоне – он найдёт самый выгодные варианты.
    2. Прогоняем их через поиск новостей – если в новостях не написано что прокуратура предъявила требования к этой организации, то следующий шаг.
    3. Четвёртый скрипт рассчитает нужное количество к покупке на основании суммы.

    Раз облигации достаточно много, то один раз в месяц просматривать брокерский счёт и докупать какие-то новые бумаги через первый шаг поиска облигаций.

    И так повторять до бесконечности.

    🛠️ Почему Python, а не встроенный Python в Excel?

    Я выбрал отдельные скрипты на Python вместо встроенных функций Python в Excel, потому что:

    • Встроенный Python работает только в Microsoft Office 2024 и требует подписки Office 365.
    • Он поддерживает только ограниченный список библиотек от Microsoft и Anaconda.
    • Работает исключительно под Windows.

    Скрипты, представленные здесь, лишены этих ограничений и могут использоваться на любой платформе: Windows, MacOS и даже Linux.

    📂 Установка и запуск без знаний программирования

    Если вы не разбираетесь в программировании, но хотите воспользоваться этими Python-скриптами, следуйте инструкции:

    Шаг 1. Скачайте скрипт

    1. Откройте ссылку: GitHub проекта.
    2. Нажмите “Code”“Download ZIP”.
    3. Разархивируйте ZIP-архив в удобную папку.

    Шаг 2. Установите Python

    Если Python не установлен:

    Шаг 3. Установите зависимости проекта

    1. Откройте папку с проектом.
    2. Дважды кликните файл:
      • Windows: install_requirements.bat
      • MacOS: install_requirements.command

    Шаг 4. Запустите нужный скрипт

    1. Дважды кликните файл 1_bonds_search by criteria.py.
    2. Во время выполнения будет отображаться лог процесса.

    Шаг 5. Наслаждайтесь результатом

    После завершения работы скрипта будет создан файл с текущей датой:
    bond_search_2025-03-25.xlsx

    📂 Установка и запуск для знакомых с Python

    Установка зависимостей

    Убедитесь, что у вас установлен Python 3.9+ и выполните команду:

    pip install -r requirements.txt

    (📦 Альтернативная установка) С помощью менеджера пакетов uv

    Использование виртуального окружения является хорошей практикой, она позволяет:

    • позволяет изолировать зависимости для разных проектов;
    • более простое управление зависимостями проекта;
    • позволяет избегать конфликтов с системными пакетами;
    • обеспечивает переносимость и повторяемость между разными компьютерами.

    Документация к менеджеру пакетов https://docs.astral.sh/uv/

    Для начала работы установите менеджер пакетов по инструкции https://docs.astral.sh/uv/getting-started/installation/ из документации.

    Выполните команду

    uv sync

    Запуск скриптов

    Найдите скрипты в проводнике и дважды кликните по нужному Вам. Это запустит скрипт, и он обновит или создаст файл Excel.

    После окончания работы можно посмотреть логи работы – скрипт ждёт нажатия кнопки.

    (📦 При альтернативной установке) Запуск с помощью пакетного менеджера

    uv run python src/cli.py

    👨‍💻 Как вести разработку

    1. Сделайте форк репозитория.
    2. Склонируйте свой форк к себе на рабочую машину.
    3. Создайте виртуальное окружение и установите необходимые зависимости
    uv sync
    1. Перед тем как вносить изменения или добавлять тесты, проверьте текущее состояние тестов
    uv run pytest
    1. Создайте новую ветку
    git checkout -b dev
    1. Внесите свои изменения
    2. Покройте свои изменения тестами
    3. Проверьте что все тесты проходят
    uv run pytest
    1. Создайте коммит в коротким описание проделаной работы

    git add спискок измененных файлов
    git commit -m 'Выполнил полезную работу'
    1. Отправьте изменения в свой форк
    git push origin dev
    1. Создайте pull request в интерфейсе github.

    🏆 Альтернативные JavaScript версии

    Если вы хотите использовать JavaScript-версию, у меня есть другой репозиторий с:

    • Node.js-версией поиска
    • Поиском в Google Таблицах на Google Apps Script

    Смотреть здесь

    🤝 Контакты и поддержка

    Если у вас есть вопросы или предложения, создавайте issue или pull request. Буду рад обратной связи! 🚀

    Автор: Михаил Шардин
    🔗 Моя онлайн-визитка
    📢 Telegram «Умный Дом Инвестора»

    Visit original content creator repository
    https://github.com/empenoso/moex-bond-search-and-analysis

  • TestNGFramework

    TestNG Framework

    This is a Test Automation Framework demo that I have developed myself from the ground up.

    I’ve incorporated both Test-Driven (TDD) and Data-Driven Testing (DDT) into this TestNG Framework

    • based on Page Object Model (POM) Pattern Design.
    • … and some tools I’ve implemented are:
    • Java as main language,
    • Selenium as automation,
    • TestNG for assertion and running tests,
    • XML files for running tests such as regression and smoke tests,
    • Extent Reports for generating beautiful reports after each test,
    • Maven as an automation tool management used for dependency management using Project Object Model (pom.xml),
    • .properties files for reading and retrieving test data from the config package,
    • Excel utility function for reading and writing data to and from spreadsheets,
    • CommonFunctions class added for reuse to avoid DRY (Don’t repeat yourself) principle,
    • and many more…

     

    1. Organized, minimalistic, and clean coding is the key!

     

    When someone pulls/opens your framework, you don’t want this happen to them?

    1. Follow this simple formula to achieve number 1.
    graph LR
    A[Write Code] --> B{Does it work?} 
    B -- Yes --> C[Great!]
    B -- No --> D[Google/StackOverFlow]
    D -- Research/Refactor --> A
    C --- E{{is it clean code?}}
    E -- Yes --> F[Great!]
    E -- No -->D
    
    
    Loading
    • System.out.println("Happy Coding!");
    Visit original content creator repository https://github.com/gaforov/TestNGFramework
  • ASTRONOMIA-COM-TELEPOT

    ASTRONOMIA COM TELEPOT

    🤤ESSE É UM BOT TELEGRAM, FEITO COM TELEPOT, DE TÓPICOS SOBRE OS PLANETAS DO SISTEMA SOLAR!


    DESCRIÇÃO:

    Este bot do Telegram é um bot de comandos de Astronomia que fornece informações sobre os planetas do Sistema Solar quando comandos específicos são enviados. Aqui está uma descrição ele faz:

    • O bot responde a comandos específicos enviados pelos usuários relacionados aos planetas do Sistema Solar.
    • Ele fornece informações básicas sobre cada planeta quando o comando correspondente é enviado.
    • Inclui um comando de boas-vindas para orientar os usuários sobre os comandos disponíveis.

    EXECUTANDO O PROJETO:

    1. Coloque o Token:

      • Antes de executar o programa, é necessário substituir o token do seu bot no arquivo TOKEN.py, o qual pode ser obtido por meio do @BotFather.
    2. Instalando as dependências:

      • Antes de executar o bot, certifique-se de instalar todas as dependências necessárias. No terminal, execute o seguinte comando para instalar as dependências listadas no arquivo requirements.txt em CODIGO:
      pip install -r requirements.txt
    3. Inicie o Bot:

      • Execute o bot do Telegram em Python iniciando-o com o seguinte comando:
      python CODIGO.py
      • Inicie o bot enviando o comando /start. Receba uma mensagem de boas-vindas e Converse.
    4. Interagindo com o Bot:

      1. Inicialização:

        • Envie /start para iniciar o bot. Ele enviará uma mensagem de boas-vindas com uma lista de comandos disponíveis.
      2. Comandos Disponíveis:

        • /sol – Descrição sobre o Sol.
        • /mercurio – Descrição sobre Mercúrio.
        • /venus – Descrição sobre Vênus.
        • /terra – Descrição sobre a Terra.
        • /marte – Descrição sobre Marte.
        • /jupiter – Descrição sobre Júpiter.
        • /saturno – Descrição sobre Saturno.
        • /urano – Descrição sobre Urano.
        • /netuno – Descrição sobre Netuno.
      3. Exemplo de Uso:

        • Para obter informações sobre Marte, você pode enviar o comando /marte.
        • O bot responderá com uma mensagem descrevendo o planeta Marte.

    NÃO SABE?

    • Entendemos que para manipular arquivos em muitas linguagens e tecnologias relacionadas, é necessário possuir conhecimento nessas áreas. Para auxiliar nesse aprendizado, oferecemos alguns subsidios:

    CREDITOS:

    Visit original content creator repository https://github.com/VILHALVA/ASTRONOMIA-COM-TELEPOT
  • ASTRONOMIA-COM-TELEPOT

    ASTRONOMIA COM TELEPOT

    🤤ESSE É UM BOT TELEGRAM, FEITO COM TELEPOT, DE TÓPICOS SOBRE OS PLANETAS DO SISTEMA SOLAR!

    DESCRIÇÃO:

    Este bot do Telegram é um bot de comandos de Astronomia que fornece informações sobre os planetas do Sistema Solar quando comandos específicos são enviados. Aqui está uma descrição ele faz:

    • O bot responde a comandos específicos enviados pelos usuários relacionados aos planetas do Sistema Solar.
    • Ele fornece informações básicas sobre cada planeta quando o comando correspondente é enviado.
    • Inclui um comando de boas-vindas para orientar os usuários sobre os comandos disponíveis.

    EXECUTANDO O PROJETO:

    1. Coloque o Token:

      • Antes de executar o programa, é necessário substituir o token do seu bot no arquivo TOKEN.py, o qual pode ser obtido por meio do @BotFather.
    2. Instalando as dependências:

      • Antes de executar o bot, certifique-se de instalar todas as dependências necessárias. No terminal, execute o seguinte comando para instalar as dependências listadas no arquivo requirements.txt em CODIGO:
      pip install -r requirements.txt
    3. Inicie o Bot:

      • Execute o bot do Telegram em Python iniciando-o com o seguinte comando:
      python CODIGO.py
      • Inicie o bot enviando o comando /start. Receba uma mensagem de boas-vindas e Converse.
    4. Interagindo com o Bot:

      1. Inicialização:

        • Envie /start para iniciar o bot. Ele enviará uma mensagem de boas-vindas com uma lista de comandos disponíveis.
      2. Comandos Disponíveis:

        • /sol – Descrição sobre o Sol.
        • /mercurio – Descrição sobre Mercúrio.
        • /venus – Descrição sobre Vênus.
        • /terra – Descrição sobre a Terra.
        • /marte – Descrição sobre Marte.
        • /jupiter – Descrição sobre Júpiter.
        • /saturno – Descrição sobre Saturno.
        • /urano – Descrição sobre Urano.
        • /netuno – Descrição sobre Netuno.
      3. Exemplo de Uso:

        • Para obter informações sobre Marte, você pode enviar o comando /marte.
        • O bot responderá com uma mensagem descrevendo o planeta Marte.

    NÃO SABE?

    • Entendemos que para manipular arquivos em muitas linguagens e tecnologias relacionadas, é necessário possuir conhecimento nessas áreas. Para auxiliar nesse aprendizado, oferecemos alguns subsidios:

    CREDITOS:

    Visit original content creator repository
    https://github.com/VILHALVA/ASTRONOMIA-COM-TELEPOT

  • parkinsons-AI

    Detecting Parkinsons with ML

    Open Word-Level In Colab

    We’ll use the data from UC Irvine’s amazing dataset repository, specifically the Parkinsons ML database.

    There are two datasets within this. The first is in the root folder (parkinsons.data which is included here too) and can be used to detect Parkinsons. The second is within the telemonitoring/ directory and contains UDPR scores for us to predict.

    Approach

    Parkinsons detection islikely best done with an XGBoost since outputs are 0 or 1 and it seems mostly linear.

    The UDPR is very hard to fine tune with XGBoost. With an NN in Keras, we can fit much better. There are still some very bad apples in our data/predictions bur the performance is overall/on average much better.

    Both approaches are provided in the Jupyter notebook for this repo (Train.ipynb). Run using jupyter notebook from this repo’s root folder in the terminal.

    You can find more info on the datasets in UCI’s database. (info for Parkinsons detection) (info for UDPR)

    Requirements

    • Python 3 (I highly recommend using Anaconda as this will save you a TON of time)
    • XGBoost (pip install xgboost)
    • Keras (pip install keras)
    • sklearn (pip install scikit-learn)
    • Jupyter (instructions)
    • Pandas (pip install pandas)
    • NumPy (pip install numpy)
    • Tensorflow or another Keras backend (pip install tensorflow or for GPU assuming CUDA and CUDNN already installed and in PATH, pip install tensorflow-gpu)

    Credits

    I don’t own this dataset, it’s provided in the link earlier.

    Citations for the datasets used:

    'Exploiting Nonlinear Recurrence and Fractal Scaling Properties for Voice Disorder Detection', 
    Little MA, McSharry PE, Roberts SJ, Costello DAE, Moroz IM. 
    BioMedical Engineering OnLine 2007, 6:23 (26 June 2007)
    
    A Tsanas, MA Little, PE McSharry, LO Ramig (2009)
    'Accurate telemonitoring of Parkinson.s disease progression by non-invasive speech tests',
    IEEE Transactions on Biomedical Engineering (to appear).
    

    If you use this repo please cite it:

    Cuuupid 💔. (2018, April 4). Detecting Parkinsons with AI (Version DOI). Zenodo. 
    http://doi.org/10.5281/zenodo.1211859
    

    Bibtex:

    @misc{cuuupid_loves_you_2018_1211859,
      author       = {Cuuupid 💔},
      title        = {Detecting Parkinsons with AI},
      month        = apr,
      year         = 2018,
      doi          = {10.5281/zenodo.1211859},
      url          = {https://doi.org/10.5281/zenodo.1211859}
    }
    
    Visit original content creator repository https://github.com/cuuupid/parkinsons-AI
  • Blader

    Blader

    A lightweight template router – for websites with no/minimal dynamic needs.

    Using BladeOne – a standalone version of Laravel’s blade template engine.

    Install

    composer create-project xy2z/blader mysite
    cd mysite/public
    php -S 127.0.0.1:81
    

    Go to http://127.0.0.1:81

    Requirements

    • PHP 7.0 or above.

    Basic Usage

    require '../vendor/xy2z/blader-core/src/init.php';
    
    $blader->addRoute('GET', '/', 'home'); // Renders '../views/home.blade.php'
    $blader->addRoute('GET', '/about', 'about'); // Renders '../views/about.blade.php'
    
    $blader->not_found_view = '404'; // Renders '../views/404.blade.php' on 404.
    
    $blader->render();

    That’s it.

    Features

    Global variables

    In your /public/index.php, add:

    $blader->global_vars = [
    	'foo' => 'bar',
    ];

    Config

    A default config file is added in config/app.php. You can delete this if you don’t need it.

    You can add as many files here as you want. PHP, INI and JSON files are supported.

    You can access the config everywhere by calling Config::get('filename.key').

    Use Config::get('app.name') to access the name key in config/app.php:

    Route specific headers

    $blader->addRoute('GET', '/rss', 'rss', function() {
    	header('Content-type: application/rss+xml; charset=utf-8');
    });

    Adding route specific variables

    $blader->addRoute('GET', '/rss', 'rss', function() {
    	// Return all variables you want in the view.
    	return [
    		'foo' => 'bar',
    	];
    });
    
    // 'views/rss.blade.php' can now print $foo

    Credits

    Visit original content creator repository
    https://github.com/xy2z/Blader