プログラムはちょっとやらないと忘れる。 数ヶ月前にやったはずなのに、いざ再開すると、同じところでつまづく。今回は MySQL接続で利用するpymysqlでのメモをします。エラートラップとか例外とかは、書いてません。ちゃんとかける方はこのページなんかみないと思いますので簡単に書きました。
そして、これも書いたことを忘れるんだろうなきっと。
続きを読む例えば、下記のようなネスト(階層)があるディクショナリ型の一部要素を参照しようとしていたのですが
(略) "datePublished": "2018-10-11", "byArtist": { "@type": "MusicGroup", "url": "https://yyyyy.zzzzzz/us/artist/abcdefg-gambino/466842536", "name": "Childish Gambino" } }
このnameの要素にアクセスする場合、
_Artist = data['byArtist']['name']
と書いていたのですが、ものによって、このname自体がそもそもないものもありまして、KeyErrorが発生し、処理が途中でこけてしまうことがあったのですが、get関数であれば回避できますよ!って、こちらを参考にさせていただき(リンク失礼します)
ふむ、なるほどなるほどと思いつつ、あれ?階層(ネスト)がある場合、getでどう表現すればいいんだっけ?というのがわからず、それを回避した(厳密に言うと、詳しい人に聞いた)方法をメモします
前置き長くてすみません
続きを読む
たまにしかやらない DNS変更作業、いざやろうとすると、あれ?どうするんだっけ?ってなりませんか?少なくとも私はそうなりました。 今回、お名前comでドメインを登録したのですが、DNSは、aws route53のほうが管理しやすいので、切り替えようと考えました。
そして、調べて実施したのが、
お名前comからroute53のドメイン移管(ドメインレジストラ移管)
でした。完全に舵を取り違えた感じです(汗)
そしてそもそもの認識違いの発端。。。
ご指摘通り、DNS移管という、謎キーワードを、脳内で作成しまったからであります。
この間違えを踏まえ、メモがわりに記事を掲載しようと思った次第でありまして。。
内容は、お名前comのDNSをroute53に切り替えた話です
続きを読む当記事、2012年に書いた記事になりますので、hyperdbがあるかないのかもわかりませんが、当方で活用する案件が発生しましたので、再アップしました。
思っていたより簡単にできた、そして結果からいいますと、思っていたよりパフォーマンスがよく無かった記憶があるのですが、こちらで検証したチープな環境だったからでしょう。。。きっと
表題の通り、wordpressのデータベースを、MySQL レプリケーションを駆使して負荷分散する際に活用できるプラグインです。それプラスといってはなんですが、KeepAlived(LVS)を間にはさんで、スケールアウトしやすい構成にしていました、以下の構成図になります。
続きを読むMySQLおよび、MariaDBでの文字列結合関数といえばCONCAT(コンキャット)です。
MySQL :: MySQL 5.6 リファレンスマニュアル :: 12.5 文字列関数
文字列結合にいちいちconcatなんていう関数を使うのはめんどくさい、且つわけがわからなくなるので、パイプ(||)ショートカットでconcatと同様の操作がおこなえるように変更するtipsです
続きを読むMySQLとヒアドキュメントをうまく使いこなされば、さくっとSQLをファイルを作ることができます。はじめは戸惑いますが慣れれば簡単です。数百回はやったかも(^^;) ヒアドキュメント(heredocument)自体は、MySQLとはまったく関係のない話、そもそもbashではありますが、MySQLとbashヒアドキュメントの相性は大変良いので、この機会に覚えておいたほうが良いかもしれません。 また、ヒアドキュメントを有効に活用できるようになれば、プログラムを作らなくても、シェルスクリプトだけで、バッチ処理を作ることも可能になり、なんにせよ、高速です!(プログラムが遅いっていっているわけではありませんのでそのは誤解しないでください)
続きを読む
意外と知らなかったです。 root以外のアカウントから、rootに成り代わって実行はいくつかあるんですが、 rootからroot以外のアカウントに成り代わって実行する方法ってどうするんだろう?って
例えばこんなケースです
[root@]# aws ec2 describe-instance-status You must specify a region. You can also configure your region by running "aws configure".
まあ、当然そうなりますよね。aws configureは、ec2-userで設定しているわけなんで笑
このような場合、いままでsudoコマンド特定のユーザーに成り代わって実行していたのですが、amazon linuxおよびcentos等の起動コマンド・起動シェル内では設定しても動いてくれない(汗)
[root@]# sudo -H -u ec2-user aws ec2 describe-instance-status
調べた限りでは、
RedHat系のデフォルト設定では起動時のsudoは許されていないってのが理由らしく、じゃーどうすればいいの?って調べたところ runuserで実行できることがわかりました。
続きを読む
MySQL8.0の話ですので、以前のバージョンの話とはちょっと変わってしまうかもしれませんが、テーブルの作成で、ものすごくしょうもないことでハマってしまいました。
ERROR 1071 (42000): Specified key was too long; max key length is 3072 bytes
まず、前提として、索引(インデックス)の最大長は、3072バイトです。ってところから始めます(笑)
これがいけると思っていたところからが地獄の始まり(笑)都合よく、私は、varchar(1024)を1024バイトだと思ってました(汗)
CREATE TABLE `table1` ( `Id` bigint(20) NOT NULL AUTO_INCREMENT, `Url` varchar(1024) NOT NULL, PRIMARY KEY (`Id`), UNIQUE KEY `ix01` (`Url`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ; ---------------------------------------- ERROR 1071 (42000): Specified key was too long; max key length is 3072 bytes続きを読む
あ、別にawsでなくてもいいのですが、そしてshellでなくても良いのですがw よくあるかどうかまではわかりませんが、アプリケーションを手動で起動して待機させる系統のものって、インスタンスを再起動さける時に、あら。動いてない。。。なんてことがありますよね?まぁ、インスタンスが起動してから、手動で実行すればいいのですが、それも面倒なので、この際、インスタンスが起動したら、自動的にアプリケーションが起動するという設定をしてみようじゃないかと思いメモがてら書いてきます。
今回の例は、pythonは、 api_app.py と app.pyをshellで起動する例(というかメモ)で、説明します。
続きを読む