プログラミング

新着順 人気順

【Python】TypeError: string indices must be integers, not str

こんにちは suganoo です。Pythonでまた似たようなエラーが出たので備忘として書いておきます。このエラーなんだっけなと基本的なものなのにたまにど忘れしてしまいました。 TypeError: string indices must be integers, not strstringのインデックス型でin…

【Ansible】ansible-playbookのオプション調べてみた

ちょっと自分のメモがてらansbileのオプションを書き留めておきます。それぞれのファイルの正式な書き方や説明は省略します。 よく使う実行コマンド ansibleコマンド 設定ファイルなど playbookファイル hostsファイル オプション -i INVENTORY -k, --ask-pa…

【シェル】【エラー】ヒアドキュメントのEOFの前にスペースは入れてはいけない

みたいです。これはちょっとハマりました。 ヒアドキュメントとは ヒアドキュメントという機能を知っていますでしょうか?簡単に言えば複数行で文字列を表示させる機能です。 Qiitaで探すといっぱいでてきます。 詳しい機能は下記など、いろいろ探してみてく…

けっこう便利な trap コマンドなんて知らなかった

あんまりシェルスクリプトは好きじゃないんだけど インフラやってるとシェルスクリプトを書くことがある。その中で他人が書いたコマンドに trap というコマンドがあった。罠…??なんかおどろおどろしい感じがしたけど 調べてみると、なんとまあ便利なコマンド…

【シェルスクリプト】タブ区切りファイル(tsv形式)を読み込むには

シェルスクリプトを書いててtsv形式のファイルを読み込んで パースする時にちょっと困った。単純に while read LINE で読み込んで cut でもすればいいだろうと思ったら どうもうまくいかない。どうやら勝手にタブがスペースになっているようだ。理由はよくわ…

シェルスクリプトで可変長引数を扱う

シェルスクリプトを実行するときに、いくつになるかわからない引数を全て使いたいときがあります。 例えば作ったファイルを全て何か処理したいとき、いくつの引数になるかわかりません。そういったときに可変長引数を使うと便利です。可変長引数は ${@} です…

pythonでユーザー名を取得する

ユーザー名の取得方法はいろいろあります。 下記のやり方があります。 ユーザー名の取得 そんで調べてたらgetpass.getuser()のソースを調べてる人がいて LOGNAME, USER, LNAME, USERNAME から値を取ってたんですねー なるほど qiita.com (Pythonに関連したこ…

数値計算するbcコマンドが便利

こんにちは suganoo です。シェルスクリプトを書いてたりLinuxのコマンドをたたいてると単純な計算をしたいときがあります。単純な足し算やfor文内のインクリメントとか。そんなんであれば $((...)) でどうにかなります。例えば足し算なら CNT=$(( CNT + 1 )…

curl でURLのファイル存在確認をするには

これでOK curl -LI http://google.com/ # いろいろ返ってきますがリクエストの結果が返ってきます HTTP/1.1 200 OK Date: Tue, 10 Jul 2018 07:39:16 GMT Expires: -1 Cache-Control: private, max-age=0 Content-Type: text/html; charset=ISO-8859-1 P3P: …

【シェルスクリプト】visudoでスクリプトから/etc/sudoersを編集する。

あるユーザー(foobar)ユーザーを作ったからsudo権限をつけたい。 それをスクリプトから実行したい。としたとき、どうすればいいか?ちょっと悩みました。/etc/sudoersは直接編集できないし。。。 visudo でなにかしらのインプットはできない感じだし。そした…

シェルスクリプトでブロックコメント

シェルスクリプトでブロックコメントを作る方法を知ってますか?ブロックコメントはpythonでいう"""(ダブルクオート3つ)や'''(シングルクオート3つ)で囲んだコメント、またjavaで言えば/*.....*/といったように書くコメントです。1行コメントは # でコメント…

pythonでホスト名を取得する。

ホスト名の取得方法はいくつかあるようです。 下記で簡単に取得できます。 ホスト名を取得 ホスト名はどこからとってるのかなと調べてたら こんなpythonの実行もあるのか! github.com python 実行する時に -c でスクリプトを実行できるんですね。 これは便…

プロセスの並列とCPUの効率性

Goでプログラムを書くと処理が早い。ファイル処理のプログラムを書いていたのだけど 1ファイルの変換プログラムを書いたら、そのまま並列処理をさせようと設計検討をしていた。そしたら上司から「順番は意識しなくていいのだから、1CPUで1ファイル処理させる…

【メモ】sshd_configの修正は気をつけろ!最悪ログインできなくなる。

またアホなことやっちまった。。。sshd_configをいじってたら、ログインできなくなっちまいました。誰かが同じ轍をふまないように、自分のアホ操作をさらしておきます。はぁー、EC2インスタンスだったし、デプロイもすぐできるようにしてたのがせめてもの救…

シェルスクリプトで配列を扱う

こんにちは suganoo です。シェルスクリプトを書いていて配列ってどうやるんだっけ?っとたびたび調べることが多いので記事に書いておこうと思います。 コマンドの結果を配列にする まずコマンドの結果を配列に入れる方法 FILE_LIST=(`ls`)コマンドを``で囲…

文字化けファイルをinodeで消す

探してみたらけっこうやり方あるみたいですね。 でも備忘のため書いておきます。そもそもなんでinode番号指定で消す必要があるのか?ですが、こんなことがありました。 一行一行ファイル名を書いたリストを作る そのリストを読み込む 1行づつ書いてあるファ…

【Go】Go言語でSQLを実行してみる

こんにちは suganoo です。Go言語からのDB操作を復習したいと思います。「Goプログラミング実践入門」でDBの操作が出ていたので、おさらいをしておきたいなと思ってました。 今回はORMは使いません。それはそれでいつかまた調べて記事にしてみようと思います…

【python】組み込み関数open()でTypeError: an integer is required

open()でファイルを読み込もうとしたら こんなエラーがでた。 file = "zzz_test.txt" with open(file, "r", "utf-8") as f_r: print f_r.readline() Traceback (most recent call last): File "zzz_opentest.py", line 3, in <module> with open(file, "r", "utf-8")</module>…

【Python】TypeError: f() takes exactly 1 arguments (2 given)

エラーを調査してましたら、うっかり紛らわしいケースが見つかりました。関数を実行するときに引数の数が正しくないと、タイトルのようなエラーがでます。 例1 ためしに、引数が正しい処理と正しくない処理を実行してみます。 test.py def printNum(a, b): p…

JenkinsのMaster-Slave間のオンライン/オフラインの関係

ちょっとこりゃ知らなかったなあというネタを書いておきます。 前回こんな記事を書きました。 suganoo.hatenablog.com 関連してジョブの切り替えをもう少し知らべてみたところ、1つわかったことがありました。短い言葉で説明がむずかしいのですが、 Slaveノ…

【Go】exec.Commandで外部コマンドを実行する

たまたま気になったので調べてみました。ざっくりいうと exec.Command("hoge")で実行コマンドを指定します。 .Run() : 返却値を無視 .Output() : 返却値を取得 .Start() : 完了を待たない .Wait() : 完了を待つ ソースコードは後述の参考Qiitaを参考にしてい…

シェルで最後に改行の無いファイルを読むと最後の行は読み飛ばされる

たまーにあるんだけど windowsで作ったファイルをlinuxで読み込むと BOMが入ったり、末尾に改行がなかったりする。その末尾の改行がないファイルを読み込むと 最後の行が読み飛ばされることがあった。気づくまですげーめんどくさかった。。。 まあ解決方法は…

【Golang】userパッケージを使ってみる

userパッケージを使ってみました。user - The Go Programming Language package main import ( "fmt" "os/user" ) func main() { user, err := user.Current() if err != nil { panic(err) } fmt.Println("User.Name : " + user.Name) fmt.Println("User.Uid…

pythonのimportエラー ValueError: Attempted relative import in non-package を雑に解決する

pythonで悩ましいところの一つにimportエラーがあります。適切な方法でモジュールをインポートする必要があるのですが、自分で作ったスクリプトを適当に相対パスでimportとしようとするとエラーになって悩むことがあります。importのパスがよろしくないとこ…

logging formatで定義に無いものを書く方法

以前のブログでlogging.propertyの書き方を書いていました。 suganoo.hatenablog.com ※logging.propertyだかlogging.confだか、どっちが適切な表現なのかはここでは置いておく。 logging.confを書いている時に、あれこんなことできないかなと悩みました。 ロ…

【Golang】tmpファイルを扱う

Golangにはtempとしてのファイル操作関数があるんですね。便利ですね。 あまり使う用途ないかもしれませんが、パッと見関数で何やってるかわかって可読性がちょっとよくなるかもしれません。 サンプルコード ポイント ioutil.TempFile ioutil.TempDir os.Tem…

JenkinsのSlaveノードの冗長化を考えてみた

Jenkinsを構築しているんですが、障害対策を検討してみたお話です。自分ところで使ってるJenkinsはそれほどクリティカルではないにせよ、Jenkinsのノードが落ちてしまったりするとリカバリがなかなか大変なので障害対策をしておきたかったわけです。Masterに…

【Golang】Go言語でjsonを扱う

「Goプログラミング実践入門 標準ライブラリでゼロからWebアプリを作る」を読んでいたら、jsonを扱う項目があったので練習がてら自分でも書いてみました。ほかにもやり方はあるようですが、まずはオーソドックスなやり方のencoding/json使ってやってみます。…

【Go】Go言語で時間を扱う(pkg/time)機能を"ほぼ"まとめてみた

ファイル名にタイムスタンプを入れたいなと思ってtime パッケージを調べてたんですが、便利な機能が意外とあるなと気づいたのでまとめてみました。ちょくちょく調べることがあるので、この際いっきにまとめてみることにした。自分でも知らない機能があったり…

ArgumentParser使い方

ArgumentParserの使い方 このように書いて python hoge.py --config hage --logtype fuga こんな風に実行します。