セクハラだと言われた日。
新人にLinux研修を行っていた時の話
新:
あの、先輩すみません、
〇〇コマンドの使い方が分からないのですが・・・
先:
えーとね、コマンドの取扱説明書を表示するような機能があるから
それを使ってみて。
それは man pageと言うんだ。
新:
man pageですが?
先:
そそ。あー、そうか、man pageは見たことないんだっけ?
新:
あ、ないです。
先:
manの使い方はman pageで見れるから、
man manって入れてみて。
新:
マン...マンに入れる?
新:
あの、、、先輩。それセクハラです。
先:
Σ( ̄□ ̄lll)
【Java】javaで英数字をごちゃ混ぜした文字列をランダム生成する方法
アルファベットの大文字、小文字、数字を混ぜた文字列を生成したーい!
パスワード用の文字列を生成したーい!
とにかくよくわからん文字列を生成したーい!
そんなあなたが求めているなのはこんなコードでしょうか、 それともあんなコードでしょうか。
public class CodeSample { public static void main(String args[]){ // ------------------------------------------------------------------- // 基本編 ------------------------------------------------------------ // ------------------------------------------------------------------- // 3文字の数字を生成する String retNum = MyRandom.randomString(3, MyRandom.NUM); // 5文字のアルファベット(小文字)を生成する String retAlpL = MyRandom.randomString(5, MyRandom.ALPHA_L); // アルファベット(小文字 + 大文字) + 数字を混ぜた文字列を生成する String retNumAlp = MyRandom.randomString( 8, MyRandom.NUM + MyRandom.ALPHA_L + MyRandom.ALPHA_U); System.out.println("retNum[" + retNum + "]" + " retAlpL[" + retAlpL + "]" + " retNumAlp[" + retNumAlp + "]"); // ------------------------------------------------------------------- // 応用編 ------------------------------------------------------------ // ------------------------------------------------------------------- String password; // 大文字、小文字、数字がすべて1文字以上含まれている文字列を生成する while(true){ password = MyRandom.randomString( 10, MyRandom.NUM + MyRandom.ALPHA_L + MyRandom.ALPHA_U); // 正規表現を使用して期待した文字列が含まれているかをチェックする // 含まれていないものがあれば再度生成処理を呼ぶ。(例:大文字が含まれていなかった場合) if(!password.matches(".*[0-9].*") || !password.matches(".*[a-z].*") || !password.matches(".*[A-Z].*")){ continue; } break; } System.out.println("password[" + password + "]"); } public static class MyRandom { public static final String NUM = "0123456789"; public static final String ALPHA_L = "abcdefghijklmnopqrstuvwxyz"; public static final String ALPHA_U = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; public static String randomString(int count, String base){ String result = ""; java.util.Random ran = new java.util.Random(); for(int i = 0; i < count; i++){ int pos = ran.nextInt(base.length()); result += base.charAt(pos); } return result; } } }
実行結果
retNum[983] retAlpL[sdcdu] retNumAlp[cVTTIzhf] password[coso3OnOuL]
Android Framework、Linuxソースコード検索サービス
Androidの開発を行うとき、Android Frameworkの実装を直接見てみないと
分からない部分は多々あると思います。
AOSPのソースコードをgitサーバーから取得してローカル環境でgrepしても
いいかもしれませんが、grep時間が長いです。
そこで私はよく利用しているのは
Android Frameworkのソースコードを簡単に見れて、検索できるサービスです。
https://sites.google.com/site/devcollaboration/codesearch
Android 2.2 から 最新Versionのソースコードまで検索できるようになっているため、非常に便利です。
Linux kernelのソースコード検索サービスは下記になっています。
https://elixir.bootlin.com/linux/latest/source
よく使うlogcatコマンド
Android開発ではよく使用するlogcatコマンドをリストアップしてみました。
- ログバッファをクリアする
logcat -c
- 日付、起動時刻、優先度 / タグ、メッセージ発行元プロセスの PID を表示
logcat -v time
- timeオプション + thread ID (PID) を表示する
logcat -v threadtime
- kernel + androidログを一緒に出力する
logcat -k
- Verboseより上の優先度を表示する
logcat -s *:V V - Verbose(最も低い優先度) D - Debug I - Info W - Warning E - Error F - Fatal S - Silent(最も高い優先度。何も出力されません)
logcatコマンドの公式説明ページ(Android Developer)
https://developer.android.com/studio/command-line/logcat?hl=ja
こんなディーラーの営業マンはイヤだ!
● 業務知識が無さすぎる
● 知らないことを知っているふりをして質問を適当に回答する
→アホ客:車のフロアマットの下は直接鉄板ですか? アホ担:えーと、そうですね。
軍用車っかよ。
● 価格交渉をされるとすぐに"店長と相談してきます"を繰り返す(裁量権一切持っていない)
● 契約する前と後で態度が違う
● 自分が言ったことをすぐに忘れる
● 契約後の翌日、お客様が仕事中と思われる時間帯で携帯にワン切りする
● お客様から折り返し電話を頂くと、車と関係のないポイントカードの営業トークを延々と聞かせる
→お客様に通話料を払わせて、自分の営業トークを延々と聞かせる無神経野郎である
● お客様が次回来店した時に、↑を営業したことを忘れている
● お客様が購入した車がすぐにマイナーチェンジ出ることを知りながら伝えずに契約させる
→お客様が契約した1週間後にニュースでマイナーチェンジのことを知られ、怒られる
● お客様からなぜマイナーチェンジのことを教えてくれなかったのか?と問い詰められると、"忘れてました"と答える
● お詫びに洗車券を差し上げると電話で言いながら、実際行ってみたところバームクーヘンをお客様に渡す
→なんでバームクーヘンになっとんねん!
● 平日に納車OKならガソリン満タンサービスいたします!なんて言ってたくせに、実際は1/3しか入っていない
● 6か月点検の時に別の車を営業する
● 点検の次の日にまた電話を掛け、別の車の営業をする
● お客様が他のディーラーに乗り換えたことを知るとすぐにお客様に電凸する。(何度でも♪)
これはすべて実体験でございます。
あーイライラするw
しかしもうこのディーラーとおさらばできたので、めでたし?めでた....し?