activity_main.xml
<?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"
android:orientation="vertical"
tools:context=".MainActivity">
<AutoCompleteTextView android:id="@+id/autoCompleteTextView1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:completionHint="선택하세요"
android:hint="자동완성텍스트뷰"
android:completionThreshold="2"/>
<MultiAutoCompleteTextView android:id="@+id/multiAutoCompleteTextView1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:completionHint="선택하세요"
android:completionThreshold="2"
android:hint="멀티자동완성텍스트뷰"/>
</LinearLayout>
MainActivity.java
package com.example.boki.autocompletetextview;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.AutoCompleteTextView;
import android.widget.MultiAutoCompleteTextView;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
String [] items = { "CSI-뉴욕", "CSI-라스베가스", "CSI-마이애미", "Friends", "Fringe", "Lost" };
AutoCompleteTextView auto = (AutoCompleteTextView)findViewById(R.id.autoCompleteTextView1);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_dropdown_item_1line, items);
auto.setAdapter(adapter);
MultiAutoCompleteTextView multi = (MultiAutoCompleteTextView)findViewById(R.id.multiAutoCompleteTextView1);
MultiAutoCompleteTextView.CommaTokenizer token = new MultiAutoCompleteTextView.CommaTokenizer();
multi.setTokenizer(token);
multi.setAdapter(adapter);
}
}
activity_main.xml
<?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="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
tools:context=".MainActivity">
<RadioGroup android:id="@+id/gradioGroup1"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<RadioButton android:id="@+id/rdoSecond"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:checked="true"
android:text="Second 액티비티"/>
<RadioButton android:id="@+id/rdoThird"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:checked="true"
android:text="Third 액티비티"/>
</RadioGroup>
<Button android:id="@+id/btnNewActivity"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="새 화면 열기"/>
</LinearLayout>
second.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#00FF00">
<Button android:id="@+id/btnReturn"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="돌아가기"/>
</LinearLayout>
third.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#00FFFF">
<Button android:id="@+id/btnReturn"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="돌아가기"/>
</LinearLayout>
SecondActivity.java
package com.example.boki.intentbasic;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
public class SecondActivity extends Activity {
@Override
protected void onCreate( Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.second);
Button btnReturn = (Button)findViewById(R.id.btnReturn);
btnReturn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
finish();
}
});
}
}
ThirdActivity.java
package com.example.boki.intentbasic;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
public class ThirdActivity extends Activity {
@Override
protected void onCreate( Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.third);
Button btnReturn = (Button)findViewById(R.id.btnReturn);
btnReturn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
finish();
}
});
}
}
MainActivity.java
package com.example.boki.intentbasic;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.RadioButton;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
setTitle("메인 액티비티 (수정)");
final RadioButton rdoSecond = (RadioButton) findViewById(R.id.rdoSecond);
Button btnNewActivity = (Button)findViewById(R.id.btnNewActivity);
btnNewActivity.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent;
if(rdoSecond.isChecked() == true) intent = new Intent(getApplicationContext(), SecondActivity.class);
else intent = new Intent(getApplicationContext(), ThirdActivity.class);
startActivity(intent);
}
});
}
}
AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.boki.intentbasic">
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".SecondActivity" android:label="Second 액티비티"/>
<activity android:name=".ThirdActivity" android:label="Thrid 액티비티"/>
</application>
</manifest>
activity_main.xml
필요 없다! 왜냐하면 java로만 구현할것이기 때문에
MainActivity.java
package com.example.boki.viewcontainer;
import android.graphics.Color;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentTransaction;
import android.support.v7.app.ActionBar;
import android.support.v7.app.AppCompatActivity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.LinearLayout;
@SuppressWarnings("deprecation")
public class MainActivity extends AppCompatActivity implements ActionBar.TabListener { // 여기에서 ActionBar를 v7로 받아야함!!
ActionBar.Tab tabSong, tabArtist, tabAlbum;
MyTabFragment myFrags[] = new MyTabFragment[3];
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
ActionBar bar = getSupportActionBar();
bar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
tabSong = bar.newTab();
tabSong.setText("음악별");
tabSong.setTabListener(this);
bar.addTab(tabSong);
tabArtist = bar.newTab();
tabArtist.setText("가수별");
tabArtist.setTabListener(this);
bar.addTab(tabArtist);
tabAlbum = bar.newTab();
tabAlbum.setText("앨범별");
tabAlbum.setTabListener(this);
bar.addTab(tabAlbum);
} // onCreate
@Override
public void onTabSelected(ActionBar.Tab tab, FragmentTransaction fragmentTransaction) {
MyTabFragment myTabFrag = null;
if(myFrags[tab.getPosition()] == null) {
myTabFrag = new MyTabFragment();
Bundle data = new Bundle();
data.putString("tabName", tab.getText().toString());
myTabFrag.setArguments(data);
myFrags[tab.getPosition()] = myTabFrag;
} else myTabFrag = myFrags[tab.getPosition()];
fragmentTransaction.replace(android.R.id.content, myTabFrag);
}
@Override
public void onTabUnselected(ActionBar.Tab tab, FragmentTransaction fragmentTransaction) {
}
@Override
public void onTabReselected(ActionBar.Tab tab, FragmentTransaction fragmentTransaction) {
}
public static class MyTabFragment extends Fragment {
String tabName;
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Bundle data = getArguments();
tabName = data.getString("tabName");
} //onCreate
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.MATCH_PARENT,
LinearLayout.LayoutParams.MATCH_PARENT
);
LinearLayout baseLayout = new LinearLayout(super.getActivity());
baseLayout.setOrientation(LinearLayout.VERTICAL);
baseLayout.setLayoutParams(params);
if(tabName == "음악별") baseLayout.setBackgroundColor(Color.RED);
if(tabName == "가수별") baseLayout.setBackgroundColor(Color.GREEN);
if(tabName == "앨범별") baseLayout.setBackgroundColor(Color.BLUE);
return baseLayout;
} //onCreateView
} // MyTabFragment
}
My Code
import tensorflow as tf
hello = tf.constant('Hello, TensorFlow!')
sess = tf.Session()
printf(sess.run(hello))
Error Log
Traceback (most recent call last):
~~~~ in <module>
sess = tf.Session()
AttributeError: module 'tensorflow' has no attribute 'Session'
(Fix) 파이썬3.7을 제거후 아나콘다로 5.2를 설치해 conda에서 파이썬 3.6을 설치하고 텐서플로우 2.0 버전이 아닌 1.x버전을 설치할것이다.(1.6에는 몇몇 이슈가 있다고 발견이 되어 1.5로 설치)
결국 싹 밀고 (Fix) 대로 하기로 정했다
Links
위의 Anaconda를 path로 등록해주면 기존 아나콘다 버전과의 충돌등이 있을 수 있다고 한다. 나는 모든 버전의 파이썬 및 아나콘다를 지웠기때문에 체크함
자 이제 Anaconda Prompt를 이용할 수 있다!
나는 보통 꼭 써야될 개발툴,IDE 등등은 작업표시줄에 추가시켜놓는다
새벽 4시가 다 되도록 뭐한다냐…에효
꼭!!!! 관리자 권한으로 실행시켜주자.. 나는 이렇게 안해서 패키지업데이트 다 해놓고 전부다 deny되었다. 이게 안되고있는지 몰랐다..한 15분 날림
이제 콘다의 패키지를 업데이트 시켜주자. 어차피 5.2 버전에 맞게 다운받았으므로 파이썬이 3.7버전이 깔리는 일은 없다. 걱정마시라
Proceed ([y]/n)?이 나오면 y를 살포시 입력해주자. 안나오는 경우도 있다. PC마다 다른것 같다
>conda --version
conda 4.5.4
>python --version
Python 3.6.5 :: Anaconda, Inc.
>conda update -n base conda
끝부분에 Verifying transaction: done / Excuting transaction: done이 떴는지 꼭 확인하자. deny혹은 오류가 났다면 관리자 권한이 아닌것이다!
>conda update --all
...
done
여기 업데이트는 오랜 시간을 요한다. 유튜브나 다른 코딩하다가 5~10분정도 뒤에 돌아오자
>python -m pip install --upgrade pip
...
>conda --version
conda 4.7.12
>python --version
Python 3.6.9 :: Anaconda, Inc.
확실하게 처음과 비교해서 conda의 버전과 python의 버전이 바뀐것을 알 수 있다. 3.7을 넘지않는 3.6.9로 설치가 되었다.
이제 텐써플로우(tensorflow)를 설치해보겠습니다. (3.6버전 이하의 파이썬이어야됩니다)
먼저 아나콘다3의 가상환경을 구축해야된다.
#conda create -n '가상환경 이름'(임의) python='파이썬 버전'(3.6)
>conda create -n boki python=3.6
#activate '가상환경 이름' / deactivate '가상환경 이름'
>(base)activate 'boki'
>(boki)
앞에 (base)에서 (접속한 가상환경명)으로 바뀐것을 확인할수 있을것이다
conda install tensorflow를 하지말고
>pip install tensorflow==1.5
....
Successfully uninstalled tensorflow-2.0.0(만약에 위에 그냥 설치한 경우에 이렇게 뜬다)
...
>conda list
...
tensorflow 1.5.0
>pip freeze
tensorflow==1.5.0
드디어… 원래 깔려있던 아나콘다와 파이썬을 모두 지우고 원래 목표로했던 파이썬 3.6버전을 아나콘다로 설치하고 텐써플로우를 1.5버전으로 설치했다.
Not Fix Error
>python
>>>import tensorflow as tf
>>>hello = tf.constant('Hello, TensorFlow!')
>>>sess = tf.Session()
>>>print(sess.run(hello))
b'Hello, TensorFlow!'
b가 출력되는건 문자열 형태가 byte형태로 나타내지기 때문에 그렇단다
이제 Python 인터프리터로 확인해보겠다.
C:\ProgramData\Anaconda3\Lib\idlelib(나같은 경우)
C:\Anaconda3\Lib\idlelib(다른분들)
이 경로로 이동을 해서 idle.bat파일을 우클릭-보내기-바탕화면에 바로가기 만들기를 해준다
ㅅㅂㅅㅂㅅㅂㅅㅂㅅㅂㅅㅂㅅㅂㅅㅂㅅㅂㅅㅂㅅㅂㅅㅂㅅㅂㅅㅂㅅㅂㅅㅂㅅㅂㅅㅂ
Link : 새로운 가상환경을 만들어서 해보란다
아니면 쥬피터 노트북 아니면 스파이더에서 코딩하는 방법이 있다 해보자 나 아직 안죽었다 지금 새벽 6시
쥬피터 노트북 설치해서 웹으로 돌리던중 노트북을 오래써서 그런지는 모르겠지만 너무 느려터져서 스파이더를 설치해보았다.
다 때려치고 ㅋㅋ나의 첫 텐서플로우 초기설정은 인터넷보고하는건 포기하기로 했다. 결국 다 지웠다.
저녁11시부터 아침 8시까지 하다가 안되서 자려다가 책을 펴봤다. update같은거 안하고 했다 그리고 성공했다…
Anaconda로 설치를 했다. 버전은 최신버전이 아닌 위에 링크된 5.2.0버전
초기에 텐서플로우 2.0 버전일때 다른 문법(2.0ver)을 쓰면 실행이 되긴했다. 하지만 예제들과 호환되는건 1.x버전이다
>(base)conda create -n test python=3.6.4
>(base)conda activate test
>(test)conda install pandas=0.22.0
>(test)conda install numpy=1.14.1
>(test)conda install keras=2.1.6
>(test)pip install tensorflow==1.8
>(test)conda install scikit-learn=0.19.1
>(test)conda install seaborn=0.8.1
>(test)conda install jupyter notebook
>(test)conda install spyder
쥬피터 실행은 jupyter notebook / 스파이더 실행은 spyder이다(꼭 activate base가 아닌 자기가 create한 가상환경에서 하자!)
Python 3.6.4 |Anaconda, Inc.| (default, Mar 12 2018, 20:20:50) [MSC v.1900 64 bit (AMD64)]
Type "copyright", "credits" or "license" for more information.
IPython 7.9.0 -- An enhanced Interactive Python.
import tensorflow as tf
hello = tf.constant('Hello, TensorFlow!')
#hello = tf.constant('안녕, 텐서플로우!')
sess = tf.Session()
print(sess.run(hello))
#print(sess.run(hello).decode('UTF-8'))
b'Hello, TensorFlow!'
인터넷이 만능이 아니다. 안될때는 책에 적힌 그대로 따라해봐도 좋을것 같다.
git rm --cached -r .
You’ll find this post in your _posts
directory. Go ahead and edit it and re-build the site to see your changes. You can rebuild the site in many different ways, but the most common way is to run jekyll serve
, which launches a web server and auto-regenerates your site when a file is updated.
To add new posts, simply add a file in the _posts
directory that follows the convention YYYY-MM-DD-name-of-post.ext
and includes the necessary front matter. Take a look at the source for this post to get an idea about how it works.
Jekyll also offers powerful support for code snippets:
def print_hi(name)
puts "Hi, #{name}"
end
print_hi('Tom')
#=> prints 'Hi, Tom' to STDOUT.
Check out the Jekyll docs for more info on how to get the most out of Jekyll. File all bugs/feature requests at Jekyll’s GitHub repo. If you have questions, you can ask them on Jekyll’s dedicated Help repository.
Block Mathjax
\[f(x) = ax + b\]Inline Mathjax $a \neq b$