さまよえる、Android

Androidのプログラミングで便利なことや残しておきたいことを残しておく。もしオススメのライブラリがあったら教えてくださいね。

SwiftUIで引数からViewを渡す。

struct TestView<Content: View>: View { let left: Content let right: Content init(left: Content, right: Content) { self.left = left self.right = right } var body: some View { GeometryReader { geometry in HStack() { left .frame(height: 50, alignment: .bott</content:>…

viewを囲って使

struct A: View { @State var isActive = false @State var number = Int.random(in: 1..<10).description var body: some View { NavigationView { Container { VStack { Button(action: { self.isActive.toggle() }) { Text("移動A\(number)") } Navigatio…

@Stateでdidset,WillSetは使える。

@State var form: Form = .none { didSet(oldValue) {} willSet(newValue) {} }

Bindingの初期値をイニシャライザーで設定する

enum Mode { case none case alert case success case retry } @Binding var mode: Mode init(_ mode: Binding< Mode > = .constant(.none)) { self.mode = mode }

SwiftUIで中央にタイトル、片側にアイコンを表示するレイアウト

全体 - 中央から2等分した値を計算して設定し、左側に寄せればできる。 struct Header: View { var body: some View { GeometryReader { geometry in HStack(spacing: 0) { HStack(spacing: 0) { Text("左1") .padding(.leading, 30) } .frame(width: geome…

SwiftUIのプレビューで横向きに対応する。

xCodeでやる方知っている人は教えて欲しい。Viewを拡張して利用すれば便利に使える。 extension View { func ipad_landscape_disp() -> some View { return self.previewLayout(.fixed(width: 1060, height: 810)) } }

SwiftUIのプレビューで横向きに対応する。

xCodeでやる方知っている人は教えて欲しい。Viewを拡張して利用すれば便利に使える。 extension View { func ipad_landscape_disp() -> some View { return self.previewLayout(.fixed(width: 1060, height: 810)) } }

SwiftUIの複雑なレイアウト

余白をつけて、3分割する GeometryReader { geometry in VStack { GeometryReader { geometry1 in HStack(spacing: 0) { Text("1").frame(width: geometry1.size.width / 3) .background(Color.green) Text("2").frame(width: geometry1.size.width / 3) .b…

Bindingでデフォルト設定

struct Row: View { let title: String @Binding var value: String init(title: String , value: Binding<String> = .constant("未")) { self.title = title _value = value } var body: some View { HStack { Text(title) .font(.caption) Text(value) } } }</string>

Codableでクラス継承対応

import UIKit var data = """ { "A": "A", "B": "B", "C": "C", } """ class A : Codable { var A:String = "A" enum CodingKeys: String, CodingKey { case A = "A" } func encode(to encoder: Encoder) throws { var container = encoder.container(keyedB…

SwiftのCodableでEnumを変換する

import UIKit enum Country: Int, Codable { case japan = 0 case usa case france } struct Member: Codable { let id: Int let country: Country } let json = """ { "id": 1, "country": 0 } """ let decoded = try JSONDecoder().decode(Member.self, fr…

Swiftで文字列のJSONをStructのインスタンスに変換する。

import UIKit protocol Json : Codable { func json(key: String) -> String! var json:String! { get } } extension Json { func json(key: String) -> String! { let encoder = JSONEncoder() encoder.dateEncodingStrategy = .iso8601 encoder.outputForm…

構造体にjsonメソッドとjsonプロパティを拡張すると便利????

import UIKit protocol Json : Codable { func json(key: String) -> String! var json:String! { get } } extension Json { func json(key: String) -> String! { let encoder = JSONEncoder() encoder.dateEncodingStrategy = .iso8601 encoder.outputForm…

Swiftは同じ関数名でも引数が異なれば宣言できる

struct User { func decorate(a: String) -> String { return "+++" + a + "+++" } func decorate(a: String, b: String) -> String { let a = self.decorate(a:a) let b = self.decorate(a:b) return a + ":" + b } } let user = User() let str = user.dec…

Swiftのprintで複数の変数を指定する。

こんな感じでできるのか。いちいち、変数ごとにprintしてたよ。 var a1 = "Hello, playground" var a2 = "hoge" print(a1, a2)

observeForeverについて

liveDataというAndroidに特化された便利なライブラリがある。LiveDataはアクティビティのライフサイクル(STARTED,RESUMED)の状態を読み取ってObserverに通知してくれる。この状態をアクティブという。これは通常のアプリを開発する上では、ありがたい機能な…

JavaScriptのexport defaultとは何なのか?

関数やクラスにexportをつけることで、他のファイルからimportできるというのはわかったけどdefaultってなんだ? export default function() { console.log('これはテストメッセージ'); } この関数には名前がない。つまり、下のようにすれば export default …

Pythonでリストの中身と同時に今何番目の要素なのか、インデックスも取得できる便利なenumerate

fruits = ['りんご', 'みかん', 'バナナ'] for i, name in enumerate(fruits): print(i, name) 0 りんご 1 みかん 2 バナナ

MacでMecabに独自の辞書を追加する方法

Mecabには処理が早いシステム辞書とユーザ辞書がある。オリジナル辞書「~.csv」をMeCabの辞書「〜.dic」に変換して、設定ファイルにパスを登録する流れ。「~.csv」をMeCabの辞書「〜.dic」に変換には「mecab-dict-index」というコマンドが必要になる。いろい…

Javaはデフォルの引数を設定できない

仕方がない private void say() { say(true); } private void say(Boolean falg) { if (falg) { Log.d("デバッグ","true"); } else { Log.d("デバッグ","false"); } }

ついつい、マスターブランチにコードを書いてしまったときの対応

ブランチを切って作業を始めるべきところで ついつい、マスターブランチにコードを書いてしまう。たとえば、アプリのリリース後に ブランチを切らずにマスターブランチ上で作業をしていたら リリースしたアプリに不具合があって、リリース時のアプリの状態に…

AndroidからMacのlocalhostにアクセスする。

アプリからlocalhostに接続したい MacにApacheをインストールしてテストサーバーを構築し、Androidアプリからアクセスしたい しかし、localhostにアクセスできない。 出来る ぐぐったら解決できた。AndroidをUSBでMacに接続し、Chromeに下のURLを入力する。 …

RatingBarの実装

アクティビティ public class MainActivity extends AppCompatActivity implements RatingBar.OnRatingBarChangeListener { RatingBar mRatingBar; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); se…

Herokuでアクセス制御を実装する(PHP)

IP取得 HerokuのPHPからIPを取得するには、$_SERVER["REMOTE_ADDR"]ではなく、$_SERVER['HTTP_X_FORWARDED_FOR']を利用する。Herokuのシステムはクライアントとサーバーの間に、ロードバランサーという負荷分散システムの仕組みが導入されているらしく、$_SE…

確定申告について

医療費控除 所得金額から差し引くことが出来る。自分が実際に支払った医療費が10万を超えた場合は医療費 - 10万 = 医療費控除この条件以外にも、所得が200万までの人であれば自分が支払った医療費 - 所得の合計額の5% 保険に加入しており保険金で支払った部…

確定申告について

医療費控除保険などの補填分は除き、自分が実際に支払った医療費は条件によって所得から差し引くことが出来る。10万超えるという話を聞くが、この条件以外にも、所得が200万を超えなければ支払った医療費 - 所得金額×5% も条件に当てはまる。

herokuのPostgresに接続する

管理画面(Database Credentials)で接続情報を確認する。 ターミナルコマンド psql -h ホスト -U ユーザー -d データベース 登録されているテーブル一覧 \d テーブルに定義されているフィールドを確認 \d テーブル名 テーブル作成 CREATE TABLE markers ( id …

herokuで便利な機能

heroku releases というコマンドを使えば、今までデプロイした履歴が見れます。このバージョンさえわかれば、バージョンを指定して、特定の履歴へ戻ることが出来ます。 v111に戻る。 heroku rollback v111 メンテナンス中にする heroku maintenance:on

requireとincludeについて

久しぶりにPHPでコードを書いてたがincludeとrequireの違いを忘れてしまった。存在しないファイルをincludeすると警告だけでphpの処理はそのまま継続して実行される。 存在しないファイルをrequireすると完全にストップされ処理は終わる。include_onceとかre…

Herokuで動かしているサービスのテスト環境をMacで構築したので、コマンドをメモしておく。

Apache 設定ファイル sudo vi /private/etc/apache2/httpd.confapachectl restartapachectl startapachectl stop .htaccess ファイル名無しでアクセスがあった場合に開くファイルを指定DirectoryIndex ファイル名 php 設定ファイル vim /usr/local/php5/lib/…