GitHubは米国時間9月21日、新たなレポート「GitHub Innovation Graph」を公開した。
GitHub、「GitHub Innovation Graph」公開--日本からは247万人以上が開発に関与 - ZDNET Japan
GitHub Innovation Graphは、gitプッシュ、言語、エコノミーコラボレーターなど、グローバルな開発者の活動に関するデータを可視化したもの。2020年からのローデータをメトリックや経済圏ごとにダウンロード可能にしている。政策立案者や研究者がGitHubプラットフォーム上で1億人以上の開発者が生成したデータにアクセスし、政策立案やグローバル開発および研究に向けた有益な情報の提供を目指すものだという。
GitHub、「GitHub Innovation Graph」公開--日本からは247万人以上が開発に関与 - ZDNET Japan
世界全体で見た使用プログラミング言語のトップ3は「JavaScript」「Python」「Shell」だった。この順位は、2020年第1四半期から変わっておらず、2023年第1四半期では「Java」「TypeScript」が続いている。日本でのトップ3はJavaScript、Shell、Pythonという結果だった。
GitHub、「GitHub Innovation Graph」公開--日本からは247万人以上が開発に関与 - ZDNET Japan
⇧ GitHubを利用していない環境とかの情報は収集できないと思うのだけど、サンプルとしては十分ということなのかね?
動的型付け言語が上位を独占しとりますな...
シェルスクリプトで日付のフォーマットだけ変数に格納したい
ネットでググっても出て来なかったので、自力で実装してみました。
以下のようになりました。
■/home/ts0818/work/test_date/date_result.sh
#! /bin/bash # set -e を追加 set -e result_log="result.log" fmt="+%Y/%m/%d %H:%M:%S.%3N" # 処理開始 echo "【start】〇〇の処理を開始します。" >> $result_log date "$fmt" >> $result_log row_count=0 not_already_tbody_flg=true # CSVファイル読み込み while read row; do # コマンド置換の結果を変数に代入 col_count=$(echo ${row} | awk -F ',' '{print NF}') # tableヘッダーの場合 if [ $row_count -eq 0 ]; then echo "<table><thead>" >> ${result_log} fi # tableボディの開始行の場合 if [ $row_count -eq 1 ] && [ ${not_already_tbody_flg} ]; then echo "<tbody>" >> ${result_log} not_already_tbody_flg=false fi echo "<tr>" >> ${result_log} for index in `seq 1 ${col_count}` do # 1行毎の各列を取得 column=$(echo ${row} | cut -d ',' -f ${index}) # ヘッダー if [ $row_count -eq 0 ]; then cat <<EOF >> ${result_log} <th>${column}</th> EOF else cat <<EOF >> ${result_log} <td>${column}</td> EOF fi done echo "</tr>" >> ${result_log} if [ $row_count -eq 0 ]; then echo "</thead>" >> ${result_log} fi # 行数(let コマンドを使って算術演算) row_count=`expr $row_count + 1` done < pokemon.csv echo "</tbody></table>" >> ${result_log} # 処理終了 echo "【finish】〇〇の処理を終了します。" >> $result_log date "$fmt" >> $result_log
⇧ ポイントは、変数をダブルクォーテーションで囲ってあげるところでしょうか。
dateコマンドも含めて変数に格納している情報は多いんだけど、dateコマンドは毎回実行するようにして日時を変えることで、実行時間を算出したかったというわけで、日付のフォーマットだけ変数に格納したというわけです。
今回も、シェルスクリプトを実行する環境は、「WSL 2(Windows Subsystem for Linux 2)」のUbuntu環境です。
読み込むCSVファイルは、
⇧ 上記のGitHubで公開されてるものを利用させていただきました。
以下のディレクトリにシェルスクリプトのファイルとCSVファイルを配置して、
コマンドプロンプトを起ち上げて、「WSL 2(Windows Subsystem for Linux 2)」のUbuntu環境へSSHログイン。
シェルスクリプトのファイルを実行します。
result.logファイルが作成されていればOK。
【start】〇〇の処理を開始します。 2023/09/25 21:22:20.608 <table><thead> <tr> <th>#</th> <th>Name</th> <th>Type 1</th> <th>Type 2</th> <th>Total</th> <th>HP</th> <th>Attack</th> <th>Defense</th> <th>Sp. Atk</th> <th>Sp. Def</th> <th>Speed</th> <th>Generation</th> <th>Legendary</th> </tr> </thead> <tbody> <tr> <td>1</td> <td>Bulbasaur</td> <td>Grass</td> <td>Poison</td> <td>318</td> <td>45</td> <td>49</td> <td>49</td> <td>65</td> <td>65</td> <td>45</td> <td>1</td> <td>False</td> </tr> ...省略 <tr> <td>720</td> <td>HoopaHoopa Unbound</td> <td>Psychic</td> <td>Dark</td> <td>680</td> <td>80</td> <td>160</td> <td>60</td> <td>170</td> <td>130</td> <td>80</td> <td>6</td> <td>True</td> </tr> <tr> <td>721</td> <td>Volcanion</td> <td>Fire</td> <td>Water</td> <td>600</td> <td>80</td> <td>110</td> <td>120</td> <td>130</td> <td>90</td> <td>70</td> <td>6</td> <td>True</td> </tr> </tbody></table> 【finish】〇〇の処理を終了します。 2023/09/25 21:23:17.523
⇧ 処理の開始日時と終了日時が出力されてます。
業務時間中に日付のフォーマットだけ変数に格納するやり方が見つからず、日付のフォーマットを変数に格納せずべた書きしてしまって、業務後に目的の方法が見つかったのだけど、シェルスクリプトの書き方を探すのが、なかなかに大変ですな...
毎度モヤモヤ感が半端ない...
今回はこのへんで。