投稿

5月, 2018の投稿を表示しています

AtomでPythonの開発環境を整える(linter, atom-beautify)

イメージ
こんにちは、ぐぐりら(<a href="https://twitter.com/guglilac">@guglilac</a>)です。 <a href="https://www.tcmobile.jp/dev_blog/wp-content/uploads/2017/10/atomgazo2.png" imageanchor="1" ><img border="0" src="https://www.tcmobile.jp/dev_blog/wp-content/uploads/2017/10/atomgazo2.png" width="319" height="320" data-original-width="314" data-original-height="315" /></a> ## 概要 自分はPythonもAtomもプログラミングを始めた当初から使っているので、今の環境が一番手に馴染んでいます。 今後PCを変えたりした時のために、PythonをAtomで使うための環境構築の方法をメモ。 Atomには他にも便利なパッケージやおしゃれなテーマがたくさんありますが、今回はPythonに関係するところだけを紹介します。(他のはただインストールすればいいだけ、という理由もある) 他のパッケージも機会があれば紹介したいと思います。 なお、atomのパッケージのインストール方法はわかっているものとして書きます。 ## 導入するツール * 静的コード解析ツール * linter, busy-signal, intentions, linter-pycodestyle, linter-ui-default, (pycodestyle) * コード自動整形ツール * atom-beautify, (autopep8) ## 静的コード解析ツールの導入 静的コード解析ツールとは、プログラムを書いている最中に文法がおかしいところやタイプミスの含まれる箇所を検知して知らせてくれるツールです。 atomの

競プロでちょいハマったPythonのスタックとキューについて

イメージ
こんにちは、ぐぐりら(<a href="https://twitter.com/guglilac">@guglilac</a>)です。 <a href="https://pbs.twimg.com/profile_images/378800000000403108/c8cfcb35c76ca5fc55fc2dc680685e8c_400x400.png" imageanchor="1" ><img border="0" src="https://pbs.twimg.com/profile_images/378800000000403108/c8cfcb35c76ca5fc55fc2dc680685e8c_400x400.png" width="320" height="320" data-original-width="400" data-original-height="400" /></a> ## 前置き <a href="http://www.smartbowwow.com/2018/05/atcoder.html"> この前の記事</a>で書いたように、先日競技プログラミングを始めました。 僕はC++はかけないので、とりあえず一番手に馴染んでいるPythonを使って解いています。 競技プログラミングでは基本のデータ構造のスタックとキューについて、とりあえずリストを使って書いてみたら少しハマってしまいました。 Pythonには便利な機能がたくさんありますが、内部のアルゴリズムまで把握して使わないと計算時間を大きく消費してしまいますね。 ## ハマった内容 Pythonではリストがスタックとキューの代わりになります。 制限時間がそんなにタイトじゃなければこれでいいはず。 ```python:stack.py stack=[1,2,3,4] #push stack.append(5) #stack=[1,2,3,4,5] #pop stack.pop() #st

AtCoderを始めてみて面倒に感じた作業をシェルスクリプトにしてみた

イメージ
こんにちは、ぐぐりら(<a href="https://twitter.com/guglilac">@guglilac</a>)です。 ## 概要 <a href="https://pbs.twimg.com/profile_images/378800000000403108/c8cfcb35c76ca5fc55fc2dc680685e8c_400x400.png" imageanchor="1" ><img border="0" src="https://pbs.twimg.com/profile_images/378800000000403108/c8cfcb35c76ca5fc55fc2dc680685e8c_400x400.png" width="320" height="320" data-original-width="400" data-original-height="400" /></a> AtCoderを始めました。 AOJを昔ちょっとやったことがあったり、授業でアルゴリズムの勉強をした程度なので競技プログラミングは圧倒的初心者ですが、ちょこちょこ頑張っていこうかと思います。 沼にははまらないぞ! で、今回はちょっとした小ネタ。 とりあえずAtCoderの過去問を埋めていってどんなもんか勉強しているのですが、書いたスクリプトは綺麗に整理しようと思っています。 ABC(AtCoder beginner contest)、ARC(AtCoder regular contest)、AGC(AtCoder grand contest)などいろんな種類のコンテストがあるみたいで、コンテストごとに結構な回数のコンテストがすでに行われているみたいです。 こんな感じにしたい * atcoder * ABC * abc001 * abc001_A.py * abc001_B.py * abc001_C.py * abc001_D.py

ターミナルに長いコマンドを入力しても改行されなくなって困った

イメージ
こんにちは、ぐぐりら(<a href="https://twitter.com/guglilac">@guglilac</a>)です。 <a href="https://liginc.co.jp/wp-content/uploads/2016/06/tk_eyecatch_x2-1310x870.png" imageanchor="1" ><img border="0" src="https://liginc.co.jp/wp-content/uploads/2016/06/tk_eyecatch_x2-1310x870.png" width="320" height="212" data-original-width="800" data-original-height="531" /></a> ## 症状 macのターミナルはデフォルトだとどうでもいい情報がプロンプトに表示されて見づらいので、カスタマイズしたくなる。 表示する内容を変えたり、色を変えたり楽しんでいると、表題のようなエラーが。 長いコマンドを打つと普通は改行されてちゃんと見えるけど、改行されず同じ行の先頭に続きが入力されてどんどん上書きされていくという。 気にせず入力してEnterを押せば実行されるけれど、どう考えてもミスする未来しか見えないので対応。 ## 原因 ターミナルのプロンプトの色を変えているところにバグが潜んでいた。 `.bashrc`の`PS1`を修正することでプロンプトの表示を変えることができる。 ```bash:.bashrc PS1='\[\e[0;32m\]\W\[\e[0m\] \[\e[0;33m\]\$\[\e[0m\]' ``` みたいな感じ。カスタマイズしたい人は他の記事をみていろいろやってみるとたのしいのでどうぞ。 ちなみに`\W`はカレントディレクトリ(フルパスでない)を、`\$`は一般ユーザーだと`$`、rootだと`#`を表す。 で、色を変える時は変えたい部分をこんな感じで挟む。

iTerm2をHotKeyで起動した時にフルスクリーンで重ねて表示する

イメージ
こんにちは、ぐぐりら(<a href="https://twitter.com/guglilac">@guglilac</a>)です。 ## 環境 iTerm2 Build 3.1.6 ## はまったところ 参考: [HotKey から起動した iTerm2 を full screen に重ねて表示する - Qiita](https://qiita.com/keisuke-nakata/items/b928726084f0024efd56) を見ながらタイトルの通りの環境構築をしてました。 基本的には、この記事を参考にすればいけるけど、hotkeyで呼び出した時に適用するprofileを設定する部分が記事中の画面と違っていて困っていた。 (バージョンが違うとかなんだろか) 記事中では、iTerm2のpreferencesのKeysのところからデフォルトのprofileを指定しているようだけど、自分でやってみたらそんな項目が見つからなかった。 それ以外のところを記事の通りにすると、hotkeyで呼んだ時に全画面で表示はされるのですが、フルスクリーンで開いているアプリの上に表示しようとすると画面が切り替わってしまうようになりました。 ## 解決策 あれこれいじってたら、Profile > Keysの一番下に、それっぽい項目がありました。 `A hotkey opens a dedicated window with this profile`にチェックを入れると、hotkeyで呼んだ時にそのprofileを適用するようになります。 profileはいくつも作れますが、とりあえずdefaultのを適用するようにしてみました。 今チェックを入れたところの横にある、`Configure Hotkey Window`をクリックすると、hotkey で呼ばれた時にどんな感じで表示するかを設定できます。 この中の、 `Floating window`にチェックを入れると、フルスクリーンで開いているアプリの上にもちゃんと重なって表示される(画面が切り替わらない)ようになります。 ## 追記 あと、上の記事通りやると profiles > window > space を

git管理下のリポジトリを2通りの方法で作成

イメージ
こんにちは、ぐぐりら( @guglilac )です。 Source Treeを使わないで、2通りの方法でリポジトリを作る。 ## ローカルで作成してリモートにあげる めんどい。 対象のディレクトリをgit管理下におく `git init` 受け皿となるリポジトリをGitHubに作成する。 ローカルのディレクトリと同じ名前にするのが無難。(違う名前で試してはない) 作成したリポジトリのurlをコピー。 `use HTTPS`を指定した。(SSHではどうだろう) この段階ではローカルはリモートを認識していないので、以下のコマンドで紐付ける。 `git remote add origin "コピーしたURL"` これでリモートを認識できる。 あとは`upstrem branch`を指定して`push`すればいいと思いきや、 `git push -u origin master` とすると ```console error: failed to push some refs to 'https://github.com/habroptilus/local-test.git' hint: Updates were rejected because the remote contains work that you do hint: not have locally. This is usually caused by another repository pushing hint: to the same ref. You may want to first integrate the remote changes hint: (e.g., 'git pull ...') before pushing again. hint: See the 'Note about fast-forwards' in 'git push --help' for details. ``` というエラーが出る。 受け皿として作ったリモートリポジトリに作成されたREADMEが履歴として残っているため、 リモートの状態を`pull`してから`push`しなければいけない。

MySQLコマンド集

こんにちは、ぐぐりら(<a href="https://twitter.com/guglilac">@guglilac</a>)です。 今回はよく忘れるMySQLコマンドを集めた記事を書きました。 また、今回はmarkdown記法でブログを書くという初の試みもしてます! boostnoteを使い始めて、markdown記法でbloggerもかけないかと模索した末、こんな感じになりました! <strike>markdownのデザインはslackみたいになるようにcssを当てました笑</strike> ## 起動 `mysql.server start` ## 終了 `mysql.server stop` ## ログインする `mysql -u "username" -p`でおけ。 パスワードを設定した場合には`-p`が必要 ## ログインユーザーを調べる `select USER();` ## ユーザー一覧を表示 `SELECT user,host,authentication_string from mysql.user;` パスワードが設定されているかどうかもこれで確認できる! (暗号化はされているから忘れた時に見てもだめだけど) もともと`password`カラムが使われていてわかりやすかったけど、 いつかのバージョンアップで`password`カラムがなくなってしまったそう。 古い記事だと`password`で取得するsqlが書かれてたりして混乱した。 (現在 5.7.22で確認している) ## ユーザーを作成 `create user 'user_name'@'host_name' identified by 'password';` ## ユーザーを削除 `drop user [email protected]_name;` ## ユーザーに権限を与える ``` grant all privileges on db_name.table_name to 'user_name'@'host_name'; flush privileges;