<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-1614548079112644537</id><updated>2025-06-02T21:50:44.794+09:00</updated><category term="iOS"/><category term="Android"/><category term="Django"/><category term="Python"/><category term="Linux"/><category term="ChromeExtension"/><category term="Ubuntu"/><category term="JavaScript"/><category term="CSS"/><category term="OSX"/><category term="Apache"/><category term="JQueryMobile"/><category term="X11"/><category term="HTML"/><category term="Mac"/><category term="DB"/><category term="GAE"/><category term="PostgreSQL"/><category term="Twitter"/><category term="AdSense"/><category term="Git"/><category term="Inkscape"/><category term="Amazon"/><category term="Bootstrap"/><category term="CoffeeScript"/><category term="Facebook"/><category term="Gimp"/><category term="Wine"/><category term="Xcode"/><title type='text'>Hello World</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://hello-hello-world.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1614548079112644537/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://hello-hello-world.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/1614548079112644537/posts/default?start-index=26&amp;max-results=25&amp;redirect=false'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>158</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-1614548079112644537.post-7687959935427998911</id><published>2022-08-05T15:48:00.001+09:00</published><updated>2022-08-05T15:48:03.551+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Mac"/><title type='text'>brew doctor のエラー</title><content type='html'>&lt;p&gt;&lt;code&gt;$brew doctor &lt;/code&gt;を実行するとエラーになって、&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;code&gt;/usr/local/Homebrew/Library/Homebrew/os/mac/version.rb:32:in `block in from_symbol&#39;: unknown or unsupported macOS version: :dunno (MacOSVersionError)&lt;/code&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;みたいなのが表示される。これで困ったら、&lt;code&gt;brew update-reset をすればいいらしい。&lt;/code&gt;&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://hello-hello-world.blogspot.com/feeds/7687959935427998911/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1614548079112644537/7687959935427998911?isPopup=true' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1614548079112644537/posts/default/7687959935427998911'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1614548079112644537/posts/default/7687959935427998911'/><link rel='alternate' type='text/html' href='http://hello-hello-world.blogspot.com/2022/08/brew-doctor.html' title='brew doctor のエラー'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1614548079112644537.post-5166802932800313995</id><published>2016-05-11T20:33:00.003+09:00</published><updated>2016-05-11T20:33:50.909+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="iOS"/><category scheme="http://www.blogger.com/atom/ns#" term="JavaScript"/><title type='text'>iOSのSafariとUIWebViewでspeechSynthesis.getVoices()が空っぽ</title><content type='html'>JavaScriptで、speechSynthesis.getVoices() とやれば、テキストを音声読み上げするときに設定するvoiceのリストが返ってくるはずなんだけど、iOSだと空っぽのemptyリストが返ってきてしまう。実際には、音声読み上げ可能なはずなのに、空っぽ。iOSのバージョン9.2でしかチェックしていない。&lt;br /&gt;
&lt;br /&gt;
さあ困った。どうする？&lt;br /&gt;
&lt;br /&gt;
予想としては、Objective-Cのコードで&amp;nbsp; [AVSpeechSynthesisVoice speechVoices]; とやったときに取得できるvoiceは利用可能なのでないかと思う。&lt;br /&gt;
&lt;br /&gt;
実際に試してみる。やっぱりそうみたい。利用可能なのはこんな感じ。（&lt;a href=&quot;http://www.toyship.org/archives/1483&quot; target=&quot;_blank&quot;&gt;ここから転載&lt;/a&gt;）&lt;br /&gt;
&lt;br /&gt;
&lt;table border=&quot;0&quot; class=&quot;easy-table easy-table-default &quot; style=&quot;background-color: white; border-collapse: collapse; border-spacing: 0px; color: #555555; font-family: Helvetica, serif; font-size: 13px; line-height: 22px; margin: 0px 0px 18px; max-width: 100%; width: 500px;&quot;&gt;&lt;thead&gt;
&lt;tr&gt;&lt;th style=&quot;border-bottom-color: rgb(231, 231, 231); border-bottom-style: solid; border-bottom-width: 3px; border-top-width: 0px; font-size: 0.846154em; line-height: 18px; padding: 8px; vertical-align: bottom; width: 100px;&quot;&gt;Locale&lt;/th&gt;&lt;th style=&quot;border-bottom-color: rgb(231, 231, 231); border-bottom-style: solid; border-bottom-width: 3px; border-top-width: 0px; font-size: 0.846154em; line-height: 18px; padding: 8px; vertical-align: bottom; width: 150px;&quot;&gt;Language/Country&lt;/th&gt;&lt;/tr&gt;
&lt;/thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;border-bottom-color: rgb(231, 231, 231); border-bottom-style: solid; border-bottom-width: 1px; border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; color: #888888; line-height: 18px; padding: 8px; vertical-align: top;&quot;&gt;ar-SA&lt;/td&gt;&lt;td style=&quot;border-bottom-color: rgb(231, 231, 231); border-bottom-style: solid; border-bottom-width: 1px; border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; color: #888888; line-height: 18px; padding: 8px; vertical-align: top;&quot;&gt;Arabic (Saudi Arabia)&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style=&quot;border-bottom-color: rgb(231, 231, 231); border-bottom-style: solid; border-bottom-width: 1px; border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; color: #888888; line-height: 18px; padding: 8px; vertical-align: top;&quot;&gt;en-ZA&lt;/td&gt;&lt;td style=&quot;border-bottom-color: rgb(231, 231, 231); border-bottom-style: solid; border-bottom-width: 1px; border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; color: #888888; line-height: 18px; padding: 8px; vertical-align: top;&quot;&gt;English (South Africa)&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style=&quot;border-bottom-color: rgb(231, 231, 231); border-bottom-style: solid; border-bottom-width: 1px; border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; color: #888888; line-height: 18px; padding: 8px; vertical-align: top;&quot;&gt;th-TH&lt;/td&gt;&lt;td style=&quot;border-bottom-color: rgb(231, 231, 231); border-bottom-style: solid; border-bottom-width: 1px; border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; color: #888888; line-height: 18px; padding: 8px; vertical-align: top;&quot;&gt;Thai (Thailand)&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style=&quot;border-bottom-color: rgb(231, 231, 231); border-bottom-style: solid; border-bottom-width: 1px; border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; color: #888888; line-height: 18px; padding: 8px; vertical-align: top;&quot;&gt;nl-BE&lt;/td&gt;&lt;td style=&quot;border-bottom-color: rgb(231, 231, 231); border-bottom-style: solid; border-bottom-width: 1px; border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; color: #888888; line-height: 18px; padding: 8px; vertical-align: top;&quot;&gt;Dutch (Belgium)&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style=&quot;border-bottom-color: rgb(231, 231, 231); border-bottom-style: solid; border-bottom-width: 1px; border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; color: #888888; line-height: 18px; padding: 8px; vertical-align: top;&quot;&gt;en-AU&lt;/td&gt;&lt;td style=&quot;border-bottom-color: rgb(231, 231, 231); border-bottom-style: solid; border-bottom-width: 1px; border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; color: #888888; line-height: 18px; padding: 8px; vertical-align: top;&quot;&gt;English (Australia)&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style=&quot;border-bottom-color: rgb(231, 231, 231); border-bottom-style: solid; border-bottom-width: 1px; border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; color: #888888; line-height: 18px; padding: 8px; vertical-align: top;&quot;&gt;de-DE&lt;/td&gt;&lt;td style=&quot;border-bottom-color: rgb(231, 231, 231); border-bottom-style: solid; border-bottom-width: 1px; border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; color: #888888; line-height: 18px; padding: 8px; vertical-align: top;&quot;&gt;German (Germany)&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style=&quot;border-bottom-color: rgb(231, 231, 231); border-bottom-style: solid; border-bottom-width: 1px; border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; color: #888888; line-height: 18px; padding: 8px; vertical-align: top;&quot;&gt;en-US&lt;/td&gt;&lt;td style=&quot;border-bottom-color: rgb(231, 231, 231); border-bottom-style: solid; border-bottom-width: 1px; border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; color: #888888; line-height: 18px; padding: 8px; vertical-align: top;&quot;&gt;English (United States)&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style=&quot;border-bottom-color: rgb(231, 231, 231); border-bottom-style: solid; border-bottom-width: 1px; border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; color: #888888; line-height: 18px; padding: 8px; vertical-align: top;&quot;&gt;pt-BR&lt;/td&gt;&lt;td style=&quot;border-bottom-color: rgb(231, 231, 231); border-bottom-style: solid; border-bottom-width: 1px; border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; color: #888888; line-height: 18px; padding: 8px; vertical-align: top;&quot;&gt;Portuguese (Brazil)&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style=&quot;border-bottom-color: rgb(231, 231, 231); border-bottom-style: solid; border-bottom-width: 1px; border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; color: #888888; line-height: 18px; padding: 8px; vertical-align: top;&quot;&gt;pl-PL&lt;/td&gt;&lt;td style=&quot;border-bottom-color: rgb(231, 231, 231); border-bottom-style: solid; border-bottom-width: 1px; border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; color: #888888; line-height: 18px; padding: 8px; vertical-align: top;&quot;&gt;Polish (Poland)&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style=&quot;border-bottom-color: rgb(231, 231, 231); border-bottom-style: solid; border-bottom-width: 1px; border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; color: #888888; line-height: 18px; padding: 8px; vertical-align: top;&quot;&gt;en-IE&lt;/td&gt;&lt;td style=&quot;border-bottom-color: rgb(231, 231, 231); border-bottom-style: solid; border-bottom-width: 1px; border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; color: #888888; line-height: 18px; padding: 8px; vertical-align: top;&quot;&gt;English (Ireland)&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style=&quot;border-bottom-color: rgb(231, 231, 231); border-bottom-style: solid; border-bottom-width: 1px; border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; color: #888888; line-height: 18px; padding: 8px; vertical-align: top;&quot;&gt;el-GR&lt;/td&gt;&lt;td style=&quot;border-bottom-color: rgb(231, 231, 231); border-bottom-style: solid; border-bottom-width: 1px; border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; color: #888888; line-height: 18px; padding: 8px; vertical-align: top;&quot;&gt;Greek (Greece)&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style=&quot;border-bottom-color: rgb(231, 231, 231); border-bottom-style: solid; border-bottom-width: 1px; border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; color: #888888; line-height: 18px; padding: 8px; vertical-align: top;&quot;&gt;id-ID&lt;/td&gt;&lt;td style=&quot;border-bottom-color: rgb(231, 231, 231); border-bottom-style: solid; border-bottom-width: 1px; border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; color: #888888; line-height: 18px; padding: 8px; vertical-align: top;&quot;&gt;Indonesian (Indonesia)&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style=&quot;border-bottom-color: rgb(231, 231, 231); border-bottom-style: solid; border-bottom-width: 1px; border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; color: #888888; line-height: 18px; padding: 8px; vertical-align: top;&quot;&gt;sv-SE&lt;/td&gt;&lt;td style=&quot;border-bottom-color: rgb(231, 231, 231); border-bottom-style: solid; border-bottom-width: 1px; border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; color: #888888; line-height: 18px; padding: 8px; vertical-align: top;&quot;&gt;Swedish (Sweden)&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style=&quot;border-bottom-color: rgb(231, 231, 231); border-bottom-style: solid; border-bottom-width: 1px; border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; color: #888888; line-height: 18px; padding: 8px; vertical-align: top;&quot;&gt;tr-TR&lt;/td&gt;&lt;td style=&quot;border-bottom-color: rgb(231, 231, 231); border-bottom-style: solid; border-bottom-width: 1px; border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; color: #888888; line-height: 18px; padding: 8px; vertical-align: top;&quot;&gt;Turkish (Turkey)&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style=&quot;border-bottom-color: rgb(231, 231, 231); border-bottom-style: solid; border-bottom-width: 1px; border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; color: #888888; line-height: 18px; padding: 8px; vertical-align: top;&quot;&gt;pt-PT&lt;/td&gt;&lt;td style=&quot;border-bottom-color: rgb(231, 231, 231); border-bottom-style: solid; border-bottom-width: 1px; border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; color: #888888; line-height: 18px; padding: 8px; vertical-align: top;&quot;&gt;Portuguese (Portugal)&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style=&quot;border-bottom-color: rgb(231, 231, 231); border-bottom-style: solid; border-bottom-width: 1px; border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; color: #888888; line-height: 18px; padding: 8px; vertical-align: top;&quot;&gt;ja-JP&lt;/td&gt;&lt;td style=&quot;border-bottom-color: rgb(231, 231, 231); border-bottom-style: solid; border-bottom-width: 1px; border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; color: #888888; line-height: 18px; padding: 8px; vertical-align: top;&quot;&gt;Japanese (Japan)&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style=&quot;border-bottom-color: rgb(231, 231, 231); border-bottom-style: solid; border-bottom-width: 1px; border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; color: #888888; line-height: 18px; padding: 8px; vertical-align: top;&quot;&gt;ko-KR&lt;/td&gt;&lt;td style=&quot;border-bottom-color: rgb(231, 231, 231); border-bottom-style: solid; border-bottom-width: 1px; border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; color: #888888; line-height: 18px; padding: 8px; vertical-align: top;&quot;&gt;Korean (Korea)&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style=&quot;border-bottom-color: rgb(231, 231, 231); border-bottom-style: solid; border-bottom-width: 1px; border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; color: #888888; line-height: 18px; padding: 8px; vertical-align: top;&quot;&gt;hu-HU&lt;/td&gt;&lt;td style=&quot;border-bottom-color: rgb(231, 231, 231); border-bottom-style: solid; border-bottom-width: 1px; border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; color: #888888; line-height: 18px; padding: 8px; vertical-align: top;&quot;&gt;Hungarian (Hungary)&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style=&quot;border-bottom-color: rgb(231, 231, 231); border-bottom-style: solid; border-bottom-width: 1px; border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; color: #888888; line-height: 18px; padding: 8px; vertical-align: top;&quot;&gt;cs-CZ&lt;/td&gt;&lt;td style=&quot;border-bottom-color: rgb(231, 231, 231); border-bottom-style: solid; border-bottom-width: 1px; border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; color: #888888; line-height: 18px; padding: 8px; vertical-align: top;&quot;&gt;Czech (Czech Republic)&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style=&quot;border-bottom-color: rgb(231, 231, 231); border-bottom-style: solid; border-bottom-width: 1px; border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; color: #888888; line-height: 18px; padding: 8px; vertical-align: top;&quot;&gt;da-DK&lt;/td&gt;&lt;td style=&quot;border-bottom-color: rgb(231, 231, 231); border-bottom-style: solid; border-bottom-width: 1px; border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; color: #888888; line-height: 18px; padding: 8px; vertical-align: top;&quot;&gt;Danish (Denmark)&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style=&quot;border-bottom-color: rgb(231, 231, 231); border-bottom-style: solid; border-bottom-width: 1px; border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; color: #888888; line-height: 18px; padding: 8px; vertical-align: top;&quot;&gt;es-MX&lt;/td&gt;&lt;td style=&quot;border-bottom-color: rgb(231, 231, 231); border-bottom-style: solid; border-bottom-width: 1px; border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; color: #888888; line-height: 18px; padding: 8px; vertical-align: top;&quot;&gt;Spanish (Mexico)&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style=&quot;border-bottom-color: rgb(231, 231, 231); border-bottom-style: solid; border-bottom-width: 1px; border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; color: #888888; line-height: 18px; padding: 8px; vertical-align: top;&quot;&gt;fr-CA&lt;/td&gt;&lt;td style=&quot;border-bottom-color: rgb(231, 231, 231); border-bottom-style: solid; border-bottom-width: 1px; border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; color: #888888; line-height: 18px; padding: 8px; vertical-align: top;&quot;&gt;French (Canada)&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style=&quot;border-bottom-color: rgb(231, 231, 231); border-bottom-style: solid; border-bottom-width: 1px; border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; color: #888888; line-height: 18px; padding: 8px; vertical-align: top;&quot;&gt;nl-NL&lt;/td&gt;&lt;td style=&quot;border-bottom-color: rgb(231, 231, 231); border-bottom-style: solid; border-bottom-width: 1px; border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; color: #888888; line-height: 18px; padding: 8px; vertical-align: top;&quot;&gt;Dutch (Netherlands)&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style=&quot;border-bottom-color: rgb(231, 231, 231); border-bottom-style: solid; border-bottom-width: 1px; border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; color: #888888; line-height: 18px; padding: 8px; vertical-align: top;&quot;&gt;fi-FI&lt;/td&gt;&lt;td style=&quot;border-bottom-color: rgb(231, 231, 231); border-bottom-style: solid; border-bottom-width: 1px; border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; color: #888888; line-height: 18px; padding: 8px; vertical-align: top;&quot;&gt;Finnish (Finland)&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style=&quot;border-bottom-color: rgb(231, 231, 231); border-bottom-style: solid; border-bottom-width: 1px; border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; color: #888888; line-height: 18px; padding: 8px; vertical-align: top;&quot;&gt;es-ES&lt;/td&gt;&lt;td style=&quot;border-bottom-color: rgb(231, 231, 231); border-bottom-style: solid; border-bottom-width: 1px; border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; color: #888888; line-height: 18px; padding: 8px; vertical-align: top;&quot;&gt;Spanish (Spain)&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style=&quot;border-bottom-color: rgb(231, 231, 231); border-bottom-style: solid; border-bottom-width: 1px; border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; color: #888888; line-height: 18px; padding: 8px; vertical-align: top;&quot;&gt;it-IT&lt;/td&gt;&lt;td style=&quot;border-bottom-color: rgb(231, 231, 231); border-bottom-style: solid; border-bottom-width: 1px; border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; color: #888888; line-height: 18px; padding: 8px; vertical-align: top;&quot;&gt;Italian (Italy)&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style=&quot;border-bottom-color: rgb(231, 231, 231); border-bottom-style: solid; border-bottom-width: 1px; border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; color: #888888; line-height: 18px; padding: 8px; vertical-align: top;&quot;&gt;ro-RO&lt;/td&gt;&lt;td style=&quot;border-bottom-color: rgb(231, 231, 231); border-bottom-style: solid; border-bottom-width: 1px; border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; color: #888888; line-height: 18px; padding: 8px; vertical-align: top;&quot;&gt;Romanian (Romania)&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style=&quot;border-bottom-color: rgb(231, 231, 231); border-bottom-style: solid; border-bottom-width: 1px; border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; color: #888888; line-height: 18px; padding: 8px; vertical-align: top;&quot;&gt;no-NO&lt;/td&gt;&lt;td style=&quot;border-bottom-color: rgb(231, 231, 231); border-bottom-style: solid; border-bottom-width: 1px; border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; color: #888888; line-height: 18px; padding: 8px; vertical-align: top;&quot;&gt;Norwegian(Norway)&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style=&quot;border-bottom-color: rgb(231, 231, 231); border-bottom-style: solid; border-bottom-width: 1px; border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; color: #888888; line-height: 18px; padding: 8px; vertical-align: top;&quot;&gt;zh-HK&lt;/td&gt;&lt;td style=&quot;border-bottom-color: rgb(231, 231, 231); border-bottom-style: solid; border-bottom-width: 1px; border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; color: #888888; line-height: 18px; padding: 8px; vertical-align: top;&quot;&gt;Chinese (Hong Kong)&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style=&quot;border-bottom-color: rgb(231, 231, 231); border-bottom-style: solid; border-bottom-width: 1px; border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; color: #888888; line-height: 18px; padding: 8px; vertical-align: top;&quot;&gt;zh-TW&lt;/td&gt;&lt;td style=&quot;border-bottom-color: rgb(231, 231, 231); border-bottom-style: solid; border-bottom-width: 1px; border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; color: #888888; line-height: 18px; padding: 8px; vertical-align: top;&quot;&gt;Chinese (Taiwan)&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style=&quot;border-bottom-color: rgb(231, 231, 231); border-bottom-style: solid; border-bottom-width: 1px; border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; color: #888888; line-height: 18px; padding: 8px; vertical-align: top;&quot;&gt;sk-SK&lt;/td&gt;&lt;td style=&quot;border-bottom-color: rgb(231, 231, 231); border-bottom-style: solid; border-bottom-width: 1px; border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; color: #888888; line-height: 18px; padding: 8px; vertical-align: top;&quot;&gt;Slovak (Slovakia)&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style=&quot;border-bottom-color: rgb(231, 231, 231); border-bottom-style: solid; border-bottom-width: 1px; border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; color: #888888; line-height: 18px; padding: 8px; vertical-align: top;&quot;&gt;zh-CN&lt;/td&gt;&lt;td style=&quot;border-bottom-color: rgb(231, 231, 231); border-bottom-style: solid; border-bottom-width: 1px; border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; color: #888888; line-height: 18px; padding: 8px; vertical-align: top;&quot;&gt;Chinese (China)&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style=&quot;border-bottom-color: rgb(231, 231, 231); border-bottom-style: solid; border-bottom-width: 1px; border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; color: #888888; line-height: 18px; padding: 8px; vertical-align: top;&quot;&gt;ru-RU&lt;/td&gt;&lt;td style=&quot;border-bottom-color: rgb(231, 231, 231); border-bottom-style: solid; border-bottom-width: 1px; border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; color: #888888; line-height: 18px; padding: 8px; vertical-align: top;&quot;&gt;Russian (Russia)&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style=&quot;border-bottom-color: rgb(231, 231, 231); border-bottom-style: solid; border-bottom-width: 1px; border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; color: #888888; line-height: 18px; padding: 8px; vertical-align: top;&quot;&gt;en-GB&lt;/td&gt;&lt;td style=&quot;border-bottom-color: rgb(231, 231, 231); border-bottom-style: solid; border-bottom-width: 1px; border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; color: #888888; line-height: 18px; padding: 8px; vertical-align: top;&quot;&gt;English (United Kingdom)&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style=&quot;border-bottom-color: rgb(231, 231, 231); border-bottom-style: solid; border-bottom-width: 1px; border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; color: #888888; line-height: 18px; padding: 8px; vertical-align: top;&quot;&gt;fr-FR&lt;/td&gt;&lt;td style=&quot;border-bottom-color: rgb(231, 231, 231); border-bottom-style: solid; border-bottom-width: 1px; border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; color: #888888; line-height: 18px; padding: 8px; vertical-align: top;&quot;&gt;French (France)&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style=&quot;border-bottom-color: rgb(231, 231, 231); border-bottom-style: solid; border-bottom-width: 1px; border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; color: #888888; line-height: 18px; padding: 8px; vertical-align: top;&quot;&gt;hi-IN&lt;/td&gt;&lt;td style=&quot;border-bottom-color: rgb(231, 231, 231); border-bottom-style: solid; border-bottom-width: 1px; border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; color: #888888; line-height: 18px; padding: 8px; vertical-align: top;&quot;&gt;Hindi (India)&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;&lt;div&gt;
var&amp;nbsp;msg = new SpeechSynthesisUtterance(&quot;てきすと&quot;);&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
msg.lang = &quot;ja-JP&quot;;&lt;/div&gt;
&lt;div&gt;
speechSynthesis.speak(msg);&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
のように地域コードつきでlangを指定する。言語コードだけ指定して、msg.lang = &quot;ja&quot;; とやるのではダメみたい。&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://hello-hello-world.blogspot.com/feeds/5166802932800313995/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1614548079112644537/5166802932800313995?isPopup=true' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1614548079112644537/posts/default/5166802932800313995'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1614548079112644537/posts/default/5166802932800313995'/><link rel='alternate' type='text/html' href='http://hello-hello-world.blogspot.com/2016/05/iossafariuiwebviewspeechsynthesisgetvoi.html' title='iOSのSafariとUIWebViewでspeechSynthesis.getVoices()が空っぽ'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1614548079112644537.post-2162926440577880782</id><published>2016-05-04T13:07:00.000+09:00</published><updated>2016-05-04T13:07:08.045+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="HTML"/><category scheme="http://www.blogger.com/atom/ns#" term="JavaScript"/><title type='text'>HTML5のバリデーションチェックを使うのやめた</title><content type='html'>&lt;a href=&quot;http://translate.fuwhatsoft.com/&quot; target=&quot;_blank&quot;&gt;翻訳コンニャク&lt;/a&gt;で、HTML5のバリデーション（checkValidityなど）を利用してみたのだが、ブラウザごとの挙動にばらつきがありすぎて使いにくい。これから書き直して、サーバーサイドのチェックだけにする予定。&lt;br /&gt;
&lt;br /&gt;
特に、Safariの挙動が制御しにくい。checkValidityは動くし、validationMessageも設定されているのだが、それにもかかわらずポップアップでエラー表示が行われない。Safariのためにゴチャゴチャ処理を書くとわけわからないことになりそう。&lt;br /&gt;
&lt;br /&gt;
Safariは、executeCommandも動かないし、最近のIEよりも扱いにくい。&lt;br /&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://hello-hello-world.blogspot.com/feeds/2162926440577880782/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1614548079112644537/2162926440577880782?isPopup=true' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1614548079112644537/posts/default/2162926440577880782'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1614548079112644537/posts/default/2162926440577880782'/><link rel='alternate' type='text/html' href='http://hello-hello-world.blogspot.com/2016/05/html5.html' title='HTML5のバリデーションチェックを使うのやめた'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1614548079112644537.post-1547616750780312482</id><published>2016-03-09T22:48:00.004+09:00</published><updated>2016-03-09T22:48:56.576+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Git"/><title type='text'>Gitでハードリンクしたファイルを管理するのはやめたほうがいい</title><content type='html'>たぶん、checkoutしたときなどにファイルの上書きが起こって、そこでリンクが切れてしまうということなのだろう。いつの間にかリンクが切れてた。&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
シンボリックリンクだとメタ情報がコミットされるだけだし、ハードリンクだといつの間にかリンクが切れる。やっぱり、リンクとgitを組み合わせて使うのは良くなさそう。&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
サブモジュールとかいう機能を使うのと面倒くさくなりそうだし、どうしようかなー。&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://hello-hello-world.blogspot.com/feeds/1547616750780312482/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1614548079112644537/1547616750780312482?isPopup=true' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1614548079112644537/posts/default/1547616750780312482'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1614548079112644537/posts/default/1547616750780312482'/><link rel='alternate' type='text/html' href='http://hello-hello-world.blogspot.com/2016/03/git.html' title='Gitでハードリンクしたファイルを管理するのはやめたほうがいい'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1614548079112644537.post-3618432794687530630</id><published>2016-02-25T16:13:00.000+09:00</published><updated>2016-03-01T16:11:26.608+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Django"/><category scheme="http://www.blogger.com/atom/ns#" term="PostgreSQL"/><category scheme="http://www.blogger.com/atom/ns#" term="Python"/><category scheme="http://www.blogger.com/atom/ns#" term="Ubuntu"/><title type='text'>django.db.utils.ProgrammingError: relation &quot;auth_group&quot; does not exist</title><content type='html'>Djangoで、manage.py test をしたら、&lt;br /&gt;
&lt;blockquote&gt;
django.db.utils.ProgrammingError: relation &quot;auth_group&quot; does not exist&lt;/blockquote&gt;
とかいうエラーになって困った。開発環境のmacの上では起こらないんだけど、Ubuntu Server14.04で起こる。データベースはPostgreSQL。&lt;br /&gt;
&lt;br /&gt;
何だろうっていろいろ調べたけど、&lt;a href=&quot;https://code.djangoproject.com/ticket/24524&quot;&gt;ここ&lt;/a&gt;が答えをくれた。 次のように言ってる人がいた。&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
Did you run &lt;tt&gt;python manage.py makemigrations appname&lt;/tt&gt; first, where &quot;appname&quot; is the name of the app containing your custom user model inheriting from &lt;tt&gt;AbstractUser&lt;/tt&gt;? &lt;/blockquote&gt;
AbstractUserを定義しているappnameを指定して、makemigrationsをしたら解決。モデルがちゃんとつくられていなかったみたい。そういえば、DBをflushした後、これを実行するの忘れてたかも。&lt;br /&gt;
&lt;br /&gt;
migrationのテーブルに不完全なデータしかない状態で、テスト用のテーブルを作成しようとしてエラーになっていたということだろうか。</content><link rel='replies' type='application/atom+xml' href='http://hello-hello-world.blogspot.com/feeds/3618432794687530630/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1614548079112644537/3618432794687530630?isPopup=true' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1614548079112644537/posts/default/3618432794687530630'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1614548079112644537/posts/default/3618432794687530630'/><link rel='alternate' type='text/html' href='http://hello-hello-world.blogspot.com/2016/02/djangodbutilsprogrammingerror-relation.html' title='django.db.utils.ProgrammingError: relation &quot;auth_group&quot; does not exist'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1614548079112644537.post-142882088354709876</id><published>2016-02-25T07:32:00.003+09:00</published><updated>2016-02-25T07:32:59.921+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Mac"/><title type='text'>外付けUSBメモリをexFATでフォーマットしたらタイムカプセルできなかった</title><content type='html'>MacBookのディスクに空きがなくなって困ったので外付けのUSBメモリを買った。親指の爪くらいの小ささで、出っ張らないやつを挿しっぱなしにする計画。&lt;br /&gt;
&lt;br /&gt;
で、外付けUSBのフォーマットについてなんだけど、USBメモリはデフォルトではFATで、これだと大きいサイズのファイルを扱えないかった。exFATにフォーマットしたら、Windowsパソコンともデータを共有できていいんじゃないかと思った。いまはVirtualBoxの中にしかWindows入ってないけど、そのうちWindowsのパソコンも買うかもしれないから、そのときに便利なようにという配慮。&lt;br /&gt;
&lt;br /&gt;
しかし、exFATにはタイムカプセルでバックアップをとれないという落とし穴があった。バックアップはとっておきたい。小さなUSBメモリは嬉しいんだけど、なんかそのうち壊れたりするんじゃないだろうかって不安になる。&lt;br /&gt;
&lt;br /&gt;
ということで、データを一時的に退避させて「Mac OS 拡張（ジャーナリング）」ってやつにフォーマットしなおすことにした。「Mac OS 拡張（大文字／小文字を区別、ジャーナリング）」というのもあるけど、大文字／小文字は区別しないのが普通みたい。実際のところ、Max OSXでは、大文字／小文字が異なるだけで同じ名前のファイルを作成できない。というわけで、大文字／小文字を区別しない方の「Mac OS 拡張（ジャーナリング）」にフォーマットするのが無難な選択のようだ。&lt;br /&gt;
&lt;br /&gt;
もう再フォーマットはしたくない。けど、USB3.0はなかなか速い。</content><link rel='replies' type='application/atom+xml' href='http://hello-hello-world.blogspot.com/feeds/142882088354709876/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1614548079112644537/142882088354709876?isPopup=true' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1614548079112644537/posts/default/142882088354709876'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1614548079112644537/posts/default/142882088354709876'/><link rel='alternate' type='text/html' href='http://hello-hello-world.blogspot.com/2016/02/usbexfat.html' title='外付けUSBメモリをexFATでフォーマットしたらタイムカプセルできなかった'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1614548079112644537.post-2877892794700151670</id><published>2016-02-17T14:03:00.001+09:00</published><updated>2016-02-17T14:03:56.587+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Django"/><title type='text'>DjangoでModelFormのカスタマイズ</title><content type='html'>DjangoでModelFormを使っていて、FormFieldを追加するとき。Modelのinstanceとの値のやりとりをどうしようか迷う。どうやら、初期値はModelFormの__init__()でモデルからフォームに渡してやり、フォームからモデルへの値の変更はModelFormの_post_save()でやるのが良さそう。&lt;br /&gt;
&lt;br /&gt;
理解可能なように説明すると面倒くさいからできそうにない。&lt;br /&gt;
&lt;code&gt;&lt;/code&gt;&lt;br /&gt;
&lt;pre&gt;&lt;code&gt;class ArticleForm(forms.ModelForm):
&amp;nbsp;
    def __init__(self, **kwargs):
        super().__init__(**kwargs)
        self.fields[&quot;text&quot;].initial = self.instance.get_nice_text()
&amp;nbsp;   
    def _post_clean(self):
        super()._post_clean()
        self.instance.set_nice_text(self.cleaned_data[&quot;text&quot;])
&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;
&lt;br /&gt;
という感じだといいのではないか。&lt;br /&gt;
&lt;br /&gt;
</content><link rel='replies' type='application/atom+xml' href='http://hello-hello-world.blogspot.com/feeds/2877892794700151670/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1614548079112644537/2877892794700151670?isPopup=true' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1614548079112644537/posts/default/2877892794700151670'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1614548079112644537/posts/default/2877892794700151670'/><link rel='alternate' type='text/html' href='http://hello-hello-world.blogspot.com/2016/02/djangomodelform.html' title='DjangoでModelFormのカスタマイズ'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1614548079112644537.post-8000717903401691995</id><published>2016-02-12T14:02:00.003+09:00</published><updated>2016-02-12T14:02:49.812+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Django"/><category scheme="http://www.blogger.com/atom/ns#" term="Twitter"/><title type='text'>django-allauthを使ってTwitterアカウントでログイン</title><content type='html'>django-allauthを使って、Twitterアカウントでログインする機能を追加しようとしている。いくつか注意点。&lt;br /&gt;
&lt;br /&gt;
django-allauth側の設定としては、settings.pyでの設定と、Webの管理画面でのDBの設定と二つやらないとダメ。管理画面では、social applicationsのとこでサイトIDを忘れずにと追加してあげないといけない。&lt;br /&gt;
&lt;br /&gt;
Twitter側の設定としては、Callback URLを指定していないと、Twitterでログインする機能を利用できないでエラーになる。「&lt;span class=&quot;element-title&quot;&gt;Allow this application to be used to &lt;a href=&quot;https://dev.twitter.com/docs/auth/sign-twitter&quot;&gt;Sign in with Twitter&lt;/a&gt;&lt;/span&gt;」っていうのにチェックを入れていても、それだけじゃダメ。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span class=&quot;element-title&quot;&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
ちなみに、Twitterにウェブアプリを登録しようとしたんだけど、現時点では日本語ドメインに対応していないみたい。punycodeでもダメ。不正はURLとして扱われる。</content><link rel='replies' type='application/atom+xml' href='http://hello-hello-world.blogspot.com/feeds/8000717903401691995/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1614548079112644537/8000717903401691995?isPopup=true' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1614548079112644537/posts/default/8000717903401691995'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1614548079112644537/posts/default/8000717903401691995'/><link rel='alternate' type='text/html' href='http://hello-hello-world.blogspot.com/2016/02/django-allauthtwitter.html' title='django-allauthを使ってTwitterアカウントでログイン'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1614548079112644537.post-4157118677670322158</id><published>2016-02-11T13:28:00.000+09:00</published><updated>2016-02-11T13:30:17.511+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Apache"/><category scheme="http://www.blogger.com/atom/ns#" term="Django"/><category scheme="http://www.blogger.com/atom/ns#" term="Python"/><category scheme="http://www.blogger.com/atom/ns#" term="Ubuntu"/><title type='text'>Ubuntu14.04でDjangoを複数動かす</title><content type='html'>Apache2.4のVirtualHost、python3.4のvenv、mod_wsgiのdaemon mode、これらを使った。手順というよりも注意点を書き留めておく。&lt;br /&gt;
&lt;br /&gt;
Ubuntu14.04では、python3のvenvが失敗するという情報があったけど、大丈夫だった。venv（もしくはpyvenv）は、「apt-get install python3.4-venv」でインストールしないといけない。&lt;br /&gt;
venvが失敗するというのは、ensurepipモジュールが欠けていて、pipがインストールされないとのことだった。その場合に、手動でpipをインストールすれば良いとかいう情報もあった（手動でpipをインストールした場合、apt-getからインストールしたpython3-psycopg2とかpython3-lxmlとかへのパスが通っているのかは謎）。しかし、問題なくvenvを実行できた。&lt;br /&gt;
&lt;br /&gt;
仮想環境をつくるときは、pyvenvではなく、python3 -m venv を呼び出すクセをつけておいた方が良さそう。複数のバージョンのpython3が入っている場合に、どのpython3を使ってvenvを実行するのかで、仮想環境で使うpythonのバージョンを選択できるからだ。pyvenvだとこれができない。&lt;br /&gt;
&lt;br /&gt;
とはいえ、mod_wsgiを動かすpythonのバージョンを細かく指定することは、たぶんできない。だから本番のサーバーではpyvenvを使おうがvenvを使おうが同じことだ。&lt;br /&gt;
&lt;br /&gt;
仮想環境をつくるときは、「python3 -m venv --system-site-packages --symlinks 仮想環境ディレクトリへのパス」という具合にオプションを与えておくと、activateしたときに、mod_wsgiを動かすときに近い環境になるはず。--upgradeを付けとけば、失敗してもやり直せる。（--upgrade なしでもやり直せそう。あと、--symlinks はデフォルト値だから省略していい。）&lt;br /&gt;
&lt;br /&gt;
activateするには、「source 仮想環境ディレクトリへのパス/bin/activate」。 activateした後でsudoすると、環境変数が上書きされてしまうのでやってはいけない。たとえば、activateした後で「sudo pip install django」とやると、デフォルトのpython2のsite-packagesにdjangoがインストールされてしまう。そうならないように「sudo -s」としてから、activateする。で「pip install django」とやれば、仮想環境のsite-packagesにインストールされる。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://hello-hello-world.blogspot.com/feeds/4157118677670322158/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1614548079112644537/4157118677670322158?isPopup=true' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1614548079112644537/posts/default/4157118677670322158'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1614548079112644537/posts/default/4157118677670322158'/><link rel='alternate' type='text/html' href='http://hello-hello-world.blogspot.com/2016/02/ubuntu1404django.html' title='Ubuntu14.04でDjangoを複数動かす'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1614548079112644537.post-4207695671607799877</id><published>2016-02-10T21:12:00.001+09:00</published><updated>2016-02-10T21:12:34.321+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Apache"/><title type='text'>Apache2.4でBasic認証の設定が効かないで困った</title><content type='html'>Apache2.4で、Basic認証を設定しようとしたんだけど、普通にアクセスできてしまって困った。Apach2.2では動作していた設定を、ほとんどそのままコピーしたつもりだったのに、何がいけないんだか悩んだ。&lt;br /&gt;
&lt;br /&gt;
Basic認証のために「Require valid-user」と設定したかったのに、「Require all granted」が前の方に書かれていて、これが効いてしまっていたのが原因だった。</content><link rel='replies' type='application/atom+xml' href='http://hello-hello-world.blogspot.com/feeds/4207695671607799877/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1614548079112644537/4207695671607799877?isPopup=true' title='3 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1614548079112644537/posts/default/4207695671607799877'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1614548079112644537/posts/default/4207695671607799877'/><link rel='alternate' type='text/html' href='http://hello-hello-world.blogspot.com/2016/02/apache24basic.html' title='Apache2.4でBasic認証の設定が効かないで困った'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1614548079112644537.post-1848011173520158103</id><published>2016-02-08T20:37:00.002+09:00</published><updated>2016-02-08T22:14:57.885+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Apache"/><category scheme="http://www.blogger.com/atom/ns#" term="Ubuntu"/><title type='text'>Ubuntu Serverでapache2の設定変更が反映されないで困った</title><content type='html'>Ubuntu Serverでapache2の設定変更が反映されないで困っていた。&lt;br /&gt;
a2ensiteやらa2dissiteやらで設定するのに慣れていないため、どこかにミスがあるのだろうと長時間にわたり試行錯誤。&lt;br /&gt;
&lt;br /&gt;
結局のところ、&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
service apache2 restart &lt;/blockquote&gt;
とコマンドを打つところで、sudo を忘れていただけだった。「 * Restarting web server apache2」というメッセージが出るだけだったから、権限で失敗していることに気づかずに、履歴から同じコマンドを叩きまくっていた。&lt;br /&gt;
&lt;br /&gt;
なお、「apachectl restart」なら、「Permission denied」って失敗のメッセージが出る。ただし、このコマンドだと成功したときには何もメッセージが出ないから不安になる。「echo $?」とやって、戻り値が0なら成功、それ以外なら失敗と判断することもできるが。</content><link rel='replies' type='application/atom+xml' href='http://hello-hello-world.blogspot.com/feeds/1848011173520158103/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1614548079112644537/1848011173520158103?isPopup=true' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1614548079112644537/posts/default/1848011173520158103'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1614548079112644537/posts/default/1848011173520158103'/><link rel='alternate' type='text/html' href='http://hello-hello-world.blogspot.com/2016/02/ubuntu-serverapache2.html' title='Ubuntu Serverでapache2の設定変更が反映されないで困った'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1614548079112644537.post-559092320085625420</id><published>2016-02-07T23:57:00.002+09:00</published><updated>2016-02-07T23:58:31.250+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Ubuntu"/><title type='text'>Ubuntu Server 14.4 で sshd -t するとエラーが出るんだけどこれは何だろう？</title><content type='html'>sshd -t は、/etc/ssh/sshd_config の設定内容などをテストしてくれるコマンドだ。Ubuntu Server 14.4 で実行してみたら、こんなエラーが出るんだけど何でだろう？ &lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
# sshd -t&lt;br /&gt;
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@&lt;br /&gt;
@&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; WARNING: UNPROTECTED PRIVATE KEY FILE!&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; @&lt;br /&gt;
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@&lt;br /&gt;
Permissions 0644 for &#39;/etc/ssh/ssh_host_ed25519_key&#39; are too open.&lt;br /&gt;
It is required that your private key files are NOT accessible by others.&lt;br /&gt;
This private key will be ignored.&lt;br /&gt;
bad permissions: ignore key: /etc/ssh/ssh_host_ed25519_key&lt;br /&gt;
Could not load host key: /etc/ssh/ssh_host_ed25519_key&lt;/blockquote&gt;
ssh_host_ed25519_keyは、秘密鍵のファイル名だけど、パーミッションを調べたら、&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
-rw-r--r--&amp;nbsp; 1 root root&lt;/blockquote&gt;
となっていて誰でも読めてしまう状態になっていた。だから、&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
# chmod 600 ssh_host_ed25519_key&lt;/blockquote&gt;
ってやったらエラーは出なくなった。けど、なんでパーミッションがこんな状態になっていたのかよく分からない。&lt;br /&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://hello-hello-world.blogspot.com/feeds/559092320085625420/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1614548079112644537/559092320085625420?isPopup=true' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1614548079112644537/posts/default/559092320085625420'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1614548079112644537/posts/default/559092320085625420'/><link rel='alternate' type='text/html' href='http://hello-hello-world.blogspot.com/2016/02/ubuntu-144-sshd-t.html' title='Ubuntu Server 14.4 で sshd -t するとエラーが出るんだけどこれは何だろう？'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1614548079112644537.post-7524590841971526779</id><published>2016-02-06T15:49:00.001+09:00</published><updated>2016-02-07T16:50:07.430+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Linux"/><category scheme="http://www.blogger.com/atom/ns#" term="Ubuntu"/><title type='text'>VirtualBoxのUbuntu Serverに固定IPアドレスを設定する</title><content type='html'>VirtualBoxで、IPアドレスを固定する方法。設定 ＞ ネットワーク ＞ アダプター2 に、ホストオンリーアダプターを割り当てることを前提にして、以下のようにやってみた。 &lt;br /&gt;
&lt;br /&gt;
CentOSの場合は、root 権限で、/etc/sysconfig/network-scripts/ifcfg-eth1 というファイルを作成して次のように書き込む。（なお、HWADDR= の後はMACアドレスなので、設定 ＞ ネットワーク ＞ アダプター2 などで割り当てられている値を確認する。）&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;pre&gt;DEVICE=eth1
TYPE=Ethernet
ONBOOT=yes
BOOTPROTO=static
HWADDR=08:00:27:FD:1A:54
IPADDR=192.168.56.9
NETMASK=255.255.255.0
NETWORK=192.168.56.1
&lt;/pre&gt;
&lt;/blockquote&gt;
それから、コマンドラインで&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
$ sudo service network restart &lt;/blockquote&gt;
とする。&lt;br /&gt;
もっと丁寧には、ここらへんが参考になる。&lt;a href=&quot;http://qiita.com/boscoworks/items/56d2ab2a9c5b1b100ce6&quot;&gt;http://qiita.com/boscoworks/items/56d2ab2a9c5b1b100ce6&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ubuntu Serverで、これに相当することをやるとどうなるか。&lt;br /&gt;
&lt;br /&gt;
まず、root権限で&lt;code&gt;、/etc/network/interfaces の末尾に次のように書き込む。&lt;/code&gt;&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;pre&gt;auto eth1
iface eth1 inet static
address 192.168.56.10
netmask 255.255.255.0&lt;/pre&gt;
&lt;/blockquote&gt;
&amp;nbsp;で、コマンドラインで、&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;pre class=&quot;shell&quot;&gt;$&lt;span class=&quot;cmd&quot;&gt;sudo /etc/init.d/netwok restart&lt;/span&gt;&amp;nbsp;&lt;/pre&gt;
&lt;/blockquote&gt;
もしくは、 &lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;pre class=&quot;shell&quot;&gt;$ sudo /etc/init.d/networking restart&lt;/pre&gt;
&lt;/blockquote&gt;
&amp;nbsp;とやる。Ubuntuはこうしないと、そもそもホストオンリーアダプターのときにホストから接続できないっぽい。&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;/blockquote&gt;
ちなみに、手元のスマホからVirtualBox上のサーバーにアクセスしたいときには、ホストオンリーアダプターでは駄目で、ブリッジアダプターを使うことになる。&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;/blockquote&gt;
</content><link rel='replies' type='application/atom+xml' href='http://hello-hello-world.blogspot.com/feeds/7524590841971526779/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1614548079112644537/7524590841971526779?isPopup=true' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1614548079112644537/posts/default/7524590841971526779'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1614548079112644537/posts/default/7524590841971526779'/><link rel='alternate' type='text/html' href='http://hello-hello-world.blogspot.com/2016/02/virtualboxubuntu-serverip.html' title='VirtualBoxのUbuntu Serverに固定IPアドレスを設定する'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1614548079112644537.post-3009992920766889782</id><published>2016-02-06T13:20:00.001+09:00</published><updated>2016-02-06T13:20:22.813+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Mac"/><title type='text'>Macで特定のユーザーをログイン画面から消したい</title><content type='html'>Macで特定のユーザーを、ログイン画面に表示しないようにする方法がある。&lt;a href=&quot;https://support.apple.com/ja-jp/HT203998&quot;&gt;https://support.apple.com/ja-jp/HT203998&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
PostgreSQLをインストールしたときに、PostgreSQL用のユーザーを作った。しかし、それがログイン画面に出てくるのが鬱陶しいので消したい。ユーザーを削除したいわけではなくて、ログイン画面に表示されないようにしたいだけ。 次のコマンドで非表示にできるはず。（「postpres」のところは、非表示にしたいユーザー名）&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;pre&gt;sudo dscl . create /Users/postgres IsHidden 1&lt;/pre&gt;
&lt;/blockquote&gt;
&amp;nbsp; このコマンドを打った後で、ログインウィンドを開いたら、ちゃんとユーザーが消えている。</content><link rel='replies' type='application/atom+xml' href='http://hello-hello-world.blogspot.com/feeds/3009992920766889782/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1614548079112644537/3009992920766889782?isPopup=true' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1614548079112644537/posts/default/3009992920766889782'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1614548079112644537/posts/default/3009992920766889782'/><link rel='alternate' type='text/html' href='http://hello-hello-world.blogspot.com/2016/02/mac.html' title='Macで特定のユーザーをログイン画面から消したい'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1614548079112644537.post-6364851836804361818</id><published>2016-02-05T13:22:00.000+09:00</published><updated>2016-02-05T13:22:07.375+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Apache"/><category scheme="http://www.blogger.com/atom/ns#" term="Django"/><title type='text'>ApacheのVirtualHostの設定で、ServerNameにもServerAliasにもヒットしない場合</title><content type='html'>ApacheのVirtualHostの設定で、ServerNameにもServerAliasにもヒットしない場合は、最初に設定されたVirtualHostが使われる。このことは&lt;a href=&quot;http://httpd.apache.org/docs/current/ja/vhosts/name-based.html#using&quot;&gt;公式ドキュメント&lt;/a&gt;にも書いてある。&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
リクエストが来ると、サーバはまず最初に &lt;code class=&quot;directive&quot;&gt;&lt;a href=&quot;http://httpd.apache.org/docs/current/ja/mod/core.html#namevirtualhost&quot;&gt;&amp;lt;NameVirtualHost&amp;gt;&lt;/a&gt;&lt;/code&gt;
    にマッチする IP アドレスかどうかをチェックします。マッチすれば
    マッチした IP アドレスの &lt;code class=&quot;directive&quot;&gt;&lt;a href=&quot;http://httpd.apache.org/docs/current/ja/mod/core.html#virtualhost&quot;&gt;&amp;lt;VirtualHost&amp;gt;&lt;/a&gt;&lt;/code&gt;
    のそれぞれのセクションの中から 
    &lt;code class=&quot;directive&quot;&gt;&lt;a href=&quot;http://httpd.apache.org/docs/current/ja/mod/core.html#servername&quot;&gt;ServerName&lt;/a&gt;&lt;/code&gt; か
    &lt;code class=&quot;directive&quot;&gt;&lt;a href=&quot;http://httpd.apache.org/docs/current/ja/mod/core.html#serveralias&quot;&gt;ServerAlias&lt;/a&gt;&lt;/code&gt; 
    に要求されたホスト名があるか探します。
    見つかればそのサーバ用の設定を使います。マッチするバーチャルホストが見つからなければ、マッチした IP アドレスの 
    &lt;strong&gt;リストの最初にあるバーチャルホスト&lt;/strong&gt; が使われます。&lt;/blockquote&gt;
&amp;nbsp;思ったように動いてくれないと思ったら、設定ミスってて&lt;br /&gt;
「見つからない場合は、リストの最初にバーチャルホストが使われる」っていうルルールが効いていた。&lt;br /&gt;
&lt;br /&gt;
あと、複数のDjangoをVirtualHostを使って動かす場合は、&lt;a href=&quot;https://docs.djangoproject.com/en/1.9/howto/deployment/wsgi/modwsgi/#using-mod-wsgi-daemon-mode&quot;&gt;mod_wsgiで、daemon mode&lt;/a&gt;ってやつにしないといけない。これの設定がちょっと大変。</content><link rel='replies' type='application/atom+xml' href='http://hello-hello-world.blogspot.com/feeds/6364851836804361818/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1614548079112644537/6364851836804361818?isPopup=true' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1614548079112644537/posts/default/6364851836804361818'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1614548079112644537/posts/default/6364851836804361818'/><link rel='alternate' type='text/html' href='http://hello-hello-world.blogspot.com/2016/02/apachevirtualhostservernameserveralias.html' title='ApacheのVirtualHostの設定で、ServerNameにもServerAliasにもヒットしない場合'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1614548079112644537.post-2071150912299536409</id><published>2016-02-04T12:05:00.003+09:00</published><updated>2016-02-05T13:23:06.949+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Mac"/><title type='text'>MacのApp Store設定で「新しいアップデートをバックグラウンドでダウンロード」はOFFっとく</title><content type='html'>WindowsからMacに切り替えてずいぶん長いこと経つ。もうWindowsの使い方は忘れてしまった。けど、まだMacのことがよく分からないときがある。&lt;br /&gt;
&lt;br /&gt;
今回失敗したのは、App Storeの自動アップデート関連。システム環境設定 &amp;gt; App Store で設定するやつ。「アップデートを自動的に確認」をONにしていたのはいいんだけど、「新しいアップデートをバックグラウンドでダウンロード」もONにしていたのが良くなかった。&lt;br /&gt;
&lt;br /&gt;
モバイルルータでインターネットに接続しているのにも拘らず、4ギガ以上あるXcodeをアップデートしようとバックグラウンドでずっと動いていた。で、ファイルが大きすぎて途中でエラーになる。この繰り返し。モバイルルータの通信容量の制限をオーバーしてしまいそうな勢い。今月は始まったばかりなのに。&lt;br /&gt;
&lt;br /&gt;
というわけで、モバイルルーターを使うのなら、 「新しいアップデートをバックグラウンドでダウンロード」はオフっておいたほうが良い。そうすると、「自動アップデートをONにしますか」ってよく尋ねられるけど、断る。</content><link rel='replies' type='application/atom+xml' href='http://hello-hello-world.blogspot.com/feeds/2071150912299536409/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1614548079112644537/2071150912299536409?isPopup=true' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1614548079112644537/posts/default/2071150912299536409'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1614548079112644537/posts/default/2071150912299536409'/><link rel='alternate' type='text/html' href='http://hello-hello-world.blogspot.com/2016/02/macapp-storeoff.html' title='MacのApp Store設定で「新しいアップデートをバックグラウンドでダウンロード」はOFFっとく'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1614548079112644537.post-2608851489259354075</id><published>2016-02-02T01:29:00.000+09:00</published><updated>2016-02-02T01:29:06.919+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Python"/><title type='text'>mkvirtualenvのとき --always-copy しておきたい</title><content type='html'>Macで、virtualenvwrapperというのを使って、複数バージョンのpythonを管理している。プロジェクトごとにsite-packageを管理できたりして便利なやつだ。&lt;br /&gt;
これで仮想環境をつくるとき、&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
mkvirtualenv --python=python3 --always-copy project_name&lt;/blockquote&gt;
みたいに引数に、--always-copy を入れておくと良さげ。&lt;br /&gt;
&lt;br /&gt;
というのは、MacでHomeBrewを使ってPythonを入れていると、古いバージョンのPythonがなくなって困る可能性があるから。</content><link rel='replies' type='application/atom+xml' href='http://hello-hello-world.blogspot.com/feeds/2608851489259354075/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1614548079112644537/2608851489259354075?isPopup=true' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1614548079112644537/posts/default/2608851489259354075'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1614548079112644537/posts/default/2608851489259354075'/><link rel='alternate' type='text/html' href='http://hello-hello-world.blogspot.com/2016/02/mkvirtualenv-always-copy.html' title='mkvirtualenvのとき --always-copy しておきたい'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1614548079112644537.post-2858524543131627247</id><published>2015-09-04T13:29:00.000+09:00</published><updated>2015-09-04T13:29:24.531+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Django"/><category scheme="http://www.blogger.com/atom/ns#" term="HTML"/><title type='text'>submitボタンが２つある場合にどちらのボタンが押されたのか判定する</title><content type='html'>htmlのformに、submitボタンが２つある場合に、どちらのボタンが押されたのか判定するには、サーバー側でどうやればいいんだっけ？&lt;br /&gt;
&lt;br /&gt;
&amp;lt;form&amp;gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;lt;input type=&quot;submit&quot; name=&quot;btn1&quot;&amp;gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;lt;input type=&quot;submit&quot; name=&quot;btn2&quot;&amp;gt; &lt;br /&gt;
&amp;lt;/form&amp;gt;&lt;br /&gt;
&lt;br /&gt;
みたいに、name属性をつけとけば、サーバー側（Djangoを使ってるとして）で、request.POST.get(&quot;btn1&quot;) の値が空かどうかで判定できる。</content><link rel='replies' type='application/atom+xml' href='http://hello-hello-world.blogspot.com/feeds/2858524543131627247/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1614548079112644537/2858524543131627247?isPopup=true' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1614548079112644537/posts/default/2858524543131627247'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1614548079112644537/posts/default/2858524543131627247'/><link rel='alternate' type='text/html' href='http://hello-hello-world.blogspot.com/2015/09/submit.html' title='submitボタンが２つある場合にどちらのボタンが押されたのか判定する'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1614548079112644537.post-2882143965757926394</id><published>2015-09-04T00:19:00.001+09:00</published><updated>2015-09-04T00:19:11.004+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Bootstrap"/><title type='text'>Bootstrapのテーマとかスニペットとか</title><content type='html'>Bootstrapのテーマ集&lt;br /&gt;&lt;a href=&quot;http://bootswatch.com/&quot;&gt;http://bootswatch.com/&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
テンプレート集 &lt;br /&gt;
&lt;a href=&quot;http://www.bootstrapzero.com/&quot;&gt;http://www.bootstrapzero.com/&lt;/a&gt; &lt;br /&gt;
&lt;br /&gt;
スニペット &lt;br /&gt;
&lt;a href=&quot;http://bootsnipp.com/&quot;&gt;http://bootsnipp.com/&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://snipplicious.com/&quot;&gt;http://snipplicious.com/&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
有料のスニペットとテーマ&lt;br /&gt;
&lt;a href=&quot;http://bootdey.com/&quot;&gt;http://bootdey.com/&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
モックをつくるためベクター画像&lt;br /&gt;
&lt;a href=&quot;http://bootstrapuikit.com/&quot;&gt;http://bootstrapuikit.com/&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://hello-hello-world.blogspot.com/feeds/2882143965757926394/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1614548079112644537/2882143965757926394?isPopup=true' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1614548079112644537/posts/default/2882143965757926394'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1614548079112644537/posts/default/2882143965757926394'/><link rel='alternate' type='text/html' href='http://hello-hello-world.blogspot.com/2015/09/bootstrap.html' title='Bootstrapのテーマとかスニペットとか'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1614548079112644537.post-7556741881977931781</id><published>2015-09-02T14:04:00.002+09:00</published><updated>2015-09-02T20:35:53.937+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Python"/><title type='text'>lxmlのインストール失敗 fatal error: &#39;libxml/xmlversion.h&#39; file not found</title><content type='html'>lxmlをインストールしようとしたら、 &lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
fatal error: &#39;libxml/xmlversion.h&#39; file not found&lt;/blockquote&gt;
とかいうエラーになる。python3.4で、MacのOSX10.10。&lt;br /&gt;
&lt;br /&gt;
英語だけど解決には、このページが参考になりそう。http://stackoverflow.com/questions/19548011/cannot-install-lxml-on-mac-os-x-10-9&lt;br /&gt;
&lt;br /&gt;
まずは、ターミナルで、&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
$ xcode-select --install&amp;nbsp;&lt;/blockquote&gt;
とやってみる。なんかダイアログがでてきて、xcodeをAppStoreからインストールするかどうか聞かれる。xcodeはインストール済みなので、コマンドラインツールだけをインストールするために［インストール］ボタンを押した。&lt;br /&gt;
&lt;br /&gt;
で、再挑戦 $ pip3 install lxml&lt;br /&gt;
&lt;br /&gt;
成功したっぽい &lt;br /&gt;
Successfully installed lxml&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://hello-hello-world.blogspot.com/feeds/7556741881977931781/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1614548079112644537/7556741881977931781?isPopup=true' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1614548079112644537/posts/default/7556741881977931781'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1614548079112644537/posts/default/7556741881977931781'/><link rel='alternate' type='text/html' href='http://hello-hello-world.blogspot.com/2015/09/xml-fatal-error-libxmlxmlversionh-file.html' title='lxmlのインストール失敗 fatal error: &#39;libxml/xmlversion.h&#39; file not found'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1614548079112644537.post-150598650790124564</id><published>2014-10-24T05:38:00.003+09:00</published><updated>2014-10-24T05:38:41.214+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Linux"/><category scheme="http://www.blogger.com/atom/ns#" term="Ubuntu"/><title type='text'></title><content type='html'>SSHでサーバーに接続できなくなって焦った。どうやらパーミッションがおかしくなっていたようだ。&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;&lt;code&gt;$ cd /etc/ssh/
$ sudo chmod 600 ssh_host_dsa_key
$ sudo chmod 600 ssh_host_ecdsa_key
$ sudo chmod 600 ssh_host_rsa_key&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;
これで治った。&lt;br /&gt;
</content><link rel='replies' type='application/atom+xml' href='http://hello-hello-world.blogspot.com/feeds/150598650790124564/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1614548079112644537/150598650790124564?isPopup=true' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1614548079112644537/posts/default/150598650790124564'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1614548079112644537/posts/default/150598650790124564'/><link rel='alternate' type='text/html' href='http://hello-hello-world.blogspot.com/2014/10/blog-post_24.html' title=''/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1614548079112644537.post-1023912224025413041</id><published>2014-10-10T23:31:00.002+09:00</published><updated>2014-10-10T23:32:20.796+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="CSS"/><category scheme="http://www.blogger.com/atom/ns#" term="HTML"/><title type='text'>HTMLで全画面表示（height: 100%）</title><content type='html'>HTMLで高さを画面全体の100%にしたいときは、親要素にも height:100%; を指定しておかないといけない。&lt;br /&gt;
つまり、&lt;br /&gt;
&lt;blockquote&gt;
html, body { height: 100%; }&lt;/blockquote&gt;
という具合にCSSでやっておかないと、いきなりdivとかで height:100% にしても効かない。 </content><link rel='replies' type='application/atom+xml' href='http://hello-hello-world.blogspot.com/feeds/1023912224025413041/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1614548079112644537/1023912224025413041?isPopup=true' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1614548079112644537/posts/default/1023912224025413041'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1614548079112644537/posts/default/1023912224025413041'/><link rel='alternate' type='text/html' href='http://hello-hello-world.blogspot.com/2014/10/htmlheight-100.html' title='HTMLで全画面表示（height: 100%）'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1614548079112644537.post-27480598253778440</id><published>2014-10-06T15:41:00.001+09:00</published><updated>2014-10-06T15:41:39.454+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="iOS"/><category scheme="http://www.blogger.com/atom/ns#" term="Xcode"/><title type='text'>エラー: You are not registered as an Apple Developer</title><content type='html'>&lt;blockquote class=&quot;tr_bq&quot;&gt;
You are not registered as an Apple Developer.&amp;nbsp; Please visit the Member Center to register.&lt;br /&gt;https://developer.apple.com/membercenter&lt;/blockquote&gt;
&lt;br /&gt;とかいわれてアップロードできない。&lt;br /&gt;
&lt;br /&gt;
Xcodeで、Preferences（設定）のAccountsタブに、２つアカウントが登録してあって、そのうちの１つはデベロッパー登録していなかった。そのアカウントを消して、ゴチャゴチャやっていたらちゃんとアップロードできるようになった。&lt;br /&gt;
</content><link rel='replies' type='application/atom+xml' href='http://hello-hello-world.blogspot.com/feeds/27480598253778440/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1614548079112644537/27480598253778440?isPopup=true' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1614548079112644537/posts/default/27480598253778440'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1614548079112644537/posts/default/27480598253778440'/><link rel='alternate' type='text/html' href='http://hello-hello-world.blogspot.com/2014/10/you-are-not-registered-as-apple.html' title='エラー: You are not registered as an Apple Developer'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1614548079112644537.post-3853611549793060826</id><published>2014-10-05T17:05:00.000+09:00</published><updated>2014-10-05T17:06:24.039+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="iOS"/><title type='text'>UIPopoverPresentationController: _UIAlertControllerActionSheetRegularPresentationController   should have a non-nil sourceView or barButtonItem set before the presentation occurs.</title><content type='html'>UIPopoverPresentationController (&amp;lt;_UIAlertControllerActionSheetRegularPresentationController&amp;nbsp; should have a non-nil sourceView or barButtonItem set before the presentation occurs.&lt;br /&gt;
&lt;br /&gt;
というようなエラーが出てiPadが落ちる。なんだろうってことで検索。&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://stackoverflow.com/questions/25644054/uiactivityviewcontroller-crashing-on-ios8-ipads&quot; target=&quot;_blank&quot;&gt;StackOverflowでこんなページ&lt;/a&gt;に行くつく。 &lt;br /&gt;
&lt;pre class=&quot;lang-c prettyprint prettyprinted&quot;&gt;&lt;code&gt;&lt;span class=&quot;pln&quot;&gt;activityViewController&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;popoverPresentationController&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;sourceView &lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; parentView&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;lang-c prettyprint prettyprinted&quot;&gt;&lt;code&gt;&lt;span class=&quot;pun&quot;&gt; &lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
ってやれよということらしい。&lt;br /&gt;
&lt;br /&gt;
やってみたら落ちなくなったけど、ポップオーバーの表示位置が左上で変。真ん中に来て欲しい。 これはやり方がよくわからないんだけど、別にどうでもいいかという気になってきた。</content><link rel='replies' type='application/atom+xml' href='http://hello-hello-world.blogspot.com/feeds/3853611549793060826/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1614548079112644537/3853611549793060826?isPopup=true' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1614548079112644537/posts/default/3853611549793060826'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1614548079112644537/posts/default/3853611549793060826'/><link rel='alternate' type='text/html' href='http://hello-hello-world.blogspot.com/2014/10/uipopoverpresentationcontroller.html' title='UIPopoverPresentationController: _UIAlertControllerActionSheetRegularPresentationController   should have a non-nil sourceView or barButtonItem set before the presentation occurs.'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1614548079112644537.post-206743187007279307</id><published>2014-10-02T16:12:00.001+09:00</published><updated>2014-10-05T17:06:43.017+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="iOS"/><title type='text'>GoogleMobileAdsSdkiOS-6.12.0 でビルドエラー</title><content type='html'>iOS用のAdMob SDKの最新版が、6.12.0 になっていた。で、これをアプリに組み込んでビルドしてみたらエラーになる。&lt;br /&gt;
&lt;br /&gt;
日本語のページだとまだ更新されていないのだが、&lt;a href=&quot;https://developers.google.com/mobile-ads-sdk/docs/admob/ios/quick-start&quot; target=&quot;_blank&quot;&gt;英語ページ&lt;/a&gt;をみると、iOS8で追加された次の２つのFrameworkを組み込まないといけないらし。&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;EventKit&lt;/li&gt;
&lt;li&gt;EventKitUI&lt;/li&gt;
&lt;/ul&gt;
&amp;nbsp;英語ページはURLも変更されていて、日本語ページから言語に「英語」を選択しても表示されないので注意が必要。&lt;br /&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://hello-hello-world.blogspot.com/feeds/206743187007279307/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1614548079112644537/206743187007279307?isPopup=true' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1614548079112644537/posts/default/206743187007279307'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1614548079112644537/posts/default/206743187007279307'/><link rel='alternate' type='text/html' href='http://hello-hello-world.blogspot.com/2014/10/googlemobileadssdkios-6120.html' title='GoogleMobileAdsSdkiOS-6.12.0 でビルドエラー'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>