チャーリーのC

技術系の記録をしていきます。

Android SQLiteでレコードの削除 と論理削除について

AndroidSQLiteを使ったレコードの削除で、DELETE文を書いてもできなかったのでメモ

qiita.com

どうやらmoveToFirstを書かないと消えないようだ。何故かはわからない。

ちなみに sqlite delete androidで検索した

↓実際に書いたソース

            Cursor cur = db.rawQuery("delete from ASSIGN " +
                    "where id = ?", new String[]{String.valueOf(assignId)});
            cur.moveToFirst();


あと、エンジニアの方に教えてもらったのが、論理削除と物理削除について

物理削除は、物理的に消してしまうこと。今回のDELETE文と同じ。

論理削除は、レコード自体を消すのではなくて、
フラグを作り、そのフラグによってレコードが削除されてる体にすること。
この場合はUPDATE文で削除フラグを1にすればいいのだと思う。
こうすることで、後でデータが必要になった時にはフラグを0に戻せば元通りにできる。

こういう考え方は現場入っているからこそ知れるのだろうなぁと関心した。

AndroidでNavigationBarとStatusBarを透過する

☆方法
以下をActivityのonCreateに記述したら出来た。

Window w = getWindow();
w.setFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS, WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);

stackoverflow.com

いろいろ調べて試してみたが、なかなかうまくいかず。。。
日本語を使わずに調べてみようということで、
Googleで「navigationbar theme android」と検索し、一番上に出てきたのが↑

会社のPCに入れたソフトたち

はじめに

Qiitaのアドベントカレンダー2017に投稿することになったので、読みやすく編集し直しました。
qiita.com
まだまだ業務経験は浅いですが、一つでも役に立つソフトを紹介できればと思います。
※紹介しているのは全てフリーソフトです。

自己紹介

情報系の専門学校を出て、2017年4月に新卒でSESの会社に入社しました。
出向先では人事給与システムのアドオン開発をしています。
主にPL/SQLでストアドプロシジャーを書いたり、テストしたりしてます。

使用PC

CF-SZ5 Let's note
OS:Window7
メモリ4GB...遅くてイライラすることが多々。
画面が小さくて致命的。

入れたソフトたち

HeidiSQL

www.heidisql.com
PL/SQL関係ありませんが、SQLの勉強用に。
データベースやテーブルを作ったり、SELECT文書いたり、実験用です。

QTTabBar

QTTabBar - QuizoApps
標準のファイルエクスプローラーをGoogleChromeとかみたいにタブで表示できるようになる。
ウィンドウだらけにならないので、目的のフォルダのウィンドウを探すのが楽に。
とてつもなく便利。

WinMarge

WinMerge 日本語版
プログラムや設計書のマージにちょっとだけ使った。
Excelファイルもマージできる。
シートが全部つながってしまうのが不便だが。
qiita.com

Vimiun

chrome.google.com
Chrome拡張機能
マウスを使わずにブラウジングできるのでとても捗る。
コマンドを少し覚えなくてはならないが、本当に捗るので。

CLaunch

Pyonkichi's page
ランチャーアプリ
主にメモやエクセルのファイルなどのショートカットを登録して使っている。
デスクトップをダブルクリックで起動する設定してみた。
デスクトップがきれいになるのでオススメ。

Launchy

Launchy: The Open Source Keystroke Launcher
ランチャーアプリ
alfledのWindows版みたいな感じ。
Hainと比較して見る予定。
Hainは起動がめちゃくちゃ遅くて私のPCではダメでした。
基本的にCLaunchとタスクバーに登録しているアプリで足りてるので、あまり使っていない。

Clibor

www.amunsnet.com
クリップボードアプリ
Ctrl二回押しで起動するようにしている。
コピペ箇所が多いときに、Ctrl+C連打して全部コピーしてからまとめてペーストなんかができて便利。
よく使うファイルパスやIDなどを定型文に登録したりもできる。
定型文に登録したものにショートカットを割り当てると更に便利に。

Logicool SetPoint

Logicool製のマウスの設定ソフト
ホイールを押下でEnterに割り当てると便利になりました。
ソフトごとにボタンの割り当てができるのも便利。

f.lux

justgetflux.com
ブルーライトカットアプリ
Letsnoteの明るさが微調整できないので青色を落とす手段に。
まぶしい光が苦手なので。

WinShot

スクリーンショットアプリ
テストの際にエビデンスを残すので、スクリーンショットをよく使います。
何回も同じ範囲を撮る場合、1度範囲矩形選択をすれば、
前回の矩形選択範囲を撮ることが出来るので便利です。

サクラエディタ

sakura-editor.sourceforge.net
Altキー押しながらマウスで範囲矩形選択できるのが便利。
ソースの整形に使う。
あまり使っていない。

Office Tab

Office Tab:Microsoft Office 2003-2016のタブウィンドウでマルチ文書を開けます。 | Extendoffice.com
Excelをよく使っていたのですが、大量にファイルを開くと目的のファイルを探すのに時間がかかってしまう。
タブ化することで、現在見ている画面から目的のファイルを見つけることができました。
重宝していました(無料期間は30日間)

GoogleKeep(ブラウザ版

ふとした時に、メモする用。
洗剤買わなきゃとか、なんでも。
会社PCが開けないときでも見れるように、スマホでや家のPCでも同じアカウントでログインしている。

GoogleDocment(ブラウザ版

用途はkeepと基本同じ。長文のときに使う。
週報を書かなければいけないのでDocumentに書いて保存しておく。
もし提出し忘れたとしても、スマホや家のPCからアクセスできる。

番外編

便利なハードたち

Logicool M570

トラックボールマウス
ボタンが2つあるので便利(戻る・進む)
Logicool SetPointでボタンの割り当てがいろいろ設定ができる。

Logicool K380BK

Bluetoothキーボード
思ったより打ちづらい。特にコピペがしづらい。
書見台と一緒に購入。首が楽に。
スマホにも対応しているので、家に持って帰ったらもっと便利そう()

書見台

姿勢が悪くなり、首やら腰やら背中が痛くなったので、PCを立てるために購入。
サンワサプライというところのを買いました。
一緒にキーボードも購入して、まっすぐ前を見ながら作業が出来るようになりました。
体を大事に。

KindlePaperWhite

通勤時の読書が楽になりました。
満員電車なので。

まとめ

いろんなソフトを入れてみて、結構効率が良くなったと思います。
特にCliborが役に立ちました。定型文をよく使うので。
参考になったとか、これ以外に便利なソフトあるとか、コメント頂けたら嬉しいです!

Excelで年月のデータを年月日に変換する。

A1の201711というデータを2017/11/1にする場合は

=DATE(LEFT(A1,4),RIGHT(A1,2),1)

これでできた。

ちなみに月末にしたい場合は、「EOMONTH」という関数を使うと楽。
年月日のデータを月末にしてくれる。

=EOMONTH(DATE(LEFT(A1,4),RIGHT(A1,2),1),0)

Excelでの日付の比較

会社でExcelの作業がありました。

IF文である日付以前のデータに印をつける文を書いたのですが、うまく機能せず少し嵌ったのでメモ

最初は
IF(A1<2017/11/24,.....)
と書いていた。

正しくは
IF(A1<DATE(2017,11,24),.....)

日付型に直してあげる必要がある。

PL/SQLで電話番号をハイフン区切りで格納する

  • 編集中-

現在PL/SQLの勉強をしているのでメモ

今回は電話番号をハイフンで区切り、
市外局番、市内局番、局番
の3つに分けて配列に格納するコードを書きました。
(電話番号がxx-xxxx-xxxxの形式のもの以外は異常とみなし、先頭6桁と7桁〜11桁で分けたものを格納しています)

※変数の宣言などは省略されてます
使用している変数の説明
pTelNum -- 電話番号を格納
hCnt -- ハイフンをカウント
pNum -- 電話番号一文字を格納する変数
  arrayNum -- 配列の場所
  checkFlag -- 配列の中身のチェック (1→true 0→false


pTelNum := REC.AHI1_TN; -- 電話番号を格納
-- 電話番号がNULLの場合各配列にNULLを格納する
IF pTelNum IS NULL THEN
ca(1) := NULL;
ca(2) := NULL;
ca(3) := NULL;
ELSE
--電話番号をハイフン区切りで配列へ格納
FOR i IN 1..LENGTH(pTelNum) LOOP
pNum := SUBSTR(pTelNum, i, 1);
IF pNum = '-' THEN
hCnt := hCnt + 1;
IF arrayNum >= 3 THEN
IF pNum = '-' THEN
CONTINUE;
ELSE
ca(3) := (ca(3) || pNum);
END IF;
ELSE
arrayNum := arrayNum + 1;
END IF;
ELSE
ca(arrayNum) := (ca(arrayNum) || pNum);
END IF;
END LOOP;

--配列の中身をチェック
IF ca(1) IS NOT NULL AND ca(2) IS NOT NULL AND ca(3) IS NOT NULL AND hCnt = 2 THEN
checkFlag := 1;
ELSE
checkFlag := 0;
END IF;

--チェックでNGだった場合、整形して値を配列へ格納
IF checkFlag = 0 OR (checkFlag = 1 AND LENGTH(ca(1)) > 6
OR LENGTH(ca(2)) > 4 OR LENGTH(ca(3)) > 4) THEN
telNum := REPLACE(pTelNum, '-', '');
ca(1) := SUBSTR(telNum, 1, 6, '');
ca(2) := SUBSTR(telNum, 7, 4, '');
ca(3) := NULL;


大まかな流れとして、


1. とってきた電話番号がNULLじゃない確認
  NULLの場合は配列全てにNULLをいれる


2. 電話番号を一文字ずつ配列に格納
  ハイフンが来た場合には、飛ばして次回からは二番目の配列に電話番号を格納する

3. 配列にハイフンを抜いた3塊の電話番号が入ったら終了


4.

説明など随時更新します