全7件 (7件中 1-7件目)
1

SourcetreeでGitHubにプッシュしようとしたら、認証っぽいエラーが出た。🤔🤔🤔🤔🤔少しの間触ってなかったけど、今までできてたので何事かと…remote: Support for password authentication was removed on August 13, 2021. Please use a personal access token instead.remote: Please see https://github.blog/2020-12-15-token-authentication-requirements-for-git-operations/ for more information.【メッセージに表示されたURL】https://github.blog/2020-12-15-token-authentication-requirements-for-git-operations/ちょいと調べてみたら、2021年8月13日以降パスワード認証が出来なくなったみたい。対応としては個人アクセストークンなるものを作る必要があるとか。アクセストークンの作り方はGitHubのドキュメントを見ればOK。https://docs.github.com/ja/github/authenticating-to-github/keeping-your-account-and-data-secure/creating-a-personal-access-tokenSourcetreeの設定を変更する。もともとSourcetreeに設定していたGitHubのアカウント設定を削除して、追加し直した。ホスティングサービスGitHubにして、認証をOAuthにする。「OAuthトークンを再読み込み」を押下すると、GitHubのwebページが開くので「Authorize atlassian」を押下する。ダイアログ下に「認証に成功」と出たらOK。あとは、リポジトリ設定でURLを変更する。設定するURLはhttps://github.com/(ユーザ名)/(リポジトリ名).gitになってたところをhttps://(アクセストークン)@github.com/(ユーザ名)/(リポジトリ名).gitにしたらプッシュできた。ROOMで気になった商品を掲載してます。
2021.08.29
コメント(2)

Androidアプリにオプションメニューを追加する。こういうやつまず、プロジェクトディレクトリの app\src\main\res\menu にxmlファイルを作成する。XMLの中にメニュー項目を定義していく。メニューのXMLファイルの中は下のように書く。<menu xmlns:android="http://schemas.android.com/apk/res/android" ><item android:id="@+id/visible_total" android:checkable="true" android:showAsAction="never" android:title="表示:合計"/></menu>itemがメニューの1項目。android:title → メニューの項目名。android:checkable → メニューの項目をチェックボックスにする。そんな感じでメニュー項目を必要なだけ作る。メニュー用のXMLを作ったらソースのほうにメニューの初期化を作る。 @Override public boolean onCreateOptionsMenu(android.view.Menu menu) { getMenuInflater().inflate(R.menu.main, menu); // メニューのチェックボックスのデフォルト設定 android.view.MenuItem item; item = menu.findItem(R.id.visible_total); item.setChecked(check_visible_total); return true; }次にオプションメニューを選択したときの処理を追加する。ここのitemにオプションメニューで選択された要素が入ってくる。item.getItemId() で取得したIdに応じた動作を書く。サンプルでは、メニューのチェックボックスが選択されたら、チェック状態をトグルしてグラフを描画しなおす動作をしている。 @Override public boolean onOptionsItemSelected(android.view.MenuItem item) { switch(item.getItemId()){ case R.id.visible_total: check_visible_total = !item.isChecked(); item.setChecked(check_visible_total); ChartDisp(getApplicationContext()); return true; } return super.onOptionsItemSelected(item); }これで出来上がったのがこんな感じ。メニューでグラフ線の表示非表示を切り替えられるようにした。参考:Androidデベロッパー - メニュー【5年間延長保証!】EVICIV モバイルモニター 15.6インチ 1080P モバイルディスプレイ/薄型/IPSパネル/USB Type-C/mini HDMI/スリーブケース付 3.5mmイヤホンジャック ノートパソコン、スマホ対応 在宅勤務 送料無料 PSE認証 日本語取説 3年+2年間保証 EVC-1519デスクライト Qiワイヤレス充電 ナイトライト Herblite タッチ式 常夜灯 ベッドサイドランプ LED 無段階調光 デバイス二台同時に充電可能 寝室用 強化ガラスパネル 電気スタンド 180°角度調整ROOMで気になった商品を掲載してます。
2021.08.29
コメント(0)
![]()
今まで使いどころがわからなかった、ラムダ式が便利なのを実感したこと。他クラスのget/setアクセサをたくさん作らないといけないとき、ラムダ式でデータを取り出す部分だけ共通化すると書く量が減らせる。データ保持用クラスunordered_mapでデータを格納している。unordered_mapのキーには文字列を与えているので、使う側が指定してきたキー文字列をcount()でチェックしている。何も考えないでget/setアクセサを作ると、用意したいアクセサの数だけチェック処理を書かないといけない。class DataAccess{public: struct MyData { std::string str = {}; int num = 0; MyData(std::string in_str, int in_num) { str = in_str; num = in_num; } }; DataAccess() { umap_data.emplace("1st", MyData("data1", 100)); umap_data.emplace("2nd", MyData("data2", 200)); umap_data.emplace("3rd", MyData("data3", 300)); umap_data.emplace("4th", MyData("data4", 400)); umap_data.emplace("5th", MyData("data5", 500)); } std::function<MyData(std::string key)> getMyData() { return [&](std::string key) { if (umap_data.count(key) == 0) { return MyData("data not found", 0); } return umap_data.find(key)->second; }; }private: std::unordered_map<std::string, DataAccess::MyData> umap_data;};main関数ラムダ式で定義した文字列を引数にしてMyDataを取得する関数を使う。int main(){ DataAccess data_access = {}; auto func = data_access.getMyData(); std::vector<std::string> arguments; arguments.push_back("1st"); arguments.push_back("2nd"); arguments.push_back("6th"); arguments.push_back("3rd"); arguments.push_back("4th"); arguments.push_back("5th"); arguments.push_back("9th"); for(auto& argument : arguments) std::cout << "string : " << func(argument).str << " / num : " << func(argument).num << std::endl;}実行結果:string : data1 / num : 100string : data2 / num : 200string : data not found / num : 0string : data3 / num : 300string : data4 / num : 400string : data5 / num : 500string : data not found / num : 0★楽天デイリーランキング1位★ 室内用テント プライバシーテント リモートワーク 個室 室内 テント テレワーク 在宅ワーク ぼっちてんと ゲーミングテント 簡易テント 窓付き コンパクト 収納バッグ 在宅勤務 リモート 災害 リモートオフィス【ふるさと納税】国産!かごしま黒豚さつまロールステーキ20個(合計1kg)鹿児島県産黒豚肉を手作業で巻いた冷凍ロールステーキを小分けパックでお届け!お弁当やおかずに最適【AKR Food Company】
2021.08.16
コメント(0)
![]()
とりあえず簡単に動くものができた。マネーフォワードのプレミアムに登録してないけど資産推移のグラフが見たいと思った。資産推移CSVファイルをグラフ表示するツール。マネーフォワードからダウンロードした資産推移_YYYYMM月.csvをAndroid端末のstorage/emulated/0/Android/data/com.AssetsChartに置くとその月のグラフを表示する。https://github.com/metro0321/AssetsChartシュガーバターサンドの木 30個入 012503 内祝い お返し お菓子 菓子折り スイーツ 洋菓子 クッキー 出産内祝い 快気祝い 結婚内祝い 敬老の日 詰め合わせ 手土産 お中元 銀のぶどう 個包装 シュガーバターの木 ギフト プレゼント 退職 引越し 転勤 小分け お供え長浜屋台とんこつ1食×6袋|ポスト投函専用本格 半生麺濃厚スープ 博多細麺九州ラーメン長浜らーめんポイント消化 送料無料
2021.08.13
コメント(0)
![]()
以前、Androidアプリでファイル読み込みにassetsフォルダを使ったと書いたがこのassetsはビルド時に含むファイルのため、Androidのファイラーなどからは見えないようだ。Androidのストレージ領域は、・内部ストレージ・外部ストレージの2つに分かれていて、Androidでファイラーなどから見えるストレージ領域は外部ストレージとなっている。アプリで保存したファイルを取り出したり、アプリで使うファイルを外から取り込みたいことを考えると、外部ストレージを使ったほうがよさそうだ。アプリの外部ストレージのデフォルトディレクトリは次のようになる。/storage/emulated/0/Android/data/(アプリのパッケージ名)外部ストレージのパスを取得するAPIが用意されている。String dir = getExternalFilesDir(null)取得した文字列の末尾に 「/」 がつかないので、ファイル名と連結させる場合は追加する必要がある。String fileName = getExternalFilesDir(null) + "/file.txt";・サンプル String fileName = getExternalFilesDir(null) + "/file.txt"; try { java.io.FileInputStream inputStream = new java.io.FileInputStream(new java.io.File(fileName)); java.io.InputStreamReader inputStreamReader = new java.io.InputStreamReader(inputStream); java.io.BufferedReader bufferReader = new java.io.BufferedReader(inputStreamReader); String line; while ((line = bufferReader.readLine()) != null) { // 読み処理 } bufferReader.close(); } catch (java.io.FileNotFoundException e) { e.printStackTrace(); } catch (java.io.IOException e) { e.printStackTrace(); } TP−Link 無線LAN中継器 RE200 433Mbps+300Mbps デュアルバンド 3年保証 RE200/R [RE200R]カルパス 上杉カルパス150g2袋 1000円 送料無料 つまみ 国産 酒の肴 ビール ワインの サラミ 米沢食肉公社 おやつ 本格カルパス キャンプ 非常食 プレゼント 米沢牛スープ 贅沢の極み 武将 やみつき 珍味 買い回り
2021.08.12
コメント(0)

MPAndroidChartを使って折れ線グラフを描画できるようにした続きで、今度は複数の折れ線グラフを表示する。LineChart(※1)が表示する折れ線グラフ全体のオブジェクトで、その中にLineDataSet(※2)を使ってデータを設定していく。 LineChart Chart = (LineChart) findViewById(R.id.lineChart); LineDataSet values_totalDataSet = new LineDataSet(values_total, legend.legend_total); values_totalDataSet.setColor(ColorTemplate.COLORFUL_COLORS[0]); values_totalDataSet.setLineWidth(2); values_totalDataSet.setDrawCircles(false); LineDataSet values_cashDataSet = new LineDataSet(values_cash, legend.legend_cash); values_cashDataSet.setColor(ColorTemplate.COLORFUL_COLORS[1]); values_cashDataSet.setLineWidth(2); values_cashDataSet.setDrawCircles(false); LineDataSet values_stocksDataSet = new LineDataSet(values_stocks, legend.legend_stocks); values_stocksDataSet.setColor(ColorTemplate.COLORFUL_COLORS[2]); values_stocksDataSet.setLineWidth(2); values_stocksDataSet.setDrawCircles(false); LineDataSet values_investDataSet = new LineDataSet(values_invest, legend.legend_invest); values_investDataSet.setColor(ColorTemplate.COLORFUL_COLORS[3]); values_investDataSet.setLineWidth(2); values_investDataSet.setDrawCircles(false); LineDataSet values_pointsDataSet = new LineDataSet(values_points, legend.legend_points); values_pointsDataSet.setColor(ColorTemplate.COLORFUL_COLORS[4]); values_pointsDataSet.setLineWidth(2); values_pointsDataSet.setDrawCircles(false);new LineDataSetは(1つの折れ線グラフ用のデータArray, 凡例用の文字列) で構成している。このLineDataSetを必要なだけ作る。※1:com.github.mikephil.charting.charts.LineChart※2:com.github.mikephil.charting.data.LineDataSetLineDataSetの後は各折れ線グラフの設定を行うもので、setColorは折れ線の色指定setLineWidthは折れ線の線の太さsetDrawCirclesは折れ線グラフに点を表示するかどうかの指定となっている。最後にLineData(※3)に、作成したLineDataSetをaddDataSetで追加していく。※3:com.github.mikephil.charting.data.LineData LineData lineData = new LineData(); lineData.addDataSet(values_totalDataSet); lineData.addDataSet(values_cashDataSet); lineData.addDataSet(values_stocksDataSet); lineData.addDataSet(values_investDataSet); lineData.addDataSet(values_pointsDataSet); Chart.setData(lineData);これで表示できたグラフがこんな感じになった。メトロイド ドレッド【Sサイズ】アウトドアテーブル コンパクト 軽量 折りたたみ 焚き火 バーベキュー ソロ キャンプ アウトドア ロー テーブル 耐熱 机 自宅 収納 高さ調整 フォールディングテーブル GIMMICK公式 2way
2021.08.08
コメント(0)
![]()
C++のstd::unordered_mapは重複しないパラメータをキーにしてデータを格納しておける便利なやつ。unordered_mapのキーにはintやcharなど基本的な型だけでなくstd::stringなどよく使うC++ STLのクラスも使える。しかし、自作した構造体やクラスは単純に使えない。キーとなるパラメータはハッシュ値に変換されるため、自分でハッシュ変換する関数を用意しないといけない。ハッシュ関数は(3)の部分に指定する。std::unordered_map<(1), (2), (3)>以下、文字列と数値をキーにするサンプルコード#include <iostream>#include <string>#include <unordered_map>namespace UMap{ struct Key { std::string id = {}; int index = -1; Key() {} Key(const std::string in_id, int in_index) { id = in_id; index = in_index; } }; inline bool operator==(const UMap::Key& map_key1,const UMap::Key& map_key2) { return (map_key1.id == map_key2.id) && (map_key1.index == map_key2.index); } struct Hash { inline size_t operator()(const UMap::Key& map_key) const { const auto hash1 = std::hash<std::string>()(map_key.id); const auto hash2 = std::hash<int>()(map_key.index); return hash1 ^ (hash2 << 1); } };};int main(){ std::unordered_map<UMap::Key, std::string, UMap::Hash> umap_data; UMap::Key map_key("id_1", 2); umap_data.emplace(map_key, "id_1, index_2"); if (umap_data.count(map_key) == 0) { std::cout << "key not found" << std::endl; } else { std::cout << umap_data.find(map_key)->second << std::endl; }}出力id_1, index_2【コスパ最高級】タブレット 10インチ wi-fiモデル 敬老の日 本体 android 10 新品 送料無料 ROM128GB RAM4GB/6GB 1920×1200 WUXGA 8コア 5GHz対応 nanoSIM 4G LTE GPS Bluetooth TECLAST M40SE/M40【予約】2021年収穫次第お届け送料無料【信州産 1.8 kg】家庭用 数量限定シャインマスカット 訳あり 3房〜5房入り9月中旬より順次発送いたします。 着日のご指定はできません!
2021.08.01
コメント(0)
全7件 (7件中 1-7件目)
1
![]()
![]()
