Flutter 윈도우에 설치하기
0. Android Studio 설치
다운로드 사이트 : developer.android.com/studio
1. Flutter 사이트에서 최신 SDK 다운받기
flutter-ko.dev/docs/development/tools/sdk/archive
2. 다운받은 파일을 원하는 곳에 압축해제(예: C:\src\flutter)
3. 압축푼 디렉토리의 경로를 환경변수 PATH에 추가
4. Flutter 환경 체크한 뒤 [!]가 있는지 체크(!가 있으면 해결해야함)
5. Dart와 Flutter 설치
6. New Flutter Project... 실행
안드로이드 Bottom Navigation 만들기
참조 : developer.android.com/guide/navigation/navigation-getting-started
1. 네비게이션 관련 Gradle 추가
- build.gradle에 추가
1
2
3
4
5
6
|
dependencies {
// 네비게이션 프래그먼트 추가
def nav_version = "2.3.3"
implementation "androidx.navigation:navigation-fragment-ktx:$nav_version"
implementation "androidx.navigation:navigation-ui-ktx:$nav_version"
}
|
cs |
- Safe Args 를 위해 build.gradle에 추가
1
2
3
4
|
dependencies {
def nav_version = "2.3.4"
classpath "androidx.navigation:navigation-safe-args-gradle-plugin:$nav_version"
}
|
cs |
1
2
3
|
viewBinding {
enabled = true
}
|
cs |
2. Bottom Navigation 에 들어갈 menu 추가
- 메뉴파일 추가하기
- bottom_nav_menu.xml 에 item 추가
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/restaurantFragment"
android:title="식당"
/>
<item
android:id="@+id/shuttleBusFragment"
android:title="셔틀"
/>
<item
android:id="@+id/dustFragment"
android:title="미세먼지"
/>
</menu>
|
cs |
- item의 title대신 이미지 넣기
- 선택한 아이콘을 item에 추가
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/restaurantFragment"
android:title="식당"
android:icon="@drawable/ic_baseline_restaurant_24"
/>
<item
android:id="@+id/shuttleBusFragment"
android:title="셔틀"
android:icon="@drawable/ic_baseline_directions_bus_24"
/>
<item
android:id="@+id/dustFragment"
android:title="미세먼지"
android:icon="@drawable/ic_baseline_filter_drama_24"
/>
</menu>
|
cs |
3. Fragment 생성
1) Fragment Layout 생성
2) Layout 위젯 만들기
- tools:context는 context로 연결할 class를 설정
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:tools="http://schemas.android.com/tools"
android:orientation="vertical"
android:gravity="center"
tools:context="com.example.navigationtutorial02.fragment.Restaurant">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/restaurant_title"
android:textSize="40dp"
android:text="식단"
/>
</LinearLayout>
3) Fragment 클래스 생성
- Fragment Package 추가
- fragment 패키지 생성
- fragment class 생성
- Fragment로 사용할 Class 생성(Restaurant / Shuttle / Dust)
- view binding 이용하여 class에 fragment 연결하기
class Restaurant : Fragment() {
private var mBinding : FragmentRestaurantBinding? = null
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
var binding = FragmentRestaurantBinding.inflate(inflater, container, false)
mBinding = binding
return mBinding?.root
}
override fun onDestroyView() {
mBinding = null
super.onDestroyView()
}
}
- item으로 등록한 fragment들도 같은 방식으로 생성
4. Navigation Graph 생성
- app:startDestination 에 처음 시작시 나타날 fragment 입력, android:name에 각 fragment에 맞는 class입력
<?xml version="1.0" encoding="utf-8"?>
<navigation xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/nav_graph"
app:startDestination="@id/restaurantFragment">
<fragment
android:id="@+id/shuttleFragment"
android:name="com.example.navigationtutorial02.fragment.ShuttleFragment"
android:label="fragment_shuttle"
tools:layout="@layout/fragment_shuttle" />
<fragment
android:id="@+id/restaurantFragment"
android:name="com.example.navigationtutorial02.fragment.RestaurantFragment"
android:label="fragment_restaurant"
tools:layout="@layout/fragment_restaurant" />
<fragment
android:id="@+id/dustFragment"
android:name="com.example.navigationtutorial02.fragment.DustFragment"
android:label="fragment_dust"
tools:layout="@layout/fragment_dust" />
</navigation>
5. activity_main.xml 에 BottomNavigationView / FragmentContainerView 추가
- FragmentContainerView - android:name 에 androidx.navigation.fragment.NavHostFragment 입력
- BottomNavigationView - app:menu 에 navigation 메뉴로 생성했던 nav_menu를 입력
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity"
android:orientation="vertical"
android:weightSum="1"
>
<androidx.fragment.app.FragmentContainerView
android:id="@+id/main_nav_host"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:name="androidx.navigation.fragment.NavHostFragment"
app:defaultNavHost="true"
app:navGraph="@navigation/nav_graph"
/>
<com.google.android.material.bottomnavigation.BottomNavigationView
android:id="@+id/bottomNav"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:menu="@menu/nav_menu"
/>
</LinearLayout>
- MainActivity 에 navigation fragment와 controller를 연결
class MainActivity : AppCompatActivity() {
private lateinit var mBinding : ActivityMainBinding
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
// 메인view에 infalte 바인딩
mBinding = ActivityMainBinding.inflate(layoutInflater)
setContentView(mBinding.root)
// Navigation Fragment 생성
var navigationFragment = supportFragmentManager.findFragmentById(R.id.main_nav_host) as NavHostFragment
// Navigation Controller 생성
var navController = navigationFragment.navController
// Bottom Navigation 메뉴, Navigation Controller 추가
NavigationUI.setupWithNavController(mBinding.bottomNav, navController)
}
}
==> 컴파일 및 실행
github주소 : github.com/powergi-1/navigation_tutorial
Android Studio 에서 git 사용하기
- git 저장소 위치 선택
- 프로젝트를 선택한뒤 git에 올릴 파일을 추가한다.
- commit
- remote git 에 올리기
- 등록 확인
안드로이드에 github 연동
- Android Studio에 github 정보 저장
(File > Settings > Version Control > GitHub > Add count > github 계정입력)
- 오류가 발생하면 "use token"으로 등록
- github에 로그인하여 설정으로 이동(로그인 > Settings)
- Developer settings 선택
- Personal access tokens > Generate new token 선택
- repo, admin:org, gist 선택 후 Generate token 클릭
- 생성된 토큰을 Android Studio 의 토큰 입력하는곳에 입력하여 github 등록
- 등록 확인
- remote git등록
- remote git 저장소 정보 입력
- 등록된 저장소 확인
ActionBar 보이기 / 가리기
내용을 보시려면 비밀번호를 입력하세요.
안드로이드 Intent 애니메이션 이동
- res 폴더에 새로운 폴더(anim) 생성
slide_in_left.xml / slide_out_right.xml / slide_in_right.xml / slide_out_left.xml
( * X를 Y로 바꿔주면 위아래로 슬라이드가 적용된다. )
1
2
3
4
5
6
|
<?xml version="1.0" encoding="utf-8"?>
<translate xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="250"
android:fromXDelta="100%"
android:interpolator="@android:anim/decelerate_interpolator"
android:toXDelta="0%" />
|
cs |
1
2
3
4
5
6
|
<?xml version="1.0" encoding="utf-8"?>
<translate xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="250"
android:fromXDelta="-100%"
android:interpolator="@android:anim/decelerate_interpolator"
android:toXDelta="0%" />
|
cs |
1
2
3
4
5
6
|
<?xml version="1.0" encoding="utf-8"?>
<translate xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="250"
android:fromXDelta="0%"
android:interpolator="@android:anim/decelerate_interpolator"
android:toXDelta="-100%" />
|
cs |
1
2
3
4
5
6
|
<?xml version="1.0" encoding="utf-8"?>
<translate xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="250"
android:fromXDelta="0%"
android:interpolator="@android:anim/decelerate_interpolator"
android:toXDelta="100%" />
|
cs |
- Main Activity에서 slide 사용
overridePendingTransition( 새로 들어올 Activity, 기존 Activity)
1
2
3
4
5
|
val messageIntent = Intent(this, MessageActivity::class.java)
startActivity(messageIntent)
overridePendingTransition(R.anim.slide_in_left, R.anim.slide_out_right)
finish()
|
cs |
- Sub Activity 에서 Slide 사용
1
2
3
4
|
backBtn.setOnClickListener {
finish()
overridePendingTransition(R.anim.slide_in_right, R.anim.slide_out_right)
}
|
cs |
[펌] Vimdiff 간단 사용법
Ctrl + w + w -> 분할된 화면 이동
Ctrl + w + = -> 분할된 화면의 크기가 동일하도록 조정
] + c -> 차이점이 있는 부분으로 이동 (Down)
[ + c -> 차이점이 있는 부분으로 이동 (Up)
d + o -> 현재 커서가 위치한 창 쪽으로 반대 창 쪽의 내용을 적용 시키기
d + p -> 현재 커서가 위치한 창 쪽의 내용을 반대 창 쪽으로 적용 시키기
z + o (or space) -> 접혀 있는 부분 열기
z + c -> 차이점 없는 부분 접기
:diffupdate -> 문서 간의 차이점을 다시 비교하도록 하는 명령 (한 쪽 창의 내용을 edit하다 보면 문서 간의 차이점을 나타내는 색깔이 없어지기도 함)
[출처] vimdiff 명령어|작성자 똥꾸용
(펌)KSH자동완성기능
Shell auto completion Shell csh ksh bash Single option completion Esc-Esc Esc-Esc Tab Unresolved reference menu Ctrl-D Esc = Tab-Tab
설명 하자면
.profile 에
set -o vi
를 넣어주고
ksh:/tmp/>>ls bin/ bin5/ include/ lib/ share/ bin2/ ftp/ info/ man/ src/ ksh:/tmp/>> #man directory로 들어간다고 한다면 ksh:/tmp/>>cd m #까지 치고 Esc + \ 치면 ksh:/tmp/>>cd man/ #자동 완성 됩니다 #이제 bin5로 드어가볼까요^^ ksh:/tmp/>>cd bi #여기까지 치고 Esc + = 1) bin/ 2) bin2/ 3) bin5/ ksh:/tmp/>>cd bi #여기서 \ 누르면 ksh:/tmp/>>cd bin #이렇게 되구 ksh:/tmp/>>cd bin5 #마지막 단어를 쳐주면 됩니다. ksh:/tmp//bin2>>
http://lists.q-linux.com/pipermail/ph-linux-newbie/2003-March/013657.htm...
추가로 BASH에서 위방향 버튼, 아래방향 버튼과 같은 역활을 하는 명령어는
Esc 를 누르면 vi 모드로 들어가고 k,j 를 이용하여 사용하면 되겠습니다.
[펌] RS-485란?
RS-232는 그라운드와 데이터 신호의 전압 차이로 상대 기기에 전달된다. 그래서 통신 선로가 길수록 전압 저하로 노이즈에 약하고 고속이나 장거리에는 부적합 한 것이 단점이다. 반면 RS-422(EIA-422)는 고속 및 장거리 노이즈에 상대적으로 강한 통신 방법이다. 232가 불평형 통신 선에 의한 인터페이스라면 485는 평행형 통신 선이며, 쌍방 접속으로 최대 10Mbps로 수 Km까지 전송이 가능하다. 485는 표 1에 나타낸 것처럼 422와 전기적으로 다른 것 이외에는 유사하다. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
[펌] vmware vdisk 용량 변경하기
- vmware 설치시 포함되어 있는 커맨드 라인 유틸리티로,
가상 하드디스크 생성
가상 하드디스크의 단편화 제거 (조각 모음..)
shrink(오그라들다?..이건 잘-_-...가상 하드를 압축한다는 이야기인지..)
가상 하드디스크 타입의 변경(고정 크기와 가변 크기)
가상 하드디스크 용량 증가 (maximum size 를 증가시킴. 감소는 않되는 듯-)
등의 기능을 지원한다.
가상 하드디스크 Maximum Size 변경하기
vmware-vdiskmanager -x <new-capacity> <disk-name>
<new-capacity> 의 단위는 Kb, Mb, Gb 를 사용하며, 입력한 capacity 가 가상 하드디스크의 Maximum Size 가 된다.
ex) vmware-vdiskmanager.exe -x 36Gb myDisk.vmdk
- 가상 하드디스크의 크기를 16Gb 로 변경하는 중.
이제 윈도 2003 서버에 비스타를 업그레이드 시켜 봅시다...;;;;
더 자세한 사항은 이곳으로..
[http://www.vmware.com/support/ws45/doc/disks_vdiskmanager_run_ws.html#1057509]
[출처] VMWare 에서 가상 하드디스크 용량 변경하기|작성자 ㅂㅈㅇ