Skip to content
Snippets Groups Projects
week01.md 8.57 KiB
Newer Older
yuichitamiya's avatar
yuichitamiya committed
# 1. Principles and practices / Project management

yuichitamiya's avatar
yuichitamiya committed
## Site

- [Class](https://fabacademy.org/2022/)
  - [Schedule](https://fabacademy.org/2022/schedule.html)
    - [Jan 26: principles and practices, project management](http://academy.cba.mit.edu/classes/principles_practices/index.html)
        - Assignment
        - (Weekly) Group Assignment
  - [Students](https://fabacademy.org/2022/people.html)
    - [Kannai (Yokohama, Japan)](https://fabacademy.org/2022/labs/kannai/)
        - Lab site
            - Weekly Group Assignment
            - Machine Building
            - Instruction
                - Tips
    - Student name
        - Student site
  - [Documents](https://fabacademy.org/2022/doc/index.html)
    - [**Assessment**](https://fabacademy.org/2022/nueval/)
        - Introduction
        - General Essentials
            1. Design files and code must be present in the archive in generically readable forms such as DXFs, STLs, etc., as well as in the original editable format (antimony, solidworks, eagle, CAD, etc).
            2. Your files must be hosted in your gitlab repository. Large files, greater than 10 MB discuss with instructor first.
            3. Take photos, notes and screenshots as you work - compress and resize your images for web
        - Commercial Board Policy
            - Acceptable use of Commercial Boards
                - In any case remember that Commercial Boards are not evaluated. They are not considered as your own work, but a necessary item for your work.
            -  Embedded processor boards
                - More advanced processors than AVR microcontrollers can be used. They might come in different form factors (chips, modules). You can solder them to your board or connect them with connectors. The key to be accepted as part of your design is that these commercial processors are embedded in your board.
            - Single board computers: Raspberry Pi, Beaglebone etc
                - These can be used as a substitute for your desktop/laptop computer. You still need to design your own embedded board for your projects.
        - Principles and Practices
        - Project Management
        - [**Final project requirements**](https://fabacademy.org/2022/nueval/project_requirements.html)

- [nueval](https://nueval.fabacademy.org/#/login)

## Schedules
Day|JST|Name|Where|PW|
-- |---       |--   |---                                        |---|
Wed|23:00-02:00|Class|[Zoom class](http://fabacademy.org/2022/video.html)|1xxx|
Sat|10:00-18:00|Local session|@kannai or video conference ||
Sat|24:00-02:00|Global Open Time|[Zoom mcu](https://zoom.us/j/9699009392)||
Mon|23:00-24:00|Recitation|[Zoom class](http://fabacademy.org/2022/video.html)||
yuichitamiya's avatar
yuichitamiya committed
Tue|12:00, 21:00|Regional Review(Asia)|http://fabacademy.org/2022/video.html |1xxx|
yuichitamiya's avatar
yuichitamiya committed

## (Individual) Assignment

### Principles and Practices
> plan and sketch a potential final project

#### Have you answered these questions?
- Sketched your final project idea/s  
- Described briefly what it will do and who will use it

### Project Management
> work through a git tutorial  
> build a personal site in the class archive describing you and your final project

#### Have you answered these questions?
- Made a website and described how you did it
- Created a section about yourself on that website
- Added a page with a sketch and description of your final project idea(s)
- Documented steps for creating your Git repository and adding files to it
- Pushed to the class GitLab
- Signed and uploaded Student Agreement

## ToDo

### git
- [git](http://git-scm.com/)
> Git is a free and open source distributed version control system designed to handle everything from small to very large projects with speed and efficiency.

- GitLab
  - [fabcloud](https://gitlab.fabcloud.org/)
    - Sign in: ID from [fablabs.io](https://fablabs.io/)
yuichitamiya's avatar
yuichitamiya committed
        - Academany / Fab Academy / 2022 / Fab Academy 2022 Labs / Kannai / Kannai site
        - Academany / Fab Academy / 2022 / Fab Academy 2022 Labs / Kannai / Kannai students / student-name
        - Academany / Fab Academy / 2022 / Fab Academy 2022 Class
            - **Notification** -> **Watch**
            - Issue -> Email

- git tutorial [class archive](http://academy.cba.mit.edu/classes/project_management/archive.html)
  - [tutorial](http://git-scm.com/docs/gittutorial)
  - [Pro Git Book](http://git-scm.com/book/en/v2)

### Install (macOS)
```
% git --version
yuichitamiya's avatar
yuichitamiya committed
git version 2.24.3 (Apple Git-128)

% brew --version
yuichitamiya's avatar
yuichitamiya committed
Homebrew 3.3.9
yuichitamiya's avatar
yuichitamiya committed

// If no git and homebrew
// Install Homebrew from https://brew.sh/
% /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
// Install github
% brew install git
```

### Git setup
```
% git config -l
user.name=your_user_name
user.email=your@email.com

% git config --global user.name
your_user_name

% git config --global user.email
your@email.com

// If no user name and email
% git config --global user.name "Your Name"
% git config --global user.email "you@example.org"
```

### SSH key setup
```
% cd ~
% ls -la
.ssh
% cd .ssh
% ls
id_rsa		id_rsa.pub

// If no .ssh folder or keys
% cd ~
% ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/yuichi/.ssh/id_rsa):
// syntax % ssh-keygen -t rsa -f id_rsa -C "comment"
yuichitamiya's avatar
yuichitamiya committed


% cd ~
% cd .ssh
% ls
id_rsa		id_rsa.pub
% cat id_rsa.pub
ssh-rsa AAA....this_is_your_public_key....@.local
% cat id_rsa.pub | pbcopy
// or use command+C to copy ssh-rsa........to_end
```
GitLab > your icon(right up) > Edit profile > SSH Keys(left) > command + v to paste public key

!!! notes
    If you want to make more secured ED25519 format key pair  

    % cd ~/.ssh  
    % ssh-keygen -t ed25519 -C "your@email"  
    % ls  
    id_ed25519    id_ed25519.pub    

    Ref. https://docs.gitlab.com/ee/ssh/index.html  


yuichitamiya's avatar
yuichitamiya committed
### Local repository
```
% ssh -T git@gitlab.fabcloud.org
Welcome to GitLab, @your_name!

yuichitamiya's avatar
yuichitamiya committed
% cd ~
% mkdir repos
% cd repos

// clone your repo from gitlab to your pc
// Girlab > your repo > Clone > Clone with SSH > copy "git@gitlab.fabcloud.org:your/project/path.git"
% git clone git@gitlab.fabcloud.org:your/project/path.git student_site
Cloning into 'student_site'...
% ls
student_site
```

### Install Mkdocs in local PC
```
% pip -V
pip 21.2.4 from /usr/local/lib/python3.9/site-packages/pip (python 3.9)
% python3 -V
Python 3.9.7

// If no pip
% cd Downloads/
% curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
% ls
get-pip.py
% python3 get-pip.py

% cd ~
% cd student_site
% ls
README.md		mkdocs.yml
docs			requirements.txt
% pip install -r requirements.txt
% mkdocs serve
INFO     -  Building documentation...
INFO     -  Cleaning site directory
INFO     -  Documentation built in 0.68 seconds
INFO     -  [14:47:34] Serving on http://127.0.0.1:8000

// to stop mkdocs server
Control +C
```
Open in Browser
[http://127.0.0.1:8000](http://127.0.0.1:8000)

!!! notes
    You may need to install mkdocs separately

    % brew install mkdocs  
    % pip install -r requirements.txt  



yuichitamiya's avatar
yuichitamiya committed
### Editter
#### ATOM

- [site](https://atom.io/)
- Tips 2021: [Useful packages samples](http://tatsuro.homma.fabcloud.io/fabacademy/tips/content/atom/#useful-packages-samples)

```
% cd ~/repos/student_site
% atom .
```

### Git
```
// Copy agreement text from https://fabacademy.org/2022/doc/students.md
// docs > about > New file > agreement.md
// pase text
// read and sign your name
// save

% cd ~/repos/student_site
yuichitamiya's avatar
yuichitamiya committed
.git
% git status
% git add .
% git status
% git commit -m "first commit agreement"
% git status
% git push
// cap 10M/push

// Go to GitLab
// docs > about > index.md > Edit
Hi! I am <your name> .
// Commit changes

% cd ~/repos/student_site
% git pull

% mkdocs serve
```
Tips 2021 [How to recover after rejected large files commit](http://academany.fabcloud.io/fabacademy/2021/labs/kannai/site/instruction/tips/git_manage_large_commit/)

### File size

#### ffmpeg
```
% cd ~
% brew install ffmpeg

// video
// http://academy.cba.mit.edu/classes/computer_design/video.html
// variable bit rate 1080p MP3:
% ffmpeg -i input_video -vcodec libx264 -crf 25 -preset medium -vf scale=-2:1080 -acodec libmp3lame -q:a 4 -ar 48000 -ac 2 output_video.mp4

// image
% cd path/to/image
% ffmpeg -i input.jpg -vf scale=-1:1080 output.jpg
```
Tips 2021 [FFmpeg_test](http://academany.fabcloud.io/fabacademy/2021/labs/kannai/site/instruction/tips/ffmpeg_test/)  
Tips 2020 [ffmpeg example](https://fabacademy.org/2020/labs/kannai/students/tatsuro-homma/project/ffmpeg.html)

```
% cd path/to/image
% du -ha | sort | head
1.0M   input.jpg
0.5M   output.jpg
```

#### imagemagic
[site](https://imagemagick.org/)
yuichitamiya's avatar
yuichitamiya committed

## The Fab Charter

!!! Attention
    The Fab Charter  
    https://fab.cba.mit.edu/about/charter/