AtCoder用にPythonの環境構築

本記事は以前Qiitaに投稿した内容を本ブログに持ってきています。 はじめに 最近、AtCoderを始めました。 AtCoderは競技プログラミングサイトで、毎週リアルタイムのコンテストが開催されていて、AtCoderで評価されたレーティングを利用して、転職活動ができるAtCoderJobsというサービスが話題になっているそうです。 最初、シェルがfishでHomebrewなどが入っている状態で色々試していましたが、うまくいかなかったので、Mac環境をきれいにして環境構築をしました。 環境 macOS Catalina 10.15.2 Homebrew 2.1.15 bash 3.2.57 シェルをbashに戻す ターミナルで以下コマンドを叩いて、ターミナルの再起動をするとシェルがbashに戻ります。 $ chsh -s /bin/bash Homebrewをアンインストールする 以下コマンドを叩いてパスワードを入力すると、Homebrewをアンインストールできます。 $ ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/uninstall)" Homebrewの公式サイトに記載されています。 Homebrewインストールする 以下コマンドを叩く。 $ usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" インストールできたか確認するために、以下コマンドを叩きます。 $ brew doctor すると、Warningが大量に出たので、brew doctorでWarningが出たので解決方法まとめました。(for Mac)を参考に解決しました。 Warning: Unbrewed dylibs were found in /usr/local/include. のログに関しては残すことを忘れてしまっていたので、上記記事を引用しています。 Please note that these warnings are just used to help the Homebrew maintainers with debugging if you file an issue. If everything you use Homebrew for is working fine: please don't worry or file an issue; just ignore this. Thanks! Warning: Unbrewed header files were found in /usr/local/include. If you didn't put them there on purpose they could cause problems when building Homebrew formulae, and may need to be deleted. Unexpected header files: /usr/local/include/arith.h /usr/local/include/binary_log_types.h /usr/local/include/cdt.h /usr/local/include/cgraph.h /usr/local/include/color.h /usr/local/include/decode.h /usr/local/include/demux.h /usr/local/include/encode.h /usr/local/include/errmsg.h /usr/local/include/fcfreetype.h /usr/local/include/fcprivate.h /usr/local/include/fontconfig.h /usr/local/include/freetype/config/ftconfig.h /usr/local/include/freetype/config/ftheader.h /usr/local/include/freetype/config/ftmodule.h /usr/local/include/freetype/config/ftoption.h /usr/local/include/freetype/config/ftstdlib.h /usr/local/include/freetype/freetype.h /usr/local/include/freetype/ftadvanc.h /usr/local/include/freetype/ftbbox.h /usr/local/include/freetype/ftbdf.h /usr/local/include/freetype/ftbitmap.h /usr/local/include/freetype/ftbzip2.h /usr/local/include/freetype/ftcache.h /usr/local/include/freetype/ftchapters.h /usr/local/include/freetype/ftcid.h /usr/local/include/freetype/ftdriver.h /usr/local/include/freetype/fterrdef.h /usr/local/include/freetype/fterrors.h /usr/local/include/freetype/ftfntfmt.h /usr/local/include/freetype/ftgasp.h /usr/local/include/freetype/ftglyph.h /usr/local/include/freetype/ftgxval.h /usr/local/include/freetype/ftgzip.h /usr/local/include/freetype/ftimage.h /usr/local/include/freetype/ftincrem.h /usr/local/include/freetype/ftlcdfil.h /usr/local/include/freetype/ftlist.h /usr/local/include/freetype/ftlzw.h /usr/local/include/freetype/ftmac.h /usr/local/include/freetype/ftmm.h /usr/local/include/freetype/ftmodapi.h /usr/local/include/freetype/ftmoderr.h /usr/local/include/freetype/ftotval.h /usr/local/include/freetype/ftoutln.h /usr/local/include/freetype/ftparams.h /usr/local/include/freetype/ftpfr.h /usr/local/include/freetype/ftrender.h /usr/local/include/freetype/ftsizes.h /usr/local/include/freetype/ftsnames.h /usr/local/include/freetype/ftstroke.h /usr/local/include/freetype/ftsynth.h /usr/local/include/freetype/ftsystem.h /usr/local/include/freetype/fttrigon.h /usr/local/include/freetype/fttypes.h /usr/local/include/freetype/ftwinfnt.h /usr/local/include/freetype/t1tables.h /usr/local/include/freetype/ttnameid.h /usr/local/include/freetype/tttables.h /usr/local/include/freetype/tttags.h /usr/local/include/ft2build.h /usr/local/include/geom.h /usr/local/include/graphviz_version.h /usr/local/include/gvc.h /usr/local/include/gvcext.h /usr/local/include/gvcjob.h /usr/local/include/gvcommon.h /usr/local/include/gvconfig.h /usr/local/include/gvplugin.h /usr/local/include/gvplugin_device.h /usr/local/include/gvplugin_layout.h /usr/local/include/gvplugin_loadimage.h /usr/local/include/gvplugin_render.h /usr/local/include/gvplugin_textlayout.h /usr/local/include/gvpr.h /usr/local/include/lt_dlloader.h /usr/local/include/lt_error.h /usr/local/include/lt_system.h /usr/local/include/mux.h /usr/local/include/mux_types.h /usr/local/include/my_command.h /usr/local/include/my_list.h /usr/local/include/mysql.h /usr/local/include/mysql/client_plugin.h /usr/local/include/mysql/plugin_auth_common.h /usr/local/include/mysql/udf_registration_types.h /usr/local/include/mysql_com.h /usr/local/include/mysql_time.h /usr/local/include/mysql_version.h /usr/local/include/mysqld_error.h /usr/local/include/mysqlx_ername.h /usr/local/include/mysqlx_error.h /usr/local/include/mysqlx_version.h /usr/local/include/pack.h /usr/local/include/pathgeom.h /usr/local/include/pathplan.h /usr/local/include/png.h /usr/local/include/pngconf.h /usr/local/include/textspan.h /usr/local/include/types.h /usr/local/include/usershape.h /usr/local/include/xdot.h Warning: Your Xcode (10.3) is outdated. Please update to Xcode 11.3 (or delete it). Xcode can be updated from the App Store. Warning: Broken symlinks were found. Remove them with `brew cleanup`: /usr/local/lib/node_modules/expo-cli/node_modules/.bin/detect-libc /usr/local/lib/node_modules/expo-cli/node_modules/.bin/prebuild-install まずは、Warning: Unbrewed header files were found in /usr/local/include.の解決をします。 ...

March 16, 2020 · 6 min · 1133 words · Yu

GoでインストールからHello Golang!!

本記事は以前Qiitaに投稿した内容を本ブログに持ってきています。 概要 MacにGoをインストールして、「Hello Golang!!」を表示させるところまでを解説していきます。 また、僕はシェルにfishを使っているので、fish向けの環境構築についても記載します。 環境 macOS Catalina 10.15.1 Homebrew 2.1.15 fish 3.0.2 Goインストール $ brew install go $ go version go version go1.13.3 darwin/amd64 Homebrew使うとコマンド一つでインストールできるので、とても便利です。 GOPATHの設定 GOPATHとは、Goのソースをまとめているディレクトリを指定している環境変数のことであり、 GOPATHを利用することで、外部ライブラリの導入やビルド作業を非常に簡単に行うことができます。 bashでGOPATHを指定するには、 $ vim ~/.bash_profile で設定ファイルに以下追記をします。 export GOPATH=$HOME/go(←ワークスペースにしたい場所) export PATH=$PATH:$GOPATH/bin 僕のようにシェルにfishを使っている人は、 vim ~/.config/fish/config.fish で設定ファイルに以下追記をします。 set -x GOPATH $HOME/go set -x PATH $PATH $GOPATH/bin これでGOPATHの設定は完了です。 Hello Golang!! ではいよいよ「Hello Golang!!」を表示させていきます。 ディレクトリ構成 最終的に以下構成になります。 go/ ┣ bin/ ┣ hellogolang ┣ pkg/ ┣ src/ ┣ hellogolang/ ┣ main.go 以下ファイルのそれぞれの役割に関して記載します。 bin: 実行ファイルが格納されるディレクトリ pkg: ビルドしたパッケージオブジェクトが格納されるディレクトリ src: パッケージごとのソースが格納されるディレクトリ ...

March 16, 2020 · 1 min · 111 words · Yu

新卒でJava Silverに合格した体験記

本記事は以前Qiitaに投稿した内容を本ブログに持ってきています。 2019年3月にOracle Certified Java Programmer, Silver SE 8 認定資格を取得していて、これから受験しようと思っている人のためになればと思い、記事を作成しました。 Java Silverとは Oracle社が提供しているJava技術者向けの資格の1つで、今回僕が受けたテストは、「Oracle Certified Java Programmer, Silver SE 8 認定資格」です。 公式によると Oracle Certified Java Programmer, Silver SE 8 認定資格は、Javaアプリケーション開発に必要とされる基本的なプログラミング知識を有し、上級者の指導のもとで開発作業を行うことができる開発初心者向け資格です。 https://www.oracle.com/jp/education/certification/jse8-2489021-ja.html この試験のレベルは入社してからJavaの基礎的な研修を受けて、業務を数ヶ月こなせば初見でも全く分からない問題はないかなといった感じです。 オブジェクト指向がまったく分からない状態で、Java Silverの勉強を始めるのは少ししんどいかもです。 また、受験料が3万弱するので、落ちると悲惨です。。 確実にとりましょう!(Oracleの資格は一回落ちても、無料で再度受験できるキャンペーンをやっていることがあるので、申し込む時に忘れずに。) 勉強を始める前の僕のレベル IDE(Eclipse)を使って、なんとかJavaのコードはかけるが、基礎的な型の継承やポリモーフィズムやカプセル化などの理解は曖昧って感じでした。 試験勉強の仕方 自分は2018年9月から2019年3月までにJava Silverに合格することを会社の自分の目標にしていて、Javaプログラマ Silver SE 8 スピードマスター問題集を購入して、最初はコツコツと出勤時のお昼時間や業務中に空いている時間で勉強していました。 ですが、だらだらと勉強をしてしまっていたせいで、気付いたら1月も終わろうとしていました。笑 そこからやばいと思い本気で勉強を始めました。 本気の時の勉強 出社時のお昼時間 業務中の空いた時間 平日は退社してから、カフェで2時間勉強 休日は予定がなかったら、3〜4時間ぐらい こんな感じで60時間程度は学習にあてました。 Javaプログラマ Silver SE 8 スピードマスター問題集は3〜4周取り組みました。 1周目で分からなかった問題にチェックマークをつけて、2周目で再度解けなかった問題に取組み、最後の演習問題で分からなかった章の問題に次の周で取り組むといった具合で問題集を解いていました。 他には、TECH ProjinにJava Silverの問題があったので、その問題を解いたりしていました。 出題範囲 1章 Javaの基礎 2章 Javaのデータ型の操作 3章 演算子と判定構造の使用 4章 配列の作成と使用 5章 ループ構造の使用 6章 メソッドとカプセル化の操作 7章 継承の操作 8章 例外の処理 9章 Java APIの主要なクラスの操作 ...

March 16, 2020 · 1 min · 105 words · Yu

PythonでOpenPyXLを用いたExcel操作まとめ

本記事は以前Qiitaに投稿した内容を本ブログに持ってきています。 概要 業務でPythonを使ってExcelを作成することがあったので、備忘録としてこの記事を作成しました。 実行環境はPython 3.7で、OpenPyXLを利用してExcelを作成します。 作成・保存・読み込み 新規にExcel作成 from openpyxl import Workbook wb = Workbook() Excel保存 wb.save('test.xlsx') save()にはエクセルを保存したいpath(ディレクトリとファイル名)を指定してください。 アクティブなシート取得 ws = wb.active シート作成 ws2 = wb.create_sheet("Sheet2") ws3 = wb.create_sheet("sheet3", 0) # 最初のシートに設定 ws4 = wb.create_sheet("sheet4", -1) # 最後から2番目にシートに設定 Excel読み込み from openpyxl import load_workbook load_workbook('test.xlsx') シート編集 シートのタイトル命名 ws.title = "test-sheet" セルに文字入力 ws['A1'] = "hogehoge" ['A1']の部分に指定したいセルを入力 数式を使う ws['A1'] = "=SUM(1, 1)" セルの結合 ws.merge_cells('A2:D2') セルの結合解除 ws.unmerge_cells('A2:D2') セルの色付け from openpyxl.styles import PatternFill fill = PatternFill(patternType='solid', fgColor='4d4d4d') ws['A1'].fill = fill patternTypeはセルの塗り方、fgcolorはセルに塗る色を指定しています。 色に関しては、以下サイトなどを参考にしてください。 https://www.color-sample.com/colors/4d4d4d/ 文字に色付け from openpyxl.styles.fonts import Font ws['A1'].font = Font(color='FFFFFF') 列の幅を変更 ws.column_dimensions['A'].width = 15 セルに罫線を設定 from openpyxl.styles.borders import Border, Side border = Border(top=Side(style='thin', color='000000'), bottom=Side(style='thin', color='000000'), left=Side(style='thin', color='000000'), right=Side(style='thin', color='000000') ) for row_num in range(1, 15): for col_num in range(1, 3): ws.cell(row=row_num, column=col_num).border = border ws.cell(row=row_num, column=col_num).alignment = Alignment(horizontal = 'left', vertical = 'top', wrap_text = False) horizontalで水平方向を、verticalで垂直方向を何揃えにするかを指定しています。horizontal, verticalでは以下の定数を指定することができます。 horizontal 'center', 'centerContinuous', 'fill', 'left', 'justify', 'distributed', 'right', 'general' vertical ...

March 16, 2020 · 1 min · 179 words · Yu

PythonでExcelを添付してメールを送信する

本記事は以前Qiitaに投稿した内容を本ブログに持ってきています。 概要 先日、業務で「PythonでExcelを添付してメールを送信する」機能を試行錯誤して実装しました。 Djangoのメール送信機能を使ったら、わりかし簡単に実装できたので、自分と同じに状況になるかもしれない人のために記事を作成しました! 環境 Python 3.7 Django 2.2 ※ Djangoを利用していないと本記事の実装はできません。 事前準備 openpyxlをインストールします。 $ pip install openpyxl メールサーバの設定 プロジェクトのsettings.pyに送信先の情報を追加します。 送信するメールサーバの情報を記載してください。 settings.py EMAIL_HOST = '00.00.00.00' # 送信メールサーバ EMAIL_PORT = '000' # 送信メールポート メールに添付するExcelを整える 添付したいExcelをbytesオブジェクトに変換します。 これをしないとメール送信ができません。 from openpyxl import load_workbook from io import BytesIO wb = load_workbook('test.xlsx') # 添付したいExcelを読み込む excelfile = BytesIO() wb.save(excelfile) # Excelをbytesオブジェクトに変換する メールをExcelを添付して送信する 以下、コードでメール送信ができます!! from django.core.mail import EmailMessage subject = "件名" body = "本文です。" send_from = "hogehoge1@gmail.com" # 送信者 send_to = ["hogehoge2@gmail.com"] # 宛先リスト bcc = ["hogehoge3@gmail.com"] # Bccリスト email = EmailMessage(subject, body, send_from, send_to, bcc) email.attach('test.xlsx', excelfile.getvalue(), 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet') email.send() 参考資料 https://speakerdeck.com/thinkami/djangocongress-jp-2019-talk https://narito.ninja/blog/detail/64/

March 12, 2020 · 1 min · 94 words · Yu