20210916のJavaに関する記事は5件です。

Twitter検索ツール開発日記(1)

初めまして。Louchuraです。プログラマを名乗るにはあまりにもひよっこですが、Qiitaにはお世話になる機会が多いので備忘録や開発日記などをつけていければと思い始めました。 さて、今やろうと思っているのはJavaを用いてTwitterを分析するためのツールです。 (なぜJavaか?専門学校でやっているのがJavaなので) 正直この手の取り組みは初めてなのですが、具体的には特定期間、指定の言葉に関してどんなワードがツイートされているかを知るためのアプリを作れたら、と思っております。 というのも、私は趣味でインターネットのカルチャーを研究しているんですが、特定の期間トレンドというよりも、特定の期間においてある特定のワードがどんな認識をされていたのか知りたいっていう時が多々あります。 であるならば、特定の期間、ワードにまつわるツイートを検索してみて、ある言葉がどれくらい含まれているか調べれば良いんじゃ無い、と。 例えば芸能人にしても、その芸能人がなんである期間トレンド入りしてたのか、トレンド欄を見るだけだと分かりにくいけど「オリコン」っていうワードと一緒にツイートされていればその期間その芸能人は「オリコンランキング入りした人間」として認識されていることがわかるんじゃ無いだろうか。 以下フローチャート(仮)。 検索するワードを指定 ↓ 関連ワードを指定 ↓ 検索ワードをTwitterで検索、ツイートを取得 ↓ 検索したツイートに指定したワードがどれくらい含まれているかをカウント。 ↓ 検索したツイートの総数に対し、指定したワードを含むツイートはどれくらいあるのか、割合を計算。 ↓ 結果を表示 TwitterAPIは申請中。 万一却下されたらかなり泥臭いですが、次の方法でやろうかなと。 関連ワードを指定するところまでは同じ。 検索は人力で行い、サジェストをテキスト入力ランに手動で貼り付け、その中から指定したワードを拾ってカウント、という形になるかなと。この場合ツイートの総数は数えようが無いのでオミットせざるを得ないのだろうか。 では次回はTwitterAPIの審査結果が返ってきてからご報告します。
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Javaのlogging

it depends on! situation java.util.logging java 1.4から提供しているlogging utility 7 levelのloggingを提供している SEVERE(highest value) WARNING INFO CONFIG FINE FINER FINEST(lowest value) private static final Logger logger = Logger.getLogger(MyApplication.class.getName()); logger.info(Level.INFO, "it is test for {0}","log"); 長所:外部ライブラリー使用せず、使える 短所:What means "FINE"? "FINER"? "FINEST"? log4j thread safe? performance に最適化 ALL, TRACE, DEBUG, INFO, WARN, ERROR and FATAL private static Logger logger = LogManager.getLogger(MyApplication.class); logger.info(Level.INFO, "it is test for {0}","log"); Slf4j(Simple Logging Facade For Java) 現在PRJで使っているログ ファサード? フランス語で。。?外観? REF https://casualdevelopers.com/tech-tips/how-to-process-java-logging-with-slf4j-logback-lombok/ (日本語) https://www.fwantastic.com/2019/12/javautillogging-vs-log4j-vs-slf4j.html (韓国語)
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

(JAVA勉強用メモ)5. 配列の操作

配列型変数の宣言 []を使って宣言する。 int[] ary01; // 型の後でも int ary02[]; // 変数名の後でもOK int[][] ary03; // 重ねると多重配列になる。 int[][] ary04[]; // どちらも3重配列 int[] ary05[][]; 配列型変数には配列インスタンスを代入するだけであり、 参照先の配列がいくつの要素を扱えるかは関係ないため、 宣言時に要素数を指定することはできない。 int[2] ary; // <- ×: 要素数の指定はできない。 配列インスタンスの生成 必ず要素数を指定する必要がある。 int[] ary01 = new int[2]; // OK int[] ary02 = new int[]; // NG int[][][] ary03 = new int[2][3][4]; // 多重配列は各次元の要素数を一度に指定できる int[][] ary04 = new int[3][]; // 1次元目の要素数の指定は省略できないので注意 初期化子 配列インスタンスの生成と要素の代入を一度に行える。 int[] ary01 = new int[2]; ary[0] = 2; ary[1] = 3; // ☝と☟のコードは同じ処理内容 int[] ary02 = {2, 3}; newと合わせて使用するときは、要素数を指定できないことに注意 int ary01 = new int[]{2, 3}; // OK int ary02 = new int[2]{2, 3}; // NG: 初期化子を使うと要素数が自動で計算される int ary03 = new int[2]{}; // NG: {} は int[0] と同じ意味になる 多次元配列の場合は、次元数を合わせる必要があることに注意する。 {}を重ねて次元数を表現するか、newを使用する方法がある。 int[][] ary01 = {{1, 2}, {2, 3}}; // OK int[][] ary02 = int[][]{}; // OK int[][] ary03 = new int[]{}; // NG int[][] ary04 = {}; // NG 初期化子は、 『変数宣言と同じとき』か、 『[]を使って次元数を明示しているとき』にしか使用できない。 int[] ary01 = {}; // OK: 変数宣言と同じとき int[][] ary02; ary02 = new int[][]{}; // OK: 次元数を明示しているとき int[] ary03; ary03 = {}; // NG
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Javaで飯食ってるエンジニアがGolangを学んでみる~序章~

とりあえずJavaとの差を意識してメモ書きのように書いてみる。Go→Javaの順 序章と書いたが続くかは不明。。。 社会人になり、弊社に入社してからJavaを学んだのだが、 その時は学生時代に研究で利用していたFortranとの対比で基本的な文法は学んで言った記憶があった。 (やり方がいいかは別) 今回もJavaとGoがいずれも静的型付け言語であることを利用し、 同じことをそれぞれの文法で書いたらどうなるかを実際にメモ書きしてみた感じ。 ※Editorじゃないのでミスっていたらすみませんコメントで教えてください ※全部はやってません コンソール出力 import "fmt" func main(){ var human string = "TOM" fmt.Printf("%sは人間です",human) } public static void main(String[] args){ String human = "TOM"; System.out.printf("%sは人間です",human); } if文 import "fmt" func main(){ var score int = 100 if score == 80 { fmt.Println("素晴らしい") }else if score >= 60 { fmt.Println("よくできました") }else { fmt.Println("頑張りましょう") } } public static void main(String[] args){ int score = 100; if(score == 80) { System.out.println("素晴らしい"); }else if(score >= 60){ System.out.println("よくできました"); }else { System.out.println("頑張りましょう"); } } for文 import "fmt" func main(){ for i := 1 ; i <= 100 ; i++{ fmt.Println(i) } } public static void main(String[] args){ for(int i = 1 ; i <= 100 ; i++){ System.out.println(i); } } 乱数 import "fmt" import "math/rand" func main(){ fmt.Println(rand.Intn(10)) } import java.util.Random; public static void main(String[] args){ System.out.println(new Random().nextInt(10)); } 完全な乱数 import "fmt" import "math/rand" import "time" func main(){ rand.Seed(time.Now().Unix()) fmt.Println(rand.Intn(10)) } コンソール入力 import "fmt" func main(){ var input string fmt.Scan(&input) fmt.Println(input) } import java.util.Scanner; public static void main(String[] args){ Scanner sc = new Scanner(System.in); String input = sc.nextLine(); System.out.println(input); } 引数のあるメソッド import "fmt" func main(){ hoge("あいう") } func hoge(fuga string){ fmt.Println(fuga) } public static void main(String[] args){ hoge("あいう") } private void hoge(String fuga){ System.out.println(fuga); } 戻り値のあるメソッド import "fmt" func main(){ hogehoge := hoge("あいう") fmt.Println(hogehoge) } func hoge(fuga string) string{ return fuga } public static void main(String[] args){ String hogehoge = hoge("あいう") System.out.println(hogehoge); } private String hoge(String fuga){ return fuga; } ポインタ型 import "fmt" func main(){ var hogehoge string = "あいう" var hogehogePtr *string =&hogehoge fmt.Println(hogehoge) fmt.Println(hogehogePtr) } 出力結果 >あいう >0xc420010220 ポインタ型を利用した値の更新 import "fmt" func main(){ var hogehoge string = "あいう" fmt.Println(hogehoge) change(&hogehoge) fmt.Println(hogehoge) } func change(hogehogePtr *string){ *hogehogePtr = "かきく" } 出力結果 >あいう >かきく
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

【SQL】テーブルとレコード(登録処理用)

【SQL】employeesテーブル テーブルカラム id・年齢・生年月日・メールアドレス・住所・グループ名 CREATE_employees.sql CREATE TABLE employees( id INT AUTO_INCREMENT NOT NULL, name VARCHAR(100) NOT NULL, age INT(3) NOT NULL, birthDay DATE NOT NULL, email VARCHAR(100), address VARCHAR(100), groupId VARCHAR(100), PRIMARY KEY (id) ); レコードの追加(10件) INSERT_employees.sql INSERT INTO `employees` ( `id` ,`name` ,`age` ,`birthDay` ,`email` ,`address` ,`groupId` ) VALUES ( 1 ,'佐藤武' ,22 ,'1999-05-06' ,'ta-satou@keru.com' ,'北海道札幌市北区北33条西1丁目1-1ヤマダレジデンス1101号室' ,'松' ); INSERT INTO `employees` ( `id` ,`name` ,`age` ,`birthDay` ,`email` ,`groupId` ) VALUES ( 2 ,'山田恵子' ,25 ,'1996-04-26' ,'da-yama@keiko.com' ,'竹' ); INSERT INTO `employees` ( `id` ,`name` ,`age` ,`birthDay` ,`email` ,`address` ,`groupId` ) VALUES ( 3 ,'鈴木光太郎' ,40 ,'1981-03-14' ,'suzuki-kou@tarou.co.jp' ,'東京都中央区南1条西1丁目' ,'松' ); INSERT INTO `employees` ( `id` ,`name` ,`age` ,`birthDay` ,`email` ,`address` ,`groupId` ) VALUES ( 4 ,'高橋みか' ,67 ,'1954-01-06' ,'mika.takahashi@hokkaido.co.jp' ,'北海道札幌市中央区北2条西1丁目1-1' ,'竹' ); INSERT INTO `employees` ( `id` ,`name` ,`age` ,`birthDay` ,`email` ,`address` ,`groupId` ) VALUES ( 5 ,'秋本康' ,65 ,'1956-02-02' ,'sapporo-akb@sapporo.city.jp' ,'北海道札幌市中央区' ,'竹' ); INSERT INTO `employees` ( `id` ,`name` ,`age` ,`birthDay` ,`email` ,`address` ,`groupId` ) VALUES ( 6 ,'小池ゆり' ,68 ,'1952-07-15' ,'tokyo-yuri@tokyo.jp' ,'東京都新宿区西新宿1丁目1-1' ,'梅' ); INSERT INTO `employees` ( `id` ,`name` ,`age` ,`birthDay` ,`email` ,`address` ,`groupId` ) VALUES ( 7 ,'菅義男' ,72 ,'1948-12-06' ,'ga-su@go.jp' ,'東京都千代田区永田町1-1-1' ,'梅' ); INSERT INTO `employees` ( `id` ,`name` ,`age` ,`birthDay` ,`groupId` ) VALUES ( 8 ,'麻生二郎' ,80 ,'1940-09-20' ,'竹' ); INSERT INTO `employees` ( `id` ,`name` ,`age` ,`birthDay` ,`email` ,`groupId` ) VALUES ( 9 ,'安倍晋次' ,66 ,'1954-09-21' ,'sakura-mirukai@go.jp' ,'梅' ); INSERT INTO `employees` ( `id` ,`name` ,`age` ,`birthDay` ,`groupId` ) VALUES ( 10 ,'安部寛' ,56 ,'1964-06-22' ,'竹' );
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む