Pixivでメアドが再利用可能か試してみた
現在登録しているメアドを別のPixiv idに紐づけできるか試してみました。
事の発端
もともとROM専するために別名義でPixivに登録していたのですが、 自分の作品もUPしたほうが紹介するときに便利かな、と思ったのでidを変えたくなりました。
ところが、Pixivではidの変更はできません。 仕方がないので新規登録です。
でも、どうせなら普段使っているメアドでログインできるようにしたい。 果たして一度ほかのアカウントと紐づけたことのあるメアドは再利用できるのか。
実際にやってみましょう。
やったこと
id: hoge mail: hoge@example.com で登録
id: hogeの登録メアドをhoge2@example.com に変更
id: fuga mail: hoge@example.com で登録
結果
fugaさんの登録に成功しました。やったね。
というわけで、メアドは再利用できました。
ISUCON6予選をwebサービス初心者が通過しました #isucon
ISUCON6の予選を通過しました。
私はwebサービス初心者だったのですが、初心者の視点から、チームで何を考え行ったかをメモしておきます。
ISUCONとは
いい感じスピードアップコンテスト。 webサービスが与えられるので頑張って高速化します。 詳しくは公式サイトを読んでください。
今回のお題は、はてなスターやはてなキーワード的機能が付いたWikiサイト。
チーム
チームメイトのブログはこちら。
参加動機
本選参加者の名札がかっこよく、欲しかったので。
やったこと
ソースコードはこちら。
結果
最終スコア: 19610
学生枠8位!
反省
- slackで情報伝達したのはよかった
- GitHubのプライベートリポジトリでソースを見られるようにしたのもよかった
- commit方針は気が向いたときにスナップショットというゆるふわ運用だった
- ホワイトボードやプロジェクタのある環境は便利
- スキル向上、環境構築をして個々が同時並行で別の作業ができるようにしたい
- キャッシュを使えるようにしたい
- 便利スクリプトとか用意しておくとよさそう
- その場で使い方を調べる事態が多発したので事前に練習しておきたい
感想
- 前日までの練習はazureにvmを立てるくらいしかしていなかった。 でもやっておいてよかった。 ボタンを押してsshキーを登録するだけでデプロイできるのは面白かった。
- 最初はよくわからなかったけれど ソースとチームメイトを眺めているうちに世界観が分かってきた。
- 途中から競技プログラミングを解いている気持ちになった。
- 0点だった間はつらい気持ちだったが、正の点数が取れると楽しくなってきた。
- チームメイトの2人には感謝しかない。
- 本選では正の点数をとれるように頑張りたい。
はてなキーワード aho corasick 検索松屋お持ち帰りはコスパがよい。
当日の様子
azureにvmをデプロイ。sshkeyの準備に手間取る。 何故か私のアカウントからリソースグループが確認できないが、どうせsshするので気にしないことにした。
メンバーが慣れていることから言語はrubyを選択。とりあえず初期実装でベンチマークを走らせるもPASS 0点。 動いてはいるが GET / などがタイムアウトになり減点されまくっているようだ。 なんとなくperlで動かしてみたら3000点くらい取れていた。
最悪これを提出しようrack-lineprof でプロファイルをとることにした。 クリティカルに重い箇所を改善しようというISUCONの基本を再確認した。
このあたりでなぜかベンチマークがFAILで落ちる現象が発生。 結構悩む。 どうやらプロファイルを取りながらベンチマークを走らせると処理が追い付かずに例外を吐くらしいことが分かった。 プロファイル取得のon/offを切り替えられるようにした。
htmlifyのkeywords周りが重そうということが分かった。 不要な情報まで読み込んでいたSQLを改良した。
- keywords = db.xquery(%| select * from entry order by character_length(keyword) desc |) + keywords = db.xquery(%| select keyword from entry order by character_length(keyword) desc |)
GET / の代わりに POST /star でタイムアウトするようになったので重い箇所を探す。 keywordが存在するかチェックするところでHTTP通信をしているのを発見。 HTTP通信は重そうだったので直接SQLをチェックするクエリを投げるように変えた。 点数が正(1500位)になってチームの士気が上がりだす。
こんどはまた GET / がタイムアウトするようになった。 keywordの正規表現生成を each do の中で回していることが分かった。 htmlify関数の外に出し、1度だけ呼び出すようにした。 ここで3000点位。
perl初期実装に追いついた。このあたりで静的ファイルをnginxでキャッシュするように設定した。 スコアへの寄与はあまり実感できなかったが、おそらく効いていると信じる。
点数は上がったものの、未だに GET / がタイムアウトする。 正規表現での置換が重い問題に全てのリソースを割くことにする。
keywordをひたすら|で並べる正規表現が重いということが分かっていたので、 keywordを1つずつ正規表現で置換するアルゴリズムを試した。 8000点を取るも、ベンチマークが「ページ hoge の中に fuga へのリンクがありません」みたいなメッセージを出す。 不幸な偶然だろうとベンチマークを取り直すも、点数は安定せずついにはFAILした。
アルゴリズムの再検討を始めた。 トライ木の実装や、rubyでの高速な文字列処理ライブラリ導入を試みるも失敗する。 キャッシュに乗せておくことも検討したが、不慣れなためredisの導入で手間取りそうだったので保留。
初期実装をベースに考え直すことに。 オーダー単位での改善方法が思いつかなかったので、定数倍の改善を図る。 これまでの実験により、正規表現に渡すkeywordが多いと重くなることが分かっていたので、 全てのkeywordを正規表現に渡すのをやめ、 content内に出てくるkeywordのみを抽出して正規表現に渡すことにした。 12000点位になった。
この時点で残り1時間を切っていたため、これ以上のチューニングをやめて再起動チェックを行った。 プロファイル計測を止め、不要なサービスを落としたうえでベンチマークを走らせた。 19610点をマークし、
予選通過に十分な点数と判断したため、下手にいじってミスしたくなかったので、作業を終えた。あとは終了時間までひたすら祈っていた。
まとめ
ひたすら文字列処理とSQLをチューニング(という名前の観察)していました。
名札に入れるアイコンどうしようかな。
本選でお会いする皆様、どうぞよろしくお願いします。
.NETとC#競技プログラミング
いつもC#で競技プログラミングをしているのですが、 .NETのバージョンを何にすればいいのかよく忘れるのでまとめます。
コンテストシステムで利用できるC#のバージョン
コンテストシステム | 利用できるバージョン | Visual Studioで指定すべきバージョン |
---|---|---|
AtCoder | Mono 4.2.2.30 | .NET 4.6 |
codeforces | .NET 4.0.30319 | .NET 4.0 |
codeforces | Mono 3.12.1.0 | .NET 4.5 |
AOJ | Mono 2.10.8 | .NET 4.0 |
C#のバージョン対応表
C# Ver | .NET Ver | Mono Ver |
---|---|---|
4.0 | 4 | 2.8.0 |
5.0 | 4.5 | 3.0.0 |
6.0 | 4.6 | 4.0.0 |
確認したコンテストページ
Codeforces Round #361 (Div. 2)
バージョン対応確認のため参考にしたサイト
C#の言語バージョンと.NET Frameworkバージョン - C# によるプログラミング入門 | ++C++; // 未確認飛行 C
注意事項
過去あるいは将来のコンテストでは、利用できるバージョンが変更される可能性があります。 その都度確認しましょう。
C#競技プログラミング入門以前
本記事では、C#競技プログラミング初心者だったころの私が入門する前に悩んでいた情報をまとめておきます。 内容に関しては、最適解とは限らない点はご容赦ください(もっとよい方法があれば教えて下さい)。
はじめに
C#で競技プログラミングする上で役に立つ情報は以下のページにまとまっています。 中級者以上の皆様はこちらへどうぞ。
C#で競技プログラミングを始めるべきか
強いこだわりがあれば止めませんが、C++にしたほうが無難。 標準ライブラリが貧弱(priority queue すらない)なうえ、ICPC等では使えません。
とはいえ、Visual Studio のサポートを受けながらのコーディングは快適だと思います。 C#競技プログラマで強い人としては、@chokudaiさんが有名です。 競技プログラミング関連の情報やユーザーは他言語に比べて少ないですが、頑張っていきましょう。
環境構築
Windowsの皆さんは、何も考えずにVisual Studioを入れましょう。 特にこだわりがなければ、最新のVisual Studio Community で大丈夫です。 途中でオプションでインストールするものを選択しますが、こちらはお好みで。 C#競技プログラミングにおいては、最低限の構成でも必要な機能はインストールされるはずです。
Mac/Linuxの皆さんは、Windowsを買って自分で頑張ってください。
プロジェクト作成
ここからは最近の私の流儀を紹介する形になります (現在進行形で悩んでいるところなので、ほかのC#使いの皆さんの流儀も知りたい)。
最近は、コンテストごとにソリューションを作成し、問題ごとにプロジェクトを作っています。
具体的な手順は以下。
ファイル>新規作成>プロジェクト
テンプレート>Visual C#>Windows で「コンソール アプリケーション」を選択。 名前や場所、ソリューション名を適当に設定し、OKをクリック。
これでソリューションが作成され、その下にプロジェクトが作成されます。
あとはプログラムを書いていくだけです。
さらにプロジェクトを追加する場合は、 ファイル>追加>新しいプロジェクト
テンプレート>Visual C#>Windows で「コンソール アプリケーション」を選択。 名前や場所を適当に設定し、OKをクリック。
これでプロジェクトを増やせます。どんどん問題を解いていきましょう。
コーディング
IntelliSense(Visual Studio の補完機能)をガンガン活用しながら書いていきましょう。
基礎の基礎は下のgistが参考になるかと。
この記事で説明しなかったこと
まとめ
とりあえずやってみよう!と言いたいところですが、 なかなか一歩を踏み出せなかった過去の自分へのアドバイスでした。
これをきっかけに、新たなC#競技プログラマが出てきてくれれば嬉しいです。
プロの皆様からの有益情報も絶賛募集中です。
トラベラーズチェック換金調査(2016/09)
トラベラーズチェックの換金方法が厳しくなっていたので調べてみました。
トラベラーズチェックとは
かつて海外旅行の際使われていた小切手。TCやT/Cなどとも表記されます。 詳しくは トラベラーズチェック - Wikipedia を参照。
国内主要銀行等での取り扱い
2016年9月現在、 販売(現金→TC)は取扱を終了しています。 換金(TC→現金)には制限があります。
販売は2014年に終了、 換金は2015~2016年にかけて制限されたとのこと。
今後の流動性向上は望み薄なので、まだ持っている人は早めに換金したほうがよさそうです。
以下は各行の説明です。ブログ投稿時点ではリンクが生きていることを確認しています。
トラベラーズチェックに関わるお知らせ | 三菱東京UFJ銀行
トラベラーズチェックの購入・換金はできますか | みずほ銀行:FAQ(よくあるご質問)
トラベラーズチェックの両替はできますか?: FAQ(よくあるご質問) | SMBC信託銀行
トラベラーズチェックの買取について|世界の外貨両替 トラベレックス
まとめ
金融機関名 | 換金 |
---|---|
ゆうちょ銀行 | 取扱なし |
三井住友銀行 | 自行発行のみ |
三菱東京UFJ銀行 | 自行発行/券面に自行名記載のみ |
みずほ銀行 | 自行発行のみ |
SMBC信託銀行 | シティコープ、ビザ(InterpaymentおよびCiticorp発行のものに限る)、アメリカン・エキスプレス |
トラベレックスジャパン | トーマスクック、インターペイメント、バークレーズバンク、アメリカン・エキスプレス |
ところで、バンクオブアメリカのTCってどこで換金すればよいのでしょうか…?
はてなブログはじめました
ブログはじめました宣言。
目的
- 自己紹介の際の名刺代わりになるドキュメントを作る
- 思考・行動のログを残す
目標
- とりあえず適当にやってみる
ひとこと
- そのうちにいろいろいじるかもしれない
- 箇条書きは楽