homebrewのインストールで error: Not a valid ref: refs/remotes/origin/master が出た時の対処法
公式からコマンド叩いたらこのエラーが出たのに何でだろうって思って調べたらISSUEが出てた。
下記コマンドで無事インストールできた。
rm -fr $(brew --repo homebrew/core) brew tap homebrew/core
docker-composeでpythonコマンドを実行するメモ
docker-compose.ymlを用いてDjangoプロジェクト作成までやっていることを前提としてます。
migrationとかcreatesuperuserやるとき、docker-composeコマンド経由で命令出せるのかなと思って調べてたらあったので試してみた結果のメモです。
docker-compose run [サービス名] [実行したいコマンド]
で出来ました。
叩いたコマンド
docker-compose run --rm web python manage.py migrate
docker-compose run --rm web python manage.py createsuperuser
--rm
つけないと上記コマンドを実行するたびコンテナが増えるので、つけとくと良いと思いました。
訂正(2021-02-05 17:50)
docker-compose run
じゃなくてdocker-compose exec
でいけました。(汗
docker-compose exec web python manage.py migrate
docker-compose exec web python manage.py createsuperuser
こんな感じですね。
Java開発環境の構築メモ(Spring Tools 4 Eclipse 設定編)
インストールまで完了したので、設定を行っていく。
起動時の設定
「SpringToolSuite4.exe」をダブルクリックして、Spring Tools 4を起動する。
そうすると、作業フォルダを設定する画面が開くので、任意のフォルダを指定する。
デフォルトだと、ユーザーフォルダ内のドキュメントフォルダが指定されている。
問題なければ「Launch」をクリックする。
この画面が出たら起動成功。
ビルドツール(Gradle)の設定
続いてビルドツール(Gradle)をインストールしていく。
「Help」→「Eclipse Marketplace」をクリックする。
ウィンドウが開いたら「Gradle」と入力して検索する。
「Buildship Gradle Integration 3.0」がヒットするので「Install」ボタンをクリックする。
次に「Update」をクリックして最新の状態にしておく。
ライセンス規約の確認画面が表示されるので、内容を確認して「I accept the terms of the license agreement」を選択して「Finish」をクリックする。
アップデートが始まる(右下にUpdating Softwareと表示される)ので、しばらく待機する。
アップデートが完了したらアプリの再起動を求められるので「Restart Now」をクリックしてアプリを再起動する。
これで設定は完了!
Java開発環境の構築メモ(Windows10 + OpenJDK 11 + Spring Tools 4 Eclipse)
①OpenJDKのダウンロード~環境変数設定
OpenJDK11を下記URLよりDLする。
「jdk.java.net/13」をクリックする。(OpenJDK11じゃないけど問題ない)
「Archive」をクリックする。
下にスクロールすると「11.0.2 (build 11.0.2+9)」があるのでWindows 64bitの「zip」をクリックする。
ダウンロードが完了したら、解凍してCドライブ直下に配置する。
そしたら次は、環境変数の設定をする。
タスクバーにある虫眼鏡の検索から「環境変数」と入力し「システム環境変数の編集」をクリックする。
システムのプロパティが開くので、右下の「環境変数」をクリックする。
「Path」を選択して「編集」をクリックする。
「新規」をクリックして「C:\jdk-11.0.2\bin」と入力する。
そしたらOKを押してウィンドウを閉じていく。
これでOpenJDK11の設定は完了!
コマンドプロンプトで下記コマンドを実行するとバージョン確認が出来る。
java -version
javac -version
②Spring Tools 4のインストール
Spring Tools 4を下記URLよりDLする。
私がDLした時のファイル名は「spring-tool-suite-4-4.6.0.RELEASE-e4.15.0-win32.win32.x86_64.self-extracting.jar」となっていた。
ファイルはユーザーフォルダ等に移動しとく。(これは任意のフォルダでOK)
コマンドプロンプトで下記のコマンドを打ち込んでエンターを押す。
java -jar spring-tool-suite-4-4.6.0.RELEASE-e4.15.0-win32.win32.x86_64.self-extracting.jar
そうすると解凍が始まって「sts-4.6.0.RELEASE」フォルダが作られている。
「SpringToolSuite4.exe」をダブルクリックすることで、Spring Tools 4を起動出来る。
これでSpringTool4の設定のインストールも完了!
(解凍しただけなので、インストールではないかもしれない…)
次はSpringTool4の設定をしていこう。
Docker for Windowsのインストール方法(ver2.2.0.4)
Dockerを触ってみようと思い立ったので、インストール方法とかまとめるよ!
OSはWindows 10 Proだよ!
Dockerのバージョンは2.2.0.4だよ!
では進めていきます。
Hyper-Vの有効化
まずは、Hyper-Vの有効化から。
これをしないとDocker動かない。
コントロールパネルの「プログラムと機能」から
左にある「Windowsの機能の有効化または無効化」をクリック。
「Hyper-V」にチェックを入れる。
そして設定を有効にするために、Windowsを再起動する。
続いて、Dockerのダウンロードをする。
Docker for Windowsのダウンロード
下記サイトよりexeファイルをダウンロードします。
docs.docker.com
Download from Docker Hubをクリックして
Get Dockerをクリックするとダウンロードが始まる。
次にインストールをしていく。
Docker for Windowsのインストール
ダウンロードした「Docker Desktop Installer.exe」をダブルクリックして、インストーラーを起動する。
元からチェックが2つ付いているので、そのままOKをクリックする。
※補足
Enable required Windows Features
必要なWindows機能を有効にするかどうか。
Add shortcut to desktop
デスクトップにショートカットを作成するかどうか。
Use Windows containers instead of Linux containers
Linuxコンテナーの代わりにWindowsコンテナーを使用するかどうか。
(後で設定変更可能らしい)
OKを押すとインストールが始まる。
しばらくすると、インストールが完了する。
Windowsを再起動する。
そうすると、こんな画面が表示された。(自動では表示されないかも)
そして、右下のタスクバーにはくじらさんのマークが!
これでDockerのインストールまで完了!
簡単だね~!
【Android】BottomSheetBehaviorの実装方法メモ
記事見てみると、サポートライブラリが旧情報しか無かったので困惑した為、メモを残そうと思う。
AndroidXで実装する!
こんな感じで実装出来た!
ボタンを押したら、BottomSheetBehaviorの機能を使って、リストを下から表示させるというもの。
注意点として、レイアウトは「coordinatorlayout」を使わないと実装出来なかった事かな。
使わないでも実装出来るのかは謎い。詳しい人教えて欲しいっす。
レイアウトが他にもいくつかあって、いまいち使い分け方が理解出来ていないので、自分の中での課題ですね。
開発環境
Android Studio = 3.5.3
compileSdkVersion = 29
targetSdkVersion = 29
minSdkVersion = 21
サポート ライブラリ = Androidx
Lang = Java
ソース
package com.hiropon.test; import androidx.appcompat.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.ArrayAdapter; import android.widget.Button; import android.widget.ListView; import com.google.android.material.bottomsheet.BottomSheetBehavior; public class MainActivity extends AppCompatActivity { private BottomSheetBehavior behavior; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // BottomSheetの処理 View bottomSheet = findViewById(R.id.bottom_sheet); behavior = BottomSheetBehavior.from(bottomSheet); behavior.setState(BottomSheetBehavior.STATE_HIDDEN); ArrayAdapter<String> menu_adapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1); menu_adapter.add("test1"); menu_adapter.add("test2"); menu_adapter.add("test3"); menu_adapter.add("test4"); menu_adapter.add("test5"); ListView menuList = findViewById(R.id.list_menu); menuList.setAdapter(menu_adapter); Button btnPlayer1 = findViewById(R.id.Button1); btnPlayer1.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { if (behavior.getState() == BottomSheetBehavior.STATE_EXPANDED) { behavior.setState(BottomSheetBehavior.STATE_HIDDEN); } else { behavior.setState(BottomSheetBehavior.STATE_EXPANDED); } } }); } }
<?xml version="1.0" encoding="utf-8"?> <androidx.constraintlayout.widget.ConstraintLayout 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"> <Button android:id="@+id/Button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="B1" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" /> <androidx.coordinatorlayout.widget.CoordinatorLayout android:id="@+id/coordinatorLayout" android:layout_width="match_parent" android:layout_height="match_parent" android:translationZ="2dp" tools:layout_editor_absoluteX="-179dp" tools:layout_editor_absoluteY="-16dp"> <LinearLayout android:id="@+id/bottom_sheet" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@android:color/white" android:orientation="vertical" app:behavior_hideable="true" app:behavior_peekHeight="200dp" app:layout_behavior="@string/bottom_sheet_behavior"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginStart="15dp" android:layout_marginTop="15dp" android:text="Menu" android:textSize="18sp" /> <ListView android:id="@+id/list_menu" android:layout_width="match_parent" android:layout_height="wrap_content" android:divider="@color/colorWhite" /> </LinearLayout> </androidx.coordinatorlayout.widget.CoordinatorLayout> </androidx.constraintlayout.widget.ConstraintLayout>
参考リンク
Bottom Sheets の実装方法 - ユーザーインターフェイス - Android 開発入門
[Android] ListView + Bottom Sheet でマテリアルな一覧画面を作ってみた - Qiita
BottomSheetBehaviorを使う - Qiita
縦または横一列に要素を並べるリニアレイアウト (LinearLayout) - ユーザーインターフェイス - Android 開発入門
【Android】Buttonの形を丸型にする
開発環境
Android Studio 3.5.3
compileSdkVersion = 29
targetSdkVersion = 29
minSdkVersion = 21
ソース
適当なxmlファイル名(今回はcircle_button.xml)で作って下記の通り記述する。
<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="oval"> <solid android:color="#FFF388"/> </shape>
※補足
android:shape="oval"の記述で、ボタンが楕円形になる。
ボタンのカラーは黄色にしてます。
そして、作ったcircle_button.xmlをdrawableフォルダにつっこむ。
このままだと楕円なってしまう(レイアウトの設定次第ではあると思う)ので、activity_main.xmlでボタンのwidthとHeightを同じサイズする。
<Button android:id="@+id/Button1" android:layout_width="50dp" android:layout_height="50dp" android:text="B1" android:background="@drawable/circle_button" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toRightOf="parent" app:layout_constraintTop_toTopOf="parent" />
今回は「android:layout_width」と「android:layout_height」を「50dp」に設定している。
あとは、上記の通り「android:background」を追加して、作ったcircle_button.xmlを設定("@drawable/circle_button")してあげれば完成!
こんな感じになります。
参考リンク
【Android】動く丸形ボタンを drawable だけで作ってみた | PisukeCode - Web開発まとめ
[Android] SHAPEタグを使って出来ること〜画像ファイルを使わずにボタンや背景をカスタマイズする〜 | Developers.IO
http://android-note.open-memo.net/sub/button__make_round_shape_button.html
【Android】BottomSheetDialogの実装方法メモ
こんな感じで実装出来た!
開発環境
Android Studio = 3.5.3
compileSdkVersion = 29
targetSdkVersion = 29
minSdkVersion = 21
サポート ライブラリ = Androidx
Lang = Java
ソース
openDialogメソッドに書いてあります。
ボタンとかレイアウトは適当です。
package com.hiropon.test; import androidx.appcompat.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.ImageButton; import android.widget.Toast; import com.google.android.material.bottomsheet.BottomSheetDialog; public class MainActivity extends AppCompatActivity { private BottomSheetDialog dialog; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Button btnPlayer1 = findViewById(R.id.Button1); btnPlayer1.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { openDialog(); } }); Button btnPlayer2 = findViewById(R.id.Button2); btnPlayer2.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { openDialog(); } }); } private void openDialog() { View view = getLayoutInflater().inflate(R.layout.layout_bottom_sheet, null); dialog = new BottomSheetDialog(this); dialog.setContentView(view); ImageButton btn1 = (ImageButton) view.findViewById(R.id.btn1); btn1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Toast.makeText(v.getContext(),"ImageButton1が押されました",Toast.LENGTH_SHORT).show(); dialog.dismiss(); } }); ImageButton btn2 = (ImageButton) view.findViewById(R.id.btn2); btn2.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Toast.makeText(v.getContext(),"ImageButton2が押されました",Toast.LENGTH_SHORT).show(); dialog.dismiss(); } }); ImageButton btn3 = (ImageButton) view.findViewById(R.id.btn3); btn3.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Toast.makeText(v.getContext(),"ImageButton3が押されました",Toast.LENGTH_SHORT).show(); dialog.dismiss(); } }); dialog.show(); } }
<?xml version="1.0" encoding="utf-8"?> <androidx.constraintlayout.widget.ConstraintLayout 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"> <Button android:id="@+id/Button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Button1" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintHorizontal_bias="0.306" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toRightOf="parent" app:layout_constraintTop_toTopOf="parent" app:layout_constraintVertical_bias="0.498" /> <Button android:id="@+id/Button2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Button2" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintHorizontal_bias="0.709" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toRightOf="parent" app:layout_constraintTop_toTopOf="parent" app:layout_constraintVertical_bias="0.498" /> </androidx.constraintlayout.widget.ConstraintLayout>
<?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="wrap_content" android:orientation="horizontal" android:background="#ffffff"> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_weight="1" android:gravity="center" android:orientation="vertical"> <ImageButton android:id="@+id/btn1" android:layout_width="48dp" android:layout_height="48dp" android:background="@mipmap/ic_launcher" /> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center" android:text="Button1"/> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_weight="1" android:gravity="center" android:orientation="vertical"> <ImageButton android:id="@+id/btn2" android:layout_width="48dp" android:layout_height="48dp" android:background="@mipmap/ic_launcher" /> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center" android:text="Button2"/> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_weight="1" android:gravity="center" android:orientation="vertical"> <ImageButton android:id="@+id/btn3" android:layout_width="48dp" android:layout_height="48dp" android:background="@mipmap/ic_launcher" /> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center" android:text="Button3"/> </LinearLayout> </LinearLayout>
Visual Studio Codeの日本語化手順 - Windows10
Ver 1.42
Visual Studio Codeを起動する。
↓
ViewタブのCommand Paletteをクリックする。
↓
configure display languageと入力してリストに出てきたらクリックする。(途中で予測変換でリストに表示された)
↓
install additional languagesをクリックする。
↓
Japanese Language Pack for Visual Studio Codeを選択してインストールする。
↓
Visual Studio Codeを再起動する。
以上
【Android】画面の固定方法
AndroidManifest.xml内の<activity>
タグ内に下記を追記する。
横画面固定の自動回転有り
android:screenOrientation="sensorLandscape"
横画面固定の自動回転無し
android:screenOrientation="landscape"
縦画面固定はlandscape
のところをportrait
にすれば良いと思う。
自分では横画面しか試してないので、縦画面を試す時になったら必要に応じて確認し、当記事を修正する。
【Android】Android Studioで実機デバッグ手順
1. 開発者向けオプションを表示させる
設定→端末情報のにある「ビルド番号」を連続でタップする。
そうすると設定の所に開発者オプションが表示される。
↓
2. 開発向けオプションのUSBデバッグをONにする
↓
3. Google USB ドライバーのインストール確認
「SDK Manager」で「SDK Tools」のタブを開く。
「Google USB Driver」がインストールされていることを確認します。
されていなければインストールする。
↓
3. PCと端末をUSBで接続する
つなぐと、Android端末側に接続を許可して良いかのメッセージ?が表示されるので許可する。 私の場合は、初回に表示されなかった?(スルーしてた?)と思う。 ↓
4. Android Studioでプログラムを実行する
Android Studioを起動して、実行時のデバイス選択画面に該当の端末が表示されるので選択して実行ボタンをクリックする。
私の場合は、No Deviceとなって端末と接続しているのに表示がされず、それでも実行してみたら下記のエラーが表示された。
Session 'app': Installation did not succeed. The application could not be installed.
もう1度、端末とPCを接続し直したら、認証メッセージが表示されて許可したらデバイス選択画面に端末が表示された。
その後、実行したら無事にデバッグが出来た。
解決^-^
【Django】ワークフローのメモ
django-admin startproject XXXX
で、プロジェクト作成後のフロー。
- アプリケーションの作成
- モデル作成(models)・有効化とマイグレーション(Migration)
- URL設定(urls.py)・ルーティング
- ビュー(views.py)の作成
- テンプレート(templates)の作成
- 静的ファイル(static files)の作成と配置
アプリケーションの作成
①コンソールで下記コマンドを実行する。
python manage.py startapp XXXX
※XXXXは任意の名称を入れる。
モデル作成(models)・有効化とマイグレーション(Migration)
①models.pyにクラスを作成する。
class XXXX(models.Model): title = models.CharField(max_length=255) text = models.TextField() author = models.ForeignKey( 'auth.User', on_delete=models.CASCADE, ) created_at = models.DateTimeField(auto_now_add=True) updated_at = models.DateTimeField(auto_now=True)
※XXXXは任意の名称を入れる。
②モデルの有効化
プロジェクト設定ファイル YYYY/settings.py (※YYYYはプロジェクト名) のINSTALLED_APPSに下記を追加する。
INSTALLED_APPS = [ 'XXXX.apps.XXXXConfig', # 追加 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', ]
※XXXXはアプリケーション名。
※XXXXConfigは、該当アプリケーション内のapps.pyのクラス名を入れる。
from django.apps import AppConfig class XXXXConfig(AppConfig): name = 'ZZZZ'
その後に下記コマンドを実行する。
python manage.py makemigrations XXXX
※XXXXはアプリケーション名。
makemigrationsを実行することで、Djangoにモデルに変更があったこと(この場合、新しいものを作成しました)を伝え、そして変更を マイグレーションの形で保存する。
migrationsフォルダ内に0000_initial.pyのようなファイルが作成されている。
下記コマンドを実行すると、SQL文を確認することが出来る。
python manage.py sqlmigrate XXXX 0001
③マイグレーション
下記コマンドを実行する。
python manage.py migrate
これで、モデルのテーブルをデータベースに作成できる。
makemigrationsで作成したファイルは消える。
URL設定(urls)・ルーティング
作成したアプリケーションにURL設定を行う。
設定ファイルが無い場合は、urls.pyを新規作成する。
````python:urls.py
作成例
from django.urls import path from . import views
app_name = 'XXXX'
urlpatterns = [ # ここにURL情報を入れていく ] ```` app_nameにはapps.pyに記載したnameと同じ名称を入れれば良いと思う。
ビュー(views)の作成
views.pyに作成するページ(URL)分のクラスとかを設定する。
テンプレート(templates)の作成
templatesフォルダ内にページ分のhtmlファイルを作成する。
静的ファイル(static files)の作成と配置
cssとかjsファイルがあれば、作成する。
配置はstaticフォルダ(フォルダ名は任意)とかを作成して、その中に入れる。
そして、プロジェクト設定ファイル YYYY/settings.py (※YYYYはプロジェクト名) の中に下記を追加する。
STATIC_URL = '/static/' STATICFILES_DIRS = [os.path.join(BASE_DIR, 'static')] # './static'
以上
【Android】Androidで音楽プレイヤー作成
シンプルでさくさく動く音楽プレイヤーを作ろうと思って開発をはじめました。
とりあえずは、再生したり、ボリューム調整したり出来るようになった。
経過時間も表示出来るようになった。
■残課題
- 曲名の表示
- 次の曲と前の曲ボタンの作成
- プレイリスト機能追加