さるへい備忘録

さるへいのやったことを綴っているブログです。基本的にテクノロジーの話題です。

MySQLの権限設定のやりかた、RDSの場合の特別な設定も

MySQLの権限設定で困ったのでメモ。 RDSだとちょっと使えない文字列があるので注意です 普通にGRANT設定するだけ GRANT SELECT,INSERT,UPDATE,DELETE ON `DB名`.* TO `ユーザ名`@* IDENTIFIED BY 'パスワード'; 上記のSELECTやINSERTのところに許可したい権…

PythonでLRUキャッシュを使って負荷軽減と高速化

皆さん、PythonにもPHPのOPCacheのようなキャッシュ機能があったのをご存知ですか? そんなLRUCacheの紹介をしようと思います。こちらはPython3.2以降で使える機能です。 docs.python.org LRUCacheは LRU (least recently used) cache という技術をつかって…

ssh接続時のポート変更の際にSELinuxの設定を変更する

ssh接続してますか? ssh接続のポートを変更する際はいろいろな設定を変更しなければいけませんよね。 sshのコンフィグ、iptables、 もしAWS使ってたらセキュリティグループもいじらないといけません。 しかし実は SELinux もいじらないといけないんです。上…

MySQLの文字列から数値への型変換について

MySQLで文字列から数値の型変換でちょっと変換のされかたが特殊だったので紹介します。 公式のドキュメントはこちら MySQL :: MySQL 5.6 リファレンスマニュアル :: 12.10 キャスト関数と演算子 明示的な型変換 型変換というのはだいたいアプリケーション側…

iOSアプリ × Swiftでsegueで遷移する際にデータを受け渡すやりかた

segueで遷移する時になにか初期データを渡して遷移させたい?そんなことを考えたことがありませんか? 遷移時にAPIを呼び出したりするのもUX的にちょっとなぁ。。。みたいなことはあると思います。 そんな時はsegue遷移時の以下のコードのようにして定義でき…

Pythonでコロンなどの引数のパラメータ名に使えない文字を無理やり引数のパラメータ名に指定する方法

Pythonで引数にコロンなどの利用できない文字を含めたパラメータ名で呼び出したいといった場合がありませんか? どういう意味かわからないって顔をしている人が多そうです。 sample(ho:ge='hoge') みたいな感じで呼び出したいってことですね。 もちろん上記…

iOSアプリでTableViewを実装しようとしたら表示されなかった。TableViewに限らずなにも表示されない時の原因について

みなさんTableViewつかってますか? アプリを作る上でTableViewは欠かせない要素だと思います。 そんなTableViewが急に一切表示されなくなったということがありました。 cellの生成メソッドは問題なく呼ばれているのになぜ?という感じでしたが、原因がわか…

iOSアプリでfirebaseを導入したはずなのにうまくいかないよといったことへのtips

今やiOSアプリを作る際はfirebaseを導入するでしょう!といった雰囲気があります。 firebaseは無料で使える非常に優秀なツールなのでたしかに入れない理由はありません。 ですが、 (https://firebase.google.com/docs/ios/setup?hl=ja) の通りに導入したのに…

swiftとsegueで画面遷移のやりかた

iOSの開発で誰しもが困るポイント「画面遷移」 segueを使って実装したらかなり楽でした。 以下のようなやりかたで実現できます。 1. 遷移先のView Controller作成 storyboardからView Controllerをもう一つ作成しましょう 2. 遷移元のView Controllerと遷移…

SELinuxが原因の通信遮断の原因判定から、audit2allowでnginxなどを許可するまで。

外部と通信しているアプリケーションの場合、通信できない原因はSELinuxを疑ってみると原因がSELinuxであることが多々あります。 でもSELinuxってなかなか難しいですよね。 web上を探してもあんまり資料が落ちてないし、そもそも疑うエラーログからは全然SEL…

Pythonの動的なモジュールとクラスのインポートからのインスタンス生成方法

Pythonでモジュールの動的なインポートからのインスタンス生成をしたので紹介します。 クラスだけ動的に生成はけっこうあるんですが、モジュールの動的インポートって結構レアみたいですね。 IDEとかでエラーが見えづらくなるので、そこは注意してくださいね…

iOSアプリを作ってる時にBar Button Itemからsegueを繋げないのにさっぱり反応しない時の原因

iOSアプリを作ってる時にナビゲーションバーにボタンを設置して、そこから前の画面へ遷移したりすることはよくあると思います。 こんなやつ そんな時に事件は起こりました。 segueをつなげてさあ別のページへ遷移!と設定したんですが、全然動かない。。。。…

certbotでtls-sni-01のサポートが終了するので、証明書の更新方法の確認方法を紹介する

無料のSSL証明書として名高いcertbot(旧 let's encrypt)ですが、証明書の更新方法として tls-sni-01 のサポートを終了するようですね。 なにか対応するつもりだったのらしいですが、諦めたみたいな話らしいです。 community.letsencrypt.org 上記が脆弱性…

SQLAlchemyでMEDIUMTEXTやLONGTEXT、TINYINTを使う方法

皆さんSQLAlchemy使ってますか? github.com PythonのORマッパーといえば、SQLAlchemyと言われるくらいSQLAlchemyは利用されているライブラリです。 そんな中、マニュアル読んでざっくり使ってるだけだとMySQLでINTEGERやVARCHARは使えるんだけど、TINYINTや…

XCodeでなんかよくわからないけどエラーがでている時の対処法

Xcodeで5年ぶりにコードを書いている時、あれ?なんか直してビルドしてもエラーが修正されないぞ? みたいなことが発生しました。 Xcode使ったり、eclipseでJava書いてる人には常識なんですが、5年ぶりでめっちゃ忘れてて1時間くらいハマったのでここにメモ…

JSONを扱うにはCodableが便利

Swiftを5年ぶりに触ってたんですが、なんだかCodableというJSONを簡単に扱えるプロトコルが実装されてて非常に感動しました。 3週間前のメモなんで8割がた忘れちゃったんですが、頑張って思い出しながら書いてみます。 Codableとは 公式のリファレンスはこち…

AWSのEC2インスタンスをたてたときにいつもやってること(1) ~ sshの設定まで

AWSのEC2インスタンスを立てた時にしている作業を備忘録的な感じで書いていきます 大前提 CentOS7 AWS EC2 今回やったこと yumリポジトリ追加 ユーザー作成 ssh公開鍵認証ログイン sshのconfig設定 これ以上は(2)で書いていきます 最初に、全てのyum関係のソ…

tmuxのアタッチで、セッションを指定してアタッチする方法

よく忘れるので、 tmuxのセッションを指定してアタッチする方法のメモ まず、セッションの一覧を確認 $ tmux ls 0: 2 windows (created Sun Dec 20 19:08:11 2015) [208x59] (attached) 1: 4 windows (created Sun Dec 20 19:24:46 2015) [208x59] (attached…

AWSのEC2で、timezoneをUTCからJSTにする方法

AWSのtimezoneをJSTに変更する際に困ったのでメモ $ sudo cp /usr/share/zoneinfo/Asia/Tokyo /etc/ とするだけでtimezoneが日本になるようです。 $ date 2015年 12月 22日 火曜日 02:44:25 JST dateコマンドなどで確認すると、JSTになっていました。

PHPで月末を取得したくなった場合

一言メモ PHPで月末を取得したくなった場合

sortで、ランキング順に表示する方法

一言メモ sortで、ランキング順に表示するには、 cat 対象ファイル | sort | uniq -c | sort -r でできるみたいですね。

vimで、readonlyで開いてしまったけど無理やり保存したい

vimでファイルを編集していざ保存という時にreadonlyで開いていて困ったというのよくありませんか? 僕はapacheのconfとか書き換える際によくやらかします その際は、 :w !sudo tee % とやると無理やり保存できるようです。 あの保存した際の、readonlyだよ…

swiftでナビゲーションバーにボタンをつける

swiftで、ナビゲーションバーに検索ボタンなどを付与したくなったことはありませんか? 以下のように実装するとナビゲーションバーにボタンを付与できるみたいです。 1. navigationControllerを追加する 追加したい画面を選択して、Editor -> Embed in -> Na…

swiftでURLを指定して画像を取得する方法

swiftでURLを指定して画像を取得するには以下の方法で取得できるようです。 var err: NSError? //NSErrorのインスタンスを作成 var url: NSURL = NSURL(string: "http://hogehoge")! //urlの文字列を与えてNSURLのインスタンスを作成 var imageData: NSData …

swiftで画面幅を取得する

swiftで画面の横幅を取得するには以下のコードを実行すると良いようです。 UIScreen.mainScreen().bounds.size.width 他にも。。。 画面の縦幅 UIScreen.mainScreen().bounds.size.height 画面のframeで取得 UIScreen.mainScreen().bounds swiftだから特別に…

apache(httpd)の再起動について

いろいろあってapacheの再起動が必要なことってありますよね。 僕は、apacheの再起動っていつも $ service httpd restart ってやってたんですが、もっと良い方法があるということを知りました。 $ service httpd graceful というコマンドです。 これは、全て…

AWSのEC2インスタンスとRDS(MYSQL)の間の通信でSELinuxでハマった話

すごい初歩的なお話になりますが、僕が AWSのEC2インスタンスとRDSの通信で1時間くらいハマった話をします。 ec2インスタンスから直接mysqlのコマンドでhost指定して接続するのは可能なのに、 PHPから接続しようとすると接続できない。 ずっと Unknown MySQL…

テスト初心者に贈る〜さるへいが学んだユニットテストの基礎〜(クソ記事)

こんにちは!さるへいです。 いまこの記事は、とある企業のエンジニアブログに載せようとしたら、ひどすぎるといわれてリジェクトされたので、ここに載せている記事です。 つまり!クソ記事です! 温かい目で見て下さいね! 本題としては、テスト初心者の僕…

@staticmethodについて

pythonのstaticmethodがいまいちよくわからなかったので調べて少しまとめてみた。 公式のドキュメントはこちら→公式ドキュメント 公式ドキュメントを見ると以下のように使うと書かれている。 class C: @staticmethod def f(arg1, arg2, ...): ... デコレータ…

noseつかってみた

noseとは、pythonのユニットテストを補助してくれるパッケージのことです。 $pip install nose でインストールできます。 適当なpythonのプログラムを書いてそれをテストしてみます 以下のプログラムをsample_for_nose.pyとして作成します。 # -*- coding: u…