tag:blogger.com,1999:blog-4528257030117932442024-03-13T19:22:24.558+09:00プログラム雑記帳コンピュータ関連の話題を取り上げます。間違った記述等あったらやさしく教えていただけましたら幸いです。Unknownnoreply@blogger.comBlogger53125tag:blogger.com,1999:blog-452825703011793244.post-37642026394291491162018-12-26T08:02:00.003+09:002018-12-26T08:02:14.931+09:00コード<pre style="-webkit-text-size-adjust: auto; white-space: pre-wrap; word-wrap: break-word;">using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Controls;
using System.Globalization;
using System.Windows.Media.Imaging;
using System.Windows.Media;
using System.Windows.Shapes;
namespace Phistory
{
class IndexCanvas:Canvas
{
private static readonly DateTimeFormatInfo dtfi = new DateTimeFormatInfo();
/// <summary>
/// 現在画面に表示されている目盛りを検索するためのDictionary
/// </summary>
private Dictionary<index label=""> Up2NowIndexLabelDictionary { get; set; }
private Dictionary<index rectangle=""> Up2NowIndexRectangleDictionary { get; set; }
private BitmapImage line = new BitmapImage(new Uri("images/line.bmp", UriKind.Relative));
public IndexCanvas()
{
Up2NowIndexLabelDictionary = new Dictionary<index label="">();
CultureResources.ResourceProvider.DataChanged += OnResourceProviderDataChanged;
}
public void Render(long time, long scale)
{
// 表示開始タイマー刻み数(100ナノ秒単位)
long begin = time;
// 表示終了タイマー刻み数(100ナノ秒単位)
long end = time + (long)(ActualWidth * scale);
//目盛りの更新処理
Dictionary<index label=""> nextIndexLabelDictionary = new Dictionary<index label="">();
Dictionary<index rectangle=""> nextIndexRectangleDictionary = new Dictionary<index rectangle="">();
List<index> indicesToBeAdded = new List<index>();
foreach (Index index in GetIndices(begin, end, scale))
{
if (!Up2NowIndexLabelDictionary.ContainsKey(index))//今回表示すべき目盛りでこれまでも表示されていなかった目盛りに対する処理
{
indicesToBeAdded.Add(index);
}
else//前回から表示されている目盛りに対する処理
{
double x = (index.Time - time) / scale;
SetLeft(Up2NowIndexRectangleDictionary[index], x);
SetLeft(Up2NowIndexLabelDictionary[index], x);
nextIndexRectangleDictionary.Add(index, Up2NowIndexRectangleDictionary[index]);
nextIndexLabelDictionary.Add(index, Up2NowIndexLabelDictionary[index]);
}
}
foreach (Index index in indicesToBeAdded)
{
double x = (index.Time - time) / scale;
Rectangle lineRect = new Rectangle();
lineRect.Width = 1;
lineRect.Height = 24;
SolidColorBrush brush = new SolidColorBrush(Util.GetForegroundColor());
lineRect.Fill = brush;
SetLeft(lineRect, x);
SetBottom(lineRect, 0);
Children.Add(lineRect);
nextIndexRectangleDictionary.Add(index, lineRect);
Label label = new Label();
label.Content = index.Text;
label.FontSize = 20;
label.Foreground = new SolidColorBrush(Util.GetForegroundColor());
SetLeft(label, x);
Children.Add(label);
nextIndexLabelDictionary.Add(index, label);
}
List<index> indicesToBeRemoved = new List<index>();
foreach (Index index in Up2NowIndexLabelDictionary.Keys)
{
if (!nextIndexLabelDictionary.ContainsKey(index))//これまで表示されてきた目盛りで今回表示しない目盛りに対する処理
{
indicesToBeRemoved.Add(index);
}
}
foreach (Index index in indicesToBeRemoved)
{
Children.Remove(Up2NowIndexLabelDictionary[index]);
Children.Remove(Up2NowIndexRectangleDictionary[index]);
}
Up2NowIndexRectangleDictionary = nextIndexRectangleDictionary;
Up2NowIndexLabelDictionary = nextIndexLabelDictionary;
}
private void OnResourceProviderDataChanged(object sender, EventArgs args)
{
foreach (Index index in Up2NowIndexRectangleDictionary.Keys)
{
Rectangle lineRect = Up2NowIndexRectangleDictionary[index];
if (Children.Contains(lineRect))
{
Children.Remove(lineRect);
}
}
foreach (Index index in Up2NowIndexLabelDictionary.Keys)
{
Label label = Up2NowIndexLabelDictionary[index];
if (Children.Contains(label))
{
Children.Remove(label);
}
}
Up2NowIndexRectangleDictionary.Clear();
Up2NowIndexLabelDictionary.Clear();
}
/// <summary>
/// 現在の表示範囲属性で画面に表示する目盛り情報を取得します。
/// </summary>
/// <returns></returns>
private List<index> GetIndices(long begin, long end, long scale)
{
List<index> retIndices = new List<index>();
string format;
long interval = 0;//目盛りの間隔
if (scale < 25920000000)
{
if (scale < 2000000)// 40s/200px
{
format = "HH:mm:ss";
if (scale < 500000)// 10s/200px
{
interval = 50000000; // 5s
}
else if (scale < 2000000)
{ // 40s/200px
interval = 200000000; // 20s
}
}
else if (scale < 360000000)
{ // 2h/200px
format = "HH:mm";
if (scale < 6000000)
{ // 2m/200px
interval = 600000000; // 60s
}
else if (scale < 30000000)
{ // 10m/200px
interval = 3000000000; // 5m
}
else if (scale < 120000000)
{ //
interval = 12000000000;
}
else if (scale < 360000000)
{
interval = 36000000000;
}
}
else if (scale < 2160000000)
{
format = "dd HH:mm";
interval = 216000000000;
}
else
{
format = Util.GetMonthDateString();
if (scale < 8640000000)
{
interval = 864000000000;
}
else
{
interval = 2592000000000;
}
}
for (int i = 0; i < (int)((end - begin) / interval) + 2; i++)
{
DateTime date = new DateTime(begin - begin % interval + i * interval);
Index indexElement = new Index(date.Ticks, date.ToString(format));
retIndices.Add(indexElement);
}
}
else if (scale < 60480000000)//1week/100px
{
format = Util.GetMonthDateString();
interval = 864000000000;
for (int i = 0; i < (int)((end - begin) / interval) + 2; i++)
{
DateTime date = new DateTime(begin - begin % interval + i * interval);
if (date.DayOfWeek == DayOfWeek.Sunday)
{
Index indexElement = new Index(date.Ticks, date.ToString(format));
retIndices.Add(indexElement);
}
}
}
else if (scale < 725760000000)
{
format = Util.GetYearMonthString();
DateTime date = new DateTime(begin);
date = date.AddDays(-date.Day + 1);
date = date.AddHours(-date.Hour);
date = date.AddMinutes(-date.Minute);
date = date.AddSeconds(-date.Second);
date = date.AddMilliseconds(-date.Millisecond);
while (date.Ticks < end)
{
Index indexElement = new Index(date.Ticks, date.ToString(format));
if (scale < 241920000000)
{
retIndices.Add(indexElement);
}
else
{
if ((date.Month - 1) % 3 == 0)
{
retIndices.Add(indexElement);
}
}
date = date.AddMonths(1);
}
}
else
{
format = "yyyy";
DateTime date = new DateTime(begin);
date = date.AddMonths(-date.Month + 1);
date = date.AddDays(-date.Day + 1);
date = date.AddHours(-date.Hour);
date = date.AddMinutes(-date.Minute);
date = date.AddSeconds(-date.Second);
date = date.AddMilliseconds(-date.Millisecond);
while (date.Ticks < end)
{
Index indexElement = new Index(date.Ticks, date.ToString(format));
if (scale < 3153600000000)
{
retIndices.Add(indexElement);
}
else
{
if (date.Year % 5 == 0)
{
retIndices.Add(indexElement);
}
}
date = date.AddYears(1);
}
}
return retIndices;
}
}
}</index></index></index></index></index></index></index></index></index></index></index></index></index></index></pre>
Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-452825703011793244.post-8540736667063898842018-07-17T22:44:00.000+09:002018-07-17T22:46:00.388+09:00ひらがなかけ算九九ひらがなを少しずつ読み始めた娘。<br />
読めることが楽しいようで外を歩いていても看板にひらがながあると読み始める。<br />
<br />
この意欲を有効活用するために掛け算九九をひらがなだけで作成した。<br />
<br />
するとあら不思議、とりあえずひらがなを読みまくっていただけなのにいつの間にかいくつかは音として覚えてしまい、そのうち掛け算の概念も理解できてしまうのです。<br />
<br />
下記URLがGoogleドライブに保存した掛け算九九一覧表です。印刷して壁に貼ってご利用ください。<br />
<br />
<a href="https://docs.google.com/document/d/10rOZgZ2aIMBquW2hxH7Xmh8vGcC89N6-CvOPzlfFF7Y/edit?usp=sharing" target="_blank">https://docs.google.com/document/d/10rOZgZ2aIMBquW2hxH7Xmh8vGcC89N6-CvOPzlfFF7Y/edit?usp=sharing</a><br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><br />
<img border="0" data-original-height="874" data-original-width="626" height="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhsvOHtEGimKSdlfAP7SrkFenB4pJW20r8fEXyVS4PLzY6rn5ak65iKRsZ4gTHap8etlhwPGbYAp8FHUa2XpYHdbMyTnMOfmJgdMXKn23X65lh02Hxt_mjy4FBpgt0-XceuX_galE_syBn-/s640/kuku.png" style="margin-left: auto; margin-right: auto;" width="458" /></td></tr>
<tr><td class="tr-caption" style="text-align: center;"><br /></td></tr>
</tbody></table>
<div class="separator" style="clear: both; text-align: center;">
<span id="goog_1673070449"></span><a href="https://www.blogger.com/"></a><span id="goog_1673070450"></span></div>
<br />Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-452825703011793244.post-19918619866925829752018-04-24T10:14:00.002+09:002018-04-24T10:15:06.662+09:00Google Cloud Storage(GCS)に大量のファイルをアップロードする方法<div class="tr_bq">
機械学習に使うデータセットとか大量のデータをGCSにアップロードする場合はちゃんとした方法でアップロードしないと遅すぎて1月経っても終わらなかったりする。</div>
<br />
GCSのドキュメント( <a href="https://cloud.google.com/storage/docs/object-basics?hl=ja">https://cloud.google.com/storage/docs/object-basics?hl=ja</a> )には<br />
アップロード方法としてコンソール, GSUTIL, コードサンプル, REST APIの4通りの方法が記載されているがこのうちコンソール, GSUTIL, コードサンプル(python)について試して速度を見てみた。<br />
その結果<br />
コードサンプル(python) >> GSUTIL > コンソール<br />
でした。<br />
アップロードするならコードサンプル(python)がおススメです。<br />
<br />
なお、pythonの場合コードサンプルは<br />
<blockquote>
def upload_blob(bucket_name, source_file_name, destination_blob_name):<br />
"""Uploads a file to the bucket."""<br />
storage_client = storage.Client()<br />
bucket = storage_client.get_bucket(bucket_name)<br />
blob = bucket.blob(destination_blob_name)<br />
blob.upload_from_filename(source_file_name)<br />
print('File {} uploaded to {}.'.format(<br />
source_file_name,<br />
destination_blob_name))</blockquote>
<br />
となっているが注意する点は<br />
<br />
<ul>
<li>from google.cloud import storage をすること。</li>
<li>コードサンプル中のbucket_nameには"gs://mybucket"の場合は"mybucket"を設定すること。</li>
<li>コードサンプル中のdestination_blob_nameには"gs://mybucket/floder1/myfile.jpg"の場合は"floder1/myfile.jpg"を設定すること。</li>
</ul>
<br />
<br />Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-452825703011793244.post-92137315814412614242018-04-04T16:02:00.001+09:002018-04-04T21:48:27.783+09:00CentOS 7 64bit にOpenCVをインストールする。<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;">基本 </span><a href="https://qiita.com/estaro/items/c2f8f790dc62a9f5965f" style="text-decoration-line: none;"><span style="color: #1155cc; font-family: "arial"; font-size: 11pt; vertical-align: baseline; white-space: pre-wrap;">https://qiita.com/estaro/items/c2f8f790dc62a9f5965f</span></a><span style="font-family: "arial"; font-size: 11pt; vertical-align: baseline; white-space: pre-wrap;"> </span><span style="font-family: "arial"; font-size: 11pt; white-space: pre-wrap;"> に従ってOpenCVをインストールしたが</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="font-family: "arial"; font-size: 11pt; white-space: pre-wrap;">自分の環境だと</span><span style="font-family: "arial"; font-size: 14.6667px; white-space: pre;">libopencv_core.so.3.4.1の</span><span style="font-family: "arial"; font-size: 11pt; white-space: pre-wrap;">linkの時に</span><span style="font-family: "arial"; font-size: 11pt; white-space: pre-wrap;">DSO missingとか<span style="font-size: 14.6667px; white-space: pre;">undefined reference to symbol</span>とか言われて困った。</span><br />
<br />
結局cmakeコマンドに引数でコンパイラを指定していたのだがそこにg++を指定すべきだったのがgccをしていたのが原因だった。LinuxでC言語系開発した経験がなかったのが遠因。<br />
(もう一つの原因は自分でgccの7.3をソースからビルドして/usr/localの下にinstallしてしまったのが事。これがデフォルトになってしまうと現状では結構文句言われてしまいかなり後悔している。)<br />
<br />
誤:<br />
cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local <span style="color: red;">-D CMAKE_CXX_COMPILER:FILEPATH=/usr/bin/gcc</span> ..<br />
<br />
正:<br />
cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local <span style="color: red;">-D CMAKE_CXX_COMPILER:FILEPATH=/usr/bin/g++</span> ..<br />
<br />
ソース<br />
<a href="https://github.com/opencv/opencv/issues/5435">https://github.com/opencv/opencv/issues/5435</a><br />
<br /></div>
Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-452825703011793244.post-70132148219324945042017-12-07T00:19:00.001+09:002017-12-07T00:28:46.133+09:00"Large Pose 3D Face Reconstruction from a Single Image via Direct Volumetric CNN Regression"の著者のオープンソースを動かすまでに行ったことのメモ"Large Pose 3D Face Reconstruction from a Single Image via Direct Volumetric CNN Regression"の著者 Aaron Jacksonのコードが https://github.com/AaronJackson/vrn で公開されていたので動かしてみた。その時のメモ。<br />
<br />
まずはOSの選定とセットアップについて。<br />
<span style="color: #24292e; font-family: , , "segoe ui" , "helvetica" , "arial" , sans-serif , "apple color emoji" , "segoe ui emoji" , "segoe ui symbol";">著者によるとOSはFedora 24 and CentOS 7で確認しているとのこと。</span><br />
<span style="color: #24292e; font-family: , , "segoe ui" , "helvetica" , "arial" , sans-serif , "apple color emoji" , "segoe ui emoji" , "segoe ui symbol";">VMWareからGPUパススルーで仮想クライアントのLinuxを入れようとしたが難しそうなのでパーティションを切ってデュアルブートでLinuxをインストールすることにする。</span><br />
<span style="color: #24292e; font-family: , , "segoe ui" , "helvetica" , "arial" , sans-serif , "apple color emoji" , "segoe ui emoji" , "segoe ui symbol";">まずFedoraは2017/11/22現在最新の27でもcuda9.0に対応していなかったりして今後不便かもしれないので却下。またcuda8.0はfedora25のみに対応しているなどで一つのバージョンのfedoraで複数のcudaに対応していないようである。なのでCentOS7をインストールすることにした。</span><br />
<span style="color: #24292e; font-family: , , "segoe ui" , "helvetica" , "arial" , sans-serif , "apple color emoji" , "segoe ui emoji" , "segoe ui symbol";"><br /></span>
<span style="color: #24292e; font-family: , , "segoe ui" , "helvetica" , "arial" , sans-serif , "apple color emoji" , "segoe ui emoji" , "segoe ui symbol";">CentOS7はnvidiaのドライバーのインストールに苦労したが結局</span><br />
<span style="color: #24292e; font-family: , , "segoe ui" , "helvetica" , "arial" , sans-serif , "apple color emoji" , "segoe ui emoji" , "segoe ui symbol";">https://gist.github.com/wangruohui/df039f0dc434d6486f5d4d098aa52d07</span><br />
<span style="color: #24292e; font-family: , , "segoe ui" , "helvetica" , "arial" , sans-serif , "apple color emoji" , "segoe ui emoji" , "segoe ui symbol";">上記サイトをくまなく読めばうまくいった。但しnouveauが無効になったかどうかの確認は</span><br />
<span style="color: #24292e; font-family: , , "segoe ui" , "helvetica" , "arial" , sans-serif , "apple color emoji" , "segoe ui emoji" , "segoe ui symbol";">http://www.demandosigno.study/entry/2016/04/30/230000</span><br />
<span style="color: #24292e; font-family: , , "segoe ui" , "helvetica" , "arial" , sans-serif , "apple color emoji" , "segoe ui emoji" , "segoe ui symbol";">にある方法を使った。</span><br />
<span style="color: #24292e; font-family: , , "segoe ui" , "helvetica" , "arial" , sans-serif , "apple color emoji" , "segoe ui emoji" , "segoe ui symbol";">sudo dracut --force</span><br />
<span style="color: #24292e; font-family: , , "segoe ui" , "helvetica" , "arial" , sans-serif , "apple color emoji" , "segoe ui emoji" , "segoe ui symbol";">はタイミングを誤ったのか二回やらないとできなった。</span><br />
<span style="color: #24292e; font-family: , , "segoe ui" , "helvetica" , "arial" , sans-serif , "apple color emoji" , "segoe ui emoji" , "segoe ui symbol";">セキュアブートの無効化は</span><br />
<span style="color: #24292e; font-family: , , "segoe ui" , "helvetica" , "arial" , sans-serif , "apple color emoji" , "segoe ui emoji" , "segoe ui symbol";">https://msdn.microsoft.com/ja-jp/library/windows/hardware/dn898540(v=vs.85).aspx</span><br />
<span style="color: #24292e; font-family: , , "segoe ui" , "helvetica" , "arial" , sans-serif , "apple color emoji" , "segoe ui emoji" , "segoe ui symbol";">を参考にしたが結局自分のBIOSではwindowsのsecurity的な項目でoffにしたらうまくいった。</span><br />
<span style="color: #24292e; font-family: , , "segoe ui" , "helvetica" , "arial" , sans-serif , "apple color emoji" , "segoe ui emoji" , "segoe ui symbol";"><br /></span>
<span style="color: #24292e; font-family: , , "segoe ui" , "helvetica" , "arial" , sans-serif , "apple color emoji" , "segoe ui emoji" , "segoe ui symbol";">macからCentOSへのRDP接続はまずVNCで繋げられるようにする。</span><br />
<span style="color: #24292e; font-family: , , "segoe ui" , "helvetica" , "arial" , sans-serif , "apple color emoji" , "segoe ui emoji" , "segoe ui symbol";">このあたりのページの通りにやればよい。</span><br />
<span style="color: #24292e; font-family: , , "segoe ui" , "helvetica" , "arial" , sans-serif , "apple color emoji" , "segoe ui emoji" , "segoe ui symbol";">https://gtrt7.com/blog/linux/rdp-centos</span><br />
<span style="color: #24292e; font-family: , , "segoe ui" , "helvetica" , "arial" , sans-serif , "apple color emoji" , "segoe ui emoji" , "segoe ui symbol";">https://qiita.com/takao_mofumofu/items/449b8b7bf8e58c7d4d35</span><br />
<span style="color: #24292e; font-family: , , "segoe ui" , "helvetica" , "arial" , sans-serif , "apple color emoji" , "segoe ui emoji" , "segoe ui symbol";">しかし、NVDIAのドライバを使っている場合はデスクトップにGNOME系は使えないとのことなのでKDEを導入。</span><br />
<span style="color: #24292e; font-family: , , "segoe ui" , "helvetica" , "arial" , sans-serif , "apple color emoji" , "segoe ui emoji" , "segoe ui symbol";">https://qiita.com/arc279/items/69518ea6dd1f45ae571f</span><br />
<span style="color: #24292e; font-family: , , "segoe ui" , "helvetica" , "arial" , sans-serif , "apple color emoji" , "segoe ui emoji" , "segoe ui symbol";">https://www.server-world.info/query?os=CentOS_7&p=x&f=2</span><br />
<span style="color: #24292e; font-family: , , "segoe ui" , "helvetica" , "arial" , sans-serif , "apple color emoji" , "segoe ui emoji" , "segoe ui symbol";"><br /></span>
<span style="color: #24292e; font-family: , , "segoe ui" , "helvetica" , "arial" , sans-serif , "apple color emoji" , "segoe ui emoji" , "segoe ui symbol";">~/.vnc/xstartup</span><br />
<span style="color: #24292e; font-family: , , "segoe ui" , "helvetica" , "arial" , sans-serif , "apple color emoji" , "segoe ui emoji" , "segoe ui symbol";">も編集してdesktopにstartkdeというコマンドを追加。</span><br />
<span style="color: #24292e; font-family: , , "segoe ui" , "helvetica" , "arial" , sans-serif , "apple color emoji" , "segoe ui emoji" , "segoe ui symbol";"><br /></span>
<span style="color: #24292e; font-family: , , "segoe ui" , "helvetica" , "arial" , sans-serif , "apple color emoji" , "segoe ui emoji" , "segoe ui symbol";">VNCがつなげたらxrdpも設定する。(VNCだけでもいい気がするが一応。)</span><br />
<span style="color: #24292e; font-family: , , "segoe ui" , "helvetica" , "arial" , sans-serif , "apple color emoji" , "segoe ui emoji" , "segoe ui symbol";">http://cobitech.blogspot.jp/2015/12/centos-71-xrdp.html</span><br />
<span style="color: #24292e; font-family: , , "segoe ui" , "helvetica" , "arial" , sans-serif , "apple color emoji" , "segoe ui emoji" , "segoe ui symbol";">の記事中色深度を32から24に変更するとのことだが自分の環境では変えなくても問題なかったが逆に/etc/xrdp/xrdp.iniにてport番号を5901にしないと5910につなごうとしてエラーになるようであった。59XXの下2桁がディスプレイ番号と対応しているらしいので今回は5901にした。</span><br />
<span style="color: #24292e; font-family: , , "segoe ui" , "helvetica" , "arial" , sans-serif , "apple color emoji" , "segoe ui emoji" , "segoe ui symbol";"><br /></span>
<span style="color: #24292e; font-family: , , "segoe ui" , "helvetica" , "arial" , sans-serif , "apple color emoji" , "segoe ui emoji" , "segoe ui symbol";">日本語入力は右下のタスクトレイから ibusらしきものを見つけて切り替えショートカットキーをctrl+qに設定した。 xstartupに</span><br />
<span style="color: #24292e; font-family: , , "segoe ui" , "helvetica" , "arial" , sans-serif , "apple color emoji" , "segoe ui emoji" , "segoe ui symbol";">export QT_IM_MODULE=ibus</span><br />
<span style="color: #24292e; font-family: , , "segoe ui" , "helvetica" , "arial" , sans-serif , "apple color emoji" , "segoe ui emoji" , "segoe ui symbol";">という環境変数を追加したのも効いた可能性あり。</span><br />
<span style="color: #24292e; font-family: , , "segoe ui" , "helvetica" , "arial" , sans-serif , "apple color emoji" , "segoe ui emoji" , "segoe ui symbol";"><br /></span>
<span style="color: #24292e; font-family: , , "segoe ui" , "helvetica" , "arial" , sans-serif , "apple color emoji" , "segoe ui emoji" , "segoe ui symbol";">smart card managerなるアプリが毎回起動時にポップアップして鬱陶しい件はyum remove escで解決した。</span><br />
<span style="color: #24292e; font-family: , , "segoe ui" , "helvetica" , "arial" , sans-serif , "apple color emoji" , "segoe ui emoji" , "segoe ui symbol";"><br /></span>
<br />
<span style="color: #24292e; font-family: , , "segoe ui" , "helvetica" , "arial" , sans-serif , "apple color emoji" , "segoe ui emoji" , "segoe ui symbol";">Anacondaをインストールしてデフォルトをpy3.6にした。 source activate py27でpython2.7を使用できるよう仮想環境をインストールした。</span><br />
<span style="color: #24292e; font-family: , , "segoe ui" , "helvetica" , "arial" , sans-serif , "apple color emoji" , "segoe ui emoji" , "segoe ui symbol";"><br /></span>
<span style="color: #24292e; font-family: , , "segoe ui" , "helvetica" , "arial" , sans-serif , "apple color emoji" , "segoe ui emoji" , "segoe ui symbol";">以上がOS周りのセットアップ。</span><br />
<span style="color: #24292e; font-family: , , "segoe ui" , "helvetica" , "arial" , sans-serif , "apple color emoji" , "segoe ui emoji" , "segoe ui symbol";"><br /></span>
<span style="color: #24292e; font-family: , , "segoe ui" , "helvetica" , "arial" , sans-serif , "apple color emoji" , "segoe ui emoji" , "segoe ui symbol";">以下は元々のお題である著者のコードを動かすための作業を書く。基本的には </span>https://github.com/AaronJackson/vrn#installation-example に従うがそのとき発生したトラブルと対応を書く。<br />
<br />
著者の上記サイトからgit cloneしてもface-alignmentのフォルダが空になっている。<br />
これはgitのsubmoduleの仕組みを理解していないからだが下記サイトに書いてある方法で対応できる。<br />
http://dqn.sakusakutto.jp/2013/06/git_submodule_empty_directory.html<br />
<div>
<br /></div>
<span style="color: #24292e; font-family: , , "segoe ui" , "helvetica" , "arial" , sans-serif , "apple color emoji" , "segoe ui emoji" , "segoe ui symbol";"><br /></span><span style="color: #24292e; font-family: , , "segoe ui" , "helvetica" , "arial" , sans-serif , "apple color emoji" , "segoe ui emoji" , "segoe ui symbol";">まずtorchをインストール。途中でコンパイルエラーが出たが下記に従って環境変数を追加してからやったら CUDA9.0でもできた。(なお、最初CUDA9.0でセットアップしていたが結局後にcudnnのバージョンが合わないとか言われたのでCUDA8.0+CuDNN5.1に変更した。)</span><br />
<span style="color: #24292e; font-family: , , "segoe ui" , "helvetica" , "arial" , sans-serif , "apple color emoji" , "segoe ui emoji" , "segoe ui symbol";">https://github.com/pytorch/pytorch/issues/2972</span><br />
<span style="color: #24292e; font-family: , , "segoe ui" , "helvetica" , "arial" , sans-serif , "apple color emoji" , "segoe ui emoji" , "segoe ui symbol";"><br /></span>
<span style="color: #24292e; font-family: , , "segoe ui" , "helvetica" , "arial" , sans-serif , "apple color emoji" , "segoe ui emoji" , "segoe ui symbol";">fb.python のインストールでも PYTHON_LIBRARIESなどがないと言われた。これは anaconda envを使っているせいで自動検索できないのではないかと予想している。</span><br />
<span style="color: #24292e; font-family: , , "segoe ui" , "helvetica" , "arial" , sans-serif , "apple color emoji" , "segoe ui emoji" , "segoe ui symbol";">cd fblualib/fblualib/python/build</span><br />
<span style="color: #24292e; font-family: , , "segoe ui" , "helvetica" , "arial" , sans-serif , "apple color emoji" , "segoe ui emoji" , "segoe ui symbol";">してから</span><br />
<span style="color: #24292e; font-family: , , "segoe ui" , "helvetica" , "arial" , sans-serif , "apple color emoji" , "segoe ui emoji" , "segoe ui symbol";">ccmake ..</span><br />
<span style="color: #24292e; font-family: , , "segoe ui" , "helvetica" , "arial" , sans-serif , "apple color emoji" , "segoe ui emoji" , "segoe ui symbol";">でcmakeのUIを起動して、tキーを押してadvanced modeにしてPYTHON関係のパスを手動で入力することで対応できた。なお設定したパスは下記の通り。</span><br />
<span style="color: #24292e; font-family: , , "segoe ui" , "helvetica" , "arial" , sans-serif , "apple color emoji" , "segoe ui emoji" , "segoe ui symbol";">PYTHON_LIBRARIES=/home/edo/anaconda3/envs/py27/lib/libpython2.7.so</span><br />
<span style="color: #24292e; font-family: , , "segoe ui" , "helvetica" , "arial" , sans-serif , "apple color emoji" , "segoe ui emoji" , "segoe ui symbol";">PYTHON_INCLUDE_DIRS=/home/edo/anaconda3/envs/py27/include/python2.7</span><br />
<span style="color: #24292e; font-family: , , "segoe ui" , "helvetica" , "arial" , sans-serif , "apple color emoji" , "segoe ui emoji" , "segoe ui symbol";">このとき肝心の python 自体のパスも anaconda3/envs/py27 のものであることを確認。自分が1回目やったときはこれが/usr/bin/pythonになっていたらしくひどい目にあった。</span><br />
<span style="color: #24292e; font-family: , , "segoe ui" , "helvetica" , "arial" , sans-serif , "apple color emoji" , "segoe ui emoji" , "segoe ui symbol";"><br /></span>
<span style="color: #24292e; font-family: , , "segoe ui" , "helvetica" , "arial" , sans-serif , "apple color emoji" , "segoe ui emoji" , "segoe ui symbol";"> libiomp5.so が無いと言われるのはこのファイルをfindして見つけたフォルダを LD_LIBRARY_PATH に追加。</span><br />
<span style="color: #24292e; font-family: , , "segoe ui" , "helvetica" , "arial" , sans-serif , "apple color emoji" , "segoe ui emoji" , "segoe ui symbol";"><br /></span>
<span style="color: #24292e; font-family: , , "segoe ui" , "helvetica" , "arial" , sans-serif , "apple color emoji" , "segoe ui emoji" , "segoe ui symbol";">matio が無いと言われるのは多分luarocks intall matioで解決。(sudo yum install matioもやったが多分これは関係なかった。)</span><br />
<span style="color: #24292e; font-family: , , "segoe ui" , "helvetica" , "arial" , sans-serif , "apple color emoji" , "segoe ui emoji" , "segoe ui symbol";"><br /></span>
<span style="color: #24292e; font-family: , , "segoe ui" , "helvetica" , "arial" , sans-serif , "apple color emoji" , "segoe ui emoji" , "segoe ui symbol";">npy4th が無いと言われるのはこちらのサイトに従ってインストール</span><br />
<span style="color: #24292e; font-family: , , "segoe ui" , "helvetica" , "arial" , sans-serif , "apple color emoji" , "segoe ui emoji" , "segoe ui symbol";">https://github.com/htwaijry/npy4th</span><br />
<span style="color: #24292e; font-family: , , "segoe ui" , "helvetica" , "arial" , sans-serif , "apple color emoji" , "segoe ui emoji" , "segoe ui symbol";"><br /></span>
<span style="color: #24292e; font-family: , , "segoe ui" , "helvetica" , "arial" , sans-serif , "apple color emoji" , "segoe ui emoji" , "segoe ui symbol";">Lapack library not found in compile timeと言われるのは</span><br />
<span style="color: #24292e; font-family: , , "segoe ui" , "helvetica" , "arial" , sans-serif , "apple color emoji" , "segoe ui emoji" , "segoe ui symbol";">https://github.com/torch/torch7/issues/174</span><br />
<span style="color: #24292e; font-family: , , "segoe ui" , "helvetica" , "arial" , sans-serif , "apple color emoji" , "segoe ui emoji" , "segoe ui symbol";">に従って OpenBLASをインストールしてからもういちどtorch distroをインストールすると解決。上のほうのtorchインストールの項目でも書いたがtorchのビルドでは環境変数</span><br />
<span style="color: #24292e; font-family: , , "segoe ui" , "helvetica" , "arial" , sans-serif , "apple color emoji" , "segoe ui emoji" , "segoe ui symbol";">export TORCH_NVCC_FLAGS="-D__CUDA_NO_HALF_OPERATORS__"</span><br />
<span style="color: #24292e; font-family: , , "segoe ui" , "helvetica" , "arial" , sans-serif , "apple color emoji" , "segoe ui emoji" , "segoe ui symbol";">の設定を忘れずに。</span><br />
<span style="color: #24292e; font-family: , , "segoe ui" , "helvetica" , "arial" , sans-serif , "apple color emoji" , "segoe ui emoji" , "segoe ui symbol";"><br /></span>
<span style="color: #24292e; font-family: , , "segoe ui" , "helvetica" , "arial" , sans-serif , "apple color emoji" , "segoe ui emoji" , "segoe ui symbol";">以上で動くことを確認したがxrdpからだとOpenGLが呼べないらしく落ちるので普通にデスクトップから動かす必要がある。</span><br />
<span style="color: #24292e; font-family: , , "segoe ui" , "helvetica" , "arial" , sans-serif , "apple color emoji" , "segoe ui emoji" , "segoe ui symbol";"></span><br />
<span style="color: #24292e; font-family: , , "segoe ui" , "helvetica" , "arial" , sans-serif , "apple color emoji" , "segoe ui emoji" , "segoe ui symbol";">なお、このプログラムはanacondaで作ったpython2.7環境で実行する。そのため</span><br />
<span style="color: #24292e; font-family: , , "segoe ui" , "helvetica" , "arial" , sans-serif , "apple color emoji" , "segoe ui emoji" , "segoe ui symbol";">source activate py27</span><br />
<span style="color: #24292e; font-family: , , "segoe ui" , "helvetica" , "arial" , sans-serif , "apple color emoji" , "segoe ui emoji" , "segoe ui symbol";">を実行してpython2.7になってから行うこと。py27は自分がanacondaで作ったpython2.7用環境の名前。</span><br />
<div>
<br /></div>
<div>
<br /></div>
Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-452825703011793244.post-48080267163180050612016-04-26T23:24:00.002+09:002016-04-26T23:24:29.626+09:00"iTunes Matchはこのデバイスのミュージックライブラリに置き換わります" というダイアログはOKしてよい。iPhoneでiTunes MatchをONにしようとすると出て来る<br />
"iTunes Matchはこのデバイスのミュージックライブラリに置き換わります"<br />
というメッセージ。なんとなく今まで貯めてきたCloud上の自分のライブラリがiPhoneの少量の曲で上書きされてしまうと解釈してしまいそうだが、そうではない。正しくは"iTunes Match「が」このデバイスのミュージックライブラリに置き換わります"という意味で今使っているiPhoneのライブラリがiTunes Matchのたくさんの曲で上書きされるという意味らしい。<br />
<br />
※このメッセージの意図はiTunes MatchをONにするとiPhoneだけに保存されている曲は消えてしまうのでそのような曲がある場合はあらかじめバックアップをとっておく必要があるという注意喚起のようである。<br />
<br />
<br />Unknownnoreply@blogger.com3tag:blogger.com,1999:blog-452825703011793244.post-48521480922071973442016-01-17T23:52:00.002+09:002016-01-17T23:52:27.515+09:00Amazon EC2を安全に使うために最低限やっておくこと。※2015/12/25現在の情報です。<br />
自分の家のPCにGeForceがないのでAmazon EC2でやってみることに。<br />
Amazon EC2でGPUが使えるインスタンスを起動すると大体1時間に1ドルくらいかかるのでインスタンスの停止し忘れとかは非常に怖い。そういうことがないように最低限やっておくべき設定のメモ。<br />
<br />
<br />
<i><span style="color: #999999;">実際のインスタンスでCUDAが使えるようにする設定方法はすでに様々な記事があって例えば</span></i><br />
<a href="http://sla.hatenablog.com/entry/chainer_on_ec2"><i><span style="color: #999999;">http://sla.hatenablog.com/entry/chainer_on_ec2</span></i></a><br />
<i><span style="color: #999999;">この辺を参考に構築できます。</span></i><br />
<br />
<h2>
Amazon AWSの請求金額の総額が一定金額を超えた時にアラートメールが来るように設定する。</h2>
<br />
https://aws.amazon.com/jp/<br />
上記URLからAmazon AWSのコンソールにサインイン。<br />
サインインすると表示されるコンソール画面の一番上のメニューバーから自分のアカウント名をクリックするとドロップダウンメニューが表示される。その中から、「請求とコスト管理」をクリック。<br />
<br />
請求情報とコスト管理ダッシュボード<br />
にて<br />
アラートおよび通知<br />
というセクションがありこの文章中に「初回請求アラームの設定」というリンクがあるのでクリック。(下図)<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgtSXeLVLF83eeJrxFhsLQg9Q4uUsF-U5BUYIR8tbmLVW2sfY70HIpuvT3ZUsvoa0aNYQYUK9E7UcshmfWSP_4xaC4gy5gBhbCwT-Ouwy8v4Ra6fA-eYvWdh4akSZEDWRRE_v5u6JG2FPmD/s1600/alert.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="344" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgtSXeLVLF83eeJrxFhsLQg9Q4uUsF-U5BUYIR8tbmLVW2sfY70HIpuvT3ZUsvoa0aNYQYUK9E7UcshmfWSP_4xaC4gy5gBhbCwT-Ouwy8v4Ra6fA-eYvWdh4akSZEDWRRE_v5u6JG2FPmD/s640/alert.png" width="640" /></a></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
「アラームの作成」をクリック(下図)</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgX2vUQWojXJ7mj1vQ68gKsba9Ye3CG0p9yjV-Q1rVWKippTLuyXhriEtKdzfyr5tqnxjYkhgHVooiARd37aKNdO6vD5yVreAp6Jsv-1_ys9o-iSjcAmSmB9-5B6CgaTzLfPlqwVYyZ0dxs/s1600/create_alert.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="340" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgX2vUQWojXJ7mj1vQ68gKsba9Ye3CG0p9yjV-Q1rVWKippTLuyXhriEtKdzfyr5tqnxjYkhgHVooiARd37aKNdO6vD5yVreAp6Jsv-1_ys9o-iSjcAmSmB9-5B6CgaTzLfPlqwVYyZ0dxs/s640/create_alert.png" width="640" /></a></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
あとは表示されるダイアログに従って通知の閾値にする金額とe-mailアドレスを設定してアラームを作成する。必ずまずは$1とかの低額に設定してEC2を利用してあえてその閾値を超えさせてみて通知メールが実際に届くことを確認する。そして忘れずに閾値の金額を適切な値に再設定する。</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<br />Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-452825703011793244.post-68216062289297694332015-09-24T23:15:00.001+09:002015-09-24T23:16:36.814+09:00xCode7.0にしたらAVAudioPlayerの初期化処理で"Call can throw, but errors cannot be thrown out of a property initializer"というエラーが出るようになった件エラー伝搬を無効にして良いなら下記のようにtryの後に!をつけることでエラーを回避できる。
<pre class="brush:c">
let myPlayer:AVAudioPlayer = try! AVAudioPlayer(contentsOfURL: url)
</pre>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-452825703011793244.post-32182105924241986062015-09-24T20:53:00.001+09:002015-09-24T23:16:49.706+09:00xCode7.0にしたらNSUserDefaults.registerDefaultsで'NSMutableDictionary' is not convertible to '[String: AnyObject]'と言われるようになった件NSUserDefaults.registerDefaultsで引数にNSMutableDictionaryのインスタンスを<span class="s1">[</span><span class="s2">String</span><span class="s1"> : </span><span class="s2">AnyObject</span><span class="s1">]にキャストして渡していたコードがXCode7.0にアップデートしたらエラーになった件。</span><br />
<span class="s1"><br /></span>
<span class="s1">原因は多分</span>NSMutableDictionaryの<span class="s1">[</span><span class="s2">String</span><span class="s1"> : </span><span class="s2">AnyObject</span><span class="s1">]へのキャストが認められなくなったからと思われるので次のようにNSMutableDictionaryを使用せずに指定することで回避。</span><br />
<pre class="brush:c">
myNSUserDefaultsObj.registerDefaults(
[
"key1" : myObj1,
"key2" : myObj2
]
)
</pre>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-452825703011793244.post-56074945636945176672015-08-29T21:25:00.000+09:002015-08-29T21:25:24.130+09:00iTunes ConnectのマイAppのバンドルID(Bundle ID)を変更する。iTunes Connectで登録したマイAppのバンドルIDはそのアプリがストアで公開される前であれば変更できます。(幾つかのサイトで変更できないといった記述が見受けられたがそれは誤りです。)<br />
下記の通りiTunes ConnectのマイAppから当該Appを開いてメニューから その他>このAppについて を選択するとバンドルIDを変更できるダイアログが開きます。<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhq5twUuWj_MqnNYQOAq3RtEoCubRdbkCkO6OlkDzqxLfzgelB6-NXxxrshaQ-_LAbz5PHv5puOiG-tK-y8Kl5E36cQ-Cl3jGr1fsFZh0tcXbyPaoh2ozHqs0oYtEpKHxpufnCiBidKSOwm/s1600/%25E3%2582%25B9%25E3%2582%25AF%25E3%2583%25AA%25E3%2583%25BC%25E3%2583%25B3%25E3%2582%25B7%25E3%2583%25A7%25E3%2583%2583%25E3%2583%2588+2015-08-29+20.56.18.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="374" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhq5twUuWj_MqnNYQOAq3RtEoCubRdbkCkO6OlkDzqxLfzgelB6-NXxxrshaQ-_LAbz5PHv5puOiG-tK-y8Kl5E36cQ-Cl3jGr1fsFZh0tcXbyPaoh2ozHqs0oYtEpKHxpufnCiBidKSOwm/s640/%25E3%2582%25B9%25E3%2582%25AF%25E3%2583%25AA%25E3%2583%25BC%25E3%2583%25B3%25E3%2582%25B7%25E3%2583%25A7%25E3%2583%2583%25E3%2583%2588+2015-08-29+20.56.18.png" width="640" /></a></div>
<br />Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-452825703011793244.post-37018123987619217282015-08-10T22:00:00.002+09:002015-08-10T22:10:16.409+09:00iPython notebookでpyplotを使って表示する画像のサイズを変更するiPython notebookで画像として可視化しながらデバッグするときに画像のサイズが変更できないで少し困った。以下のfigureという命令でfigsizeを指定することで変更できることが分かったのでメモ。<br />
<pre class='brush: python'>
import matplotlib.pyplot as plt
plt.figure(figsize=(12,12))
</pre>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-452825703011793244.post-38944945306239727572015-08-10T12:01:00.001+09:002015-10-05T23:58:16.138+09:00iPhoneからWindows PCへの画像、動画の取り込みiPhoneの写真、動画をWindowsのPCに取り込む時にエクプローラからやろうとすると「予期しないエラーのため、ファイルをコピーできません。」とか「エラー 0x80030001: 要求された処理を実行できません。」とか言われて困ることがある。<br />
<div>
<br /></div>
<div>
この回避策について色々調べてみても肝心のアップルもほとんどやる気がなくてこんなことを言っている。</div>
<div>
https://support.apple.com/ja-jp/HT204597</div>
<div>
<br /></div>
<div>
結局今の時点で出来る回避策としてはiPhoneをPCに接続したときに表示される自動再生のダイアログから「画像とビデオの読み込み-Windows使用」を選択して読み込むくらいしかないみたい。その際、このプログラムを開くと出てくるダイアログの読み込み設定をクリックしてファイル名は元のファイル名のまま保存しておいた方が何かとよいと思われる。</div>
<div>
<br /></div>
<div>
iCloudやら容量の大きいiPhoneを買わせたいためかiPhoneで撮影した画像やら動画を外部ストレージで管理するのはかなり面倒な仕様になっている。なお残る懸念として以下がある。WindowsからiPhone内の画像の削除ができないので、仮にPCに取り込んだとしてもその後iPhone内の画像を削除するのが面倒。一括で削除するUIがない。頑張って選択して削除するとゴミ箱という名のアルバムに入るので、そこでまた削除をする。なお、ゴミ箱の中を一括で削除することは可能。</div>
<div>
<ul>
<li>今回のようにWindowsの画像とビデオの取り込みをした後に、iPhone内の画像を削除するときに一部のファイルを残したりすると次回以降の取り込みの際に、二度取り込んでしまうか不安。もしかしたら「画像とビデオの取り込み」のアプリ側で一度読んだ写真は読み込まないようフラグを立ててくれているのかもしれないがその情報もWindowsマシンを移行したら確実に消失されるので面倒なことになりそう。(詳細は未確認)</li>
</ul>
<div>
以上を踏まえて自分の運用はiPhoneで撮影した画像は全てGoogle Photoにアップロードした上でさらにWindows PC(正確にはバッファローのNAS)に保存。Google PhotoとWindows PCにコピーが完了したらiPhoneからは全て削除するようにしている。</div>
<div>
<br /></div>
<div>
なお、今回確認した時点でのバージョンは</div>
</div>
<div>
iOS 8.4</div>
<div>
iTunes 12.2.16</div>
<div>
Windows 7</div>
Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-452825703011793244.post-72567813425275645402015-05-06T22:00:00.000+09:002015-05-06T22:06:56.033+09:00swiftからobjective-cの関数を呼び出す時にエラーになる件swiftから複数の引数を持つobjective-cの関数を呼び出そうとすると<br />
Cannot invoke 'func' with an argument list of type<br />
とか<br />
Missing argument labels<br />
みたいなエラーが出て困った件。<br />
<br />
原因は次の二点だったのでメモ。<br />
<br />
<ul>
<li>objective-cの関数の引数の型がintの場合はswiftではInt32の変数を入力しなくてはならない。Intではダメ。</li>
<li>objective-cの関数の引数のラベルもswiftのコードで記述しなくてはダメ。</li>
</ul>
<div>
以上をまとめるとswiftでは次のような呼び方をすることでコンパイルに通るようになった。味噌はInt32に変換していることと、二つ目以降の変数の前にコロンで区切ってラベル名(この例ではmon, mday)を記述していること。</div>
<pre class="brush:c">
MyClass.test(Int32(year), mon:Int32(month), mday:Int32(day));
</pre>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-452825703011793244.post-27600567865244086482015-05-06T00:24:00.003+09:002015-05-07T22:44:58.156+09:00startUpdatingLocationが常にerrorになる件ちょっと面白いアイディアを思いついたのでiOSアプリ開発に挑戦することに。<br />
ちなみに言語はswift、iOSは8を想定。<br />
<br />
で、さっそくGPS情報を取得するところでつまずいた。plistも編集してコーディングしてもstartUpdatingLocationで常に結果がエラーになる。<br />
<br />
原因は下記のサイトにある通りでシミュレータにLocationの設定をする必要があるらしい。<br />
http://shirokai.hatenablog.com/entry/swift-gps<br />
<br />
ただし、自分の環境ではLocationをCustom Locationに設定してもerrorのままだったので一度Locationの選択でAppleを選択したりCustomに戻したりしてみたら正常に動くようになった。Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-452825703011793244.post-10133129895683665642014-09-04T19:14:00.005+09:002014-09-04T19:22:39.511+09:00retina displayでAntTweakBarを表示すると異常に小さく表示されてカーソル位置も正しく認識されない件<span style="font-family: Arial;"><span style="white-space: pre-wrap;">ネット上に似たような問題についての書き込みの記事はちらほらあるが抜本的な対応がいまいちよく分からない。</span></span><br />
<span style="font-family: Arial;"><span style="white-space: pre-wrap;"><a href="https://github.com/memononen/nanovg/issues/12">https://github.com/memononen/nanovg/issues/12</a></span></span><br />
<span style="font-family: Arial;"><span style="white-space: pre-wrap;"><a href="https://groups.google.com/forum/#!topic/pupil-discuss/2Ga6aQWVoWQ">https://groups.google.com/forum/#!topic/pupil-discuss/2Ga6aQWVoWQ</a></span></span><br />
<span style="font-family: Arial;"><br /></span>
<span style="font-family: Arial; font-size: 15px; white-space: pre-wrap;">AntTweakBarの操作においてretinaディスプレイの画素シミュレーションがうまくいっていないことが原因。</span><br />
<span style="font-family: Arial; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;">マウスイベントから取るWindow上の位置は</span><span style="font-family: Arial; font-size: 15.555556297302246px; white-space: pre-wrap;">低解像度の値に</span><span style="font-family: Arial; font-size: 15px; white-space: pre-wrap;">シミュレートされた値だがglViewPortやAntTweakBarではretinaのフル解像度の値で描画している。なのでイベント発生時のコールバック関数内でresizeイベントやmouseイベントから取ってきた低解像度の値にシミュレートされた位置情報をretinaのフル解像度での値に直す(2倍する)した上でOpenGLやAntTweakBarの関数を呼ぶようにすることで対応。</span><br />
<span style="font-family: Arial;"><span style="white-space: pre-wrap;"><br /></span></span>
<span style="font-family: Arial;"><span style="white-space: pre-wrap;">対応の例</span></span><br />
<div class="p1">
<span style="font-family: Courier New, Courier, monospace;"><span class="s1">static</span> <span class="s1">void</span> resizeCallback(<span class="s2">GLFWwindow</span>* window, <span class="s1">int</span> width, <span class="s1">int</span> height)</span></div>
<div class="p1">
<span style="font-family: Courier New, Courier, monospace;">{</span></div>
<div class="p1">
<span style="font-family: Courier New, Courier, monospace;"> <span class="s3">TwWindowSize</span>(width<span style="color: red;">*<span class="s4">2</span></span>, height<span style="color: red;">*<span class="s4">2</span></span>);</span></div>
<br />
<div class="p1">
<span style="font-family: Courier New, Courier, monospace;">}</span></div>
<div class="p1">
<br /></div>
<span style="font-family: Arial;"><span style="white-space: pre-wrap;">とりあえず動くが表示が小さいという問題は未解決。本当はretinaのシミュレーション機能に乗っ取った抜本的な対応方法(glViewPorttはwindowサイズではなくてframe bufferのサイズを設定して、AntTweakBarは二倍のサイズで描画する?)があると思う。抜本的な対応が分かる方いらっしゃいましたら是非コメントお願いします。</span></span><br />
<span style="font-family: Arial;"><span style="white-space: pre-wrap;"><br /></span></span>
Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-452825703011793244.post-29180066509573925872014-09-02T23:44:00.000+09:002014-09-04T18:16:04.813+09:00AntTweakBarをMac OSX 10.9でビルドしようとするとエラーが出る件<div>
AntTweakBarをMac OSX 10.9でビルドしようと</div>
<div>
$make -f Makefile.osx</div>
<div>
を実行すると下のようなエラーが出て戸惑う。噂ではOSX 10.8から出るようなったらしい。</div>
<div>
<br /></div>
<div>
<blockquote class="tr_bq">
<span style="font-size: xx-small;"> TwOpenGLCore.o TwOpenGLCore.cpp<br />In file included from TwOpenGLCore.cpp:22:<br /><b>./LoadOGLCore.h:149:24: </b><span class="s1"><b>error: </b></span><b>conflicting types for 'glMultiDrawElements'</b>ANT_GL_CORE_DECL(void, glMultiDrawElements, (GLenum mode, const GLsizei ...<br /><b> ^</b><b>./LoadOGLCore.h:34:36: note: </b>expanded from macro 'ANT_GL_CORE_DECL'<br /> extern "C" { _Ret APIENTRY _Fct _Params; }<br /><b> ^</b><b>/System/Library/Frameworks/OpenGL.framework/Headers/gl.h:2836:13: note: </b> previous declaration is here<br />extern void glMultiDrawElements (GLenum mode, const GLsizei *count, GLen...<br /><b> ^</b>In file included from TwOpenGLCore.cpp:22:<br /><b>./LoadOGLCore.h:214:24: </b><span class="s1"><b>error: </b></span><b>conflicting types for 'glShaderSource'</b>ANT_GL_CORE_DECL(void, glShaderSource, (GLuint shader, GLsizei count, co...<br /><b> ^</b><b>./LoadOGLCore.h:34:36: note: </b>expanded from macro 'ANT_GL_CORE_DECL'<br /> extern "C" { _Ret APIENTRY _Fct _Params; }<br /><b> ^</b><b>/System/Library/Frameworks/OpenGL.framework/Headers/gl.h:2923:13: note: </b> previous declaration is here<br />extern void glShaderSource (GLuint shader, GLsizei count, const GLchar* ...<br /><b> ^</b>2 errors generated.<br />make: *** [TwOpenGLCore.o] Error 1</span></blockquote>
</div>
<div>
これは何かっていうと/System/Library/Frameworks/OpenGL.framework/Headers/gl.hで定義されている関数をAntTweakBarのAntTweakBar/src/TwOpenGLCore.hの中で参照しているんだけど関数の引数が合っていないよ!というエラーであり、どうやらいつかの更新でOSXに同梱されているgl.hの関数宣言に変更(といっても修飾子の軽微な変更)があったのが原因らしい。</div>
<div>
そこで今のgl.h内の関数宣言に合わせてAntTweakBar/src/TwOpenGLCore.hの中身に次の二つの編集を加えれば良い。ファイル内の修正場所は関数名とかで検索して見つけてください。</div>
<div>
<ol>
<li><span style="font-family: Courier New, Courier, monospace;">ANT_GL_CORE_DECL(void, glMultiDrawElements, (GLenum mode, const GLsizei *count, GLenum type, const GLvoid* * indices, GLsizei primcount))</span><br />を<br /><span style="font-family: Courier New, Courier, monospace;">ANT_GL_CORE_DECL(void, glMultiDrawElements, (GLenum mode, const GLsizei *count, GLenum type, const GLvoid* const * indices, GLsizei primcount))</span><br />に修正。(引数indicesの修飾子に後付けのconstを追加。)</li>
<li><span style="font-family: Courier New, Courier, monospace;">ANT_GL_CORE_DECL(void, glShaderSource, (GLuint shader, GLsizei count, const GLchar* *string, const GLint *length))</span><br />を<br /><span style="font-family: Courier New, Courier, monospace;">ANT_GL_CORE_DECL(void, glShaderSource, (GLuint shader, GLsizei count, const GLchar* const *string, const GLint *length))</span><br />に修正。(引数stringの修飾子に後付けのconstを追加。)</li>
</ol>
<div>
上記修正をしてからもう一回</div>
<div>
$make -f Makefile.osx</div>
<div>
でビルドすれば通るようになるはず。</div>
</div>
<div>
<br /></div>
Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-452825703011793244.post-23651806004347208962013-12-15T13:56:00.002+09:002018-07-23T22:41:13.783+09:00REGZAのブルーレイドライブに閉じ込められたディスクの救出方法<br />
<br />
昨日無性にジャッキーチェンの映画が見たくなったのでブルーレイを借りて見ようとしたら、ディスクを読み込まずその後「ブルーレイディスクプレイヤーを起動しています」のままフリーズした。地デジモードにしてからブルーレイモードに戻しても、電源入れ直しても、イジェクトボタン押しながら電源投入しても、ディスクドライブの穴にピンを突っ込んでも(そもそもBDドライブのこの穴はそのような目的のものではないらしい)反応ない。ディスクももちろん取り出せない。TSUTAYAで借りたものなのに。ネットで調べた限りではスロットイン式のドライブのためか強制取り出しの仕組みもなさそうだ。保証期間は4ヶ月前に切れていて修理しても万単位の費用がかかるみたいなので分解してディスクの救出を試みることにした。<br />
<br />
結論から言うと家庭用ドライバーセットがあれば1時間くらい格闘すればディスクの救出は可能です。そのときのメモを書きますが、あくまでこれを見て分解してみる人は各自の自己責任でお願いします。ちなみに僕のレグザの機種は40RB2です。<br />
<br />
<h4>
電源ケーブルをコンセントから抜く</h4>
<div>
当然ですが作業を始める前に電源ケーブルはコンセントから抜いてください。外装外すと中には高電圧の箇所もあるだろうし、分解作業でミスると二度ともとに戻せなくなる可能性もあるのでくどいようですがこの先は自己責任でお願いします。</div>
<h4>
外装を取り外す</h4>
<div class="separator" style="clear: both; text-align: left;">
本来裏のネジ(木ネジ17カ所、背面中部のネジ4カ所、出力端子付近のネジ2カ所)を取り外して外装を取り外します。背面中部のネジ4カ所のうち1カ所は電源ケーブル付近のネジです。ネジを全部外すした後に背面の外装を持ち上げると手で簡単に外せます。</div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgoCM3E74ReLYbPr12FCjijgp25KQtKsWebBX83Zf2QyjkpE7LhSK29ndUyEOE-BxBA0bRTGtYx8qkJ1JQElFEWb3hlZbii17GtDbtn96vWl58KZRJR2QbHk74ePmY9hloty-cu3GrIY9XR/s1600/IMG_0019.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="480" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgoCM3E74ReLYbPr12FCjijgp25KQtKsWebBX83Zf2QyjkpE7LhSK29ndUyEOE-BxBA0bRTGtYx8qkJ1JQElFEWb3hlZbii17GtDbtn96vWl58KZRJR2QbHk74ePmY9hloty-cu3GrIY9XR/s640/IMG_0019.jpg" width="640" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi6SMriWlTOrtTYD_W0o16aIkE0Lwn9KjqjscMne7DYfVap-LN1VZ3vAcV5Pe8N_WKH6oZBWZeksCOFy8MJz-TnLewDXAMDE8g3XJWMAqxeXN7thf_6MN-RBz5kxUMphL3eamItUnnkpP_y/s1600/IMG_0018.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="480" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi6SMriWlTOrtTYD_W0o16aIkE0Lwn9KjqjscMne7DYfVap-LN1VZ3vAcV5Pe8N_WKH6oZBWZeksCOFy8MJz-TnLewDXAMDE8g3XJWMAqxeXN7thf_6MN-RBz5kxUMphL3eamItUnnkpP_y/s640/IMG_0018.jpg" width="640" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhjLjHno3aSfyvr2Wu1MYk-T3BXEygOozBS2kyzcaowDugXyc3ZrkaeQbHbGKw78fYbC8_co7fq7ks7Uy9AbNqqEuPh37hxdvkmwsZMTPXaJbp61ziHsT46us1fvH7SzYL0R_QlQmuxlGQC/s1600/IMG_0017.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhjLjHno3aSfyvr2Wu1MYk-T3BXEygOozBS2kyzcaowDugXyc3ZrkaeQbHbGKw78fYbC8_co7fq7ks7Uy9AbNqqEuPh37hxdvkmwsZMTPXaJbp61ziHsT46us1fvH7SzYL0R_QlQmuxlGQC/s640/IMG_0017.jpg" width="480" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjIfiQCCNZDmjHdgpywbQk10gGRyBAUgn4weg1lLiXw8G7SXL-RtbDpzZJyooaHJFOVNsYzWep0E1DRi6c-M8kSdrbYOtw8Kv5QYrBbzz7G972iPNVkQH3YZd2-iByiFRfHmnugP9DYZXY9/s1600/IMG_0016.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjIfiQCCNZDmjHdgpywbQk10gGRyBAUgn4weg1lLiXw8G7SXL-RtbDpzZJyooaHJFOVNsYzWep0E1DRi6c-M8kSdrbYOtw8Kv5QYrBbzz7G972iPNVkQH3YZd2-iByiFRfHmnugP9DYZXY9/s640/IMG_0016.jpg" width="480" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhZPxXF4s9gD61gbEa1NiAOstcJgOPq56cw987sRLABYrUfR_jczRf1QP6nFtL0_Rw8GSS7u-Mb8lu8_ozC4cytnebb7bY759vw316kwuAgT2dvKUigidxKPft_0e6BcVrLelFd0_xbsd3L/s1600/IMG_0015.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhZPxXF4s9gD61gbEa1NiAOstcJgOPq56cw987sRLABYrUfR_jczRf1QP6nFtL0_Rw8GSS7u-Mb8lu8_ozC4cytnebb7bY759vw316kwuAgT2dvKUigidxKPft_0e6BcVrLelFd0_xbsd3L/s640/IMG_0015.jpg" width="480" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<h4>
BDスロットの外枠を取り外す</h4>
<div>
銀色のネジを2カ所外してスロットの外枠を外します。多少、溝みたいなのにはまってるようなので折らないよう気をつけて取り外してください。うまく傾けるようい引き抜くと外せます。</div>
<div>
<br /></div>
<div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhWAz47RJrK5yv6v8bpFYdvzT02UeA0by1tchhtGkxPaty5Moi3vEGwb4bAZYf7-bkr962RasVHg9saKFrz_Zrvkfh2MZ8WfeS6Xo9d0F-4uhwkEomBm39QcVLOJasl-6nyeQzdvxC23scN/s1600/IMG_0014.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em; text-align: center;"><img border="0" height="480" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhWAz47RJrK5yv6v8bpFYdvzT02UeA0by1tchhtGkxPaty5Moi3vEGwb4bAZYf7-bkr962RasVHg9saKFrz_Zrvkfh2MZ8WfeS6Xo9d0F-4uhwkEomBm39QcVLOJasl-6nyeQzdvxC23scN/s640/IMG_0014.jpg" width="640" /></a></div>
</div>
<div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEide_8knDgveltx229qClZlNr45ImwtQMhLwhemgHTrcu9_OPdU8Dgvw5U9GRh2amCysEsOZK-af6RgWuIy7DIZNrM7uWNP_A14mVByC3GYD0wpmG_1fNWh9diXl0B6N9sscdyiD5tfcLYr/s1600/IMG_0013.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em; text-align: center;"><img border="0" height="480" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEide_8knDgveltx229qClZlNr45ImwtQMhLwhemgHTrcu9_OPdU8Dgvw5U9GRh2amCysEsOZK-af6RgWuIy7DIZNrM7uWNP_A14mVByC3GYD0wpmG_1fNWh9diXl0B6N9sscdyiD5tfcLYr/s640/IMG_0013.jpg" width="640" /></a></div>
</div>
<div>
<br /></div>
<h4>
ドライブに接続されているコネクタを三本抜く</h4>
<div>
3本のコネクタを抜きます。下の写真で左二個は普通に引き抜けます。一番右のは白いツメみたいのと一緒につまんで引き抜けば抜けます。最初ちょっと固く感じるので注意して抜いてください。コネクタを外したらドライブを完全に筐体から取り外します。</div>
<div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhgCx3ufx7VfdYr52gpC513Eo43Qim7bxbbZC3V2J8Pd9C2eMy16AyRYq4zD6AL4u3JnjbuDV86WFd1iHv7n0wjrFZbuuaxPzjbQkGcUxnjzgwNXfz8e41p_RAkKhZn5__9zjF8l5byGPg1/s1600/IMG_0012.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em; text-align: center;"><img border="0" height="480" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhgCx3ufx7VfdYr52gpC513Eo43Qim7bxbbZC3V2J8Pd9C2eMy16AyRYq4zD6AL4u3JnjbuDV86WFd1iHv7n0wjrFZbuuaxPzjbQkGcUxnjzgwNXfz8e41p_RAkKhZn5__9zjF8l5byGPg1/s640/IMG_0012.jpg" width="640" /></a></div>
<br />
<br />
<h4>
ドライブを筐体に固定しているネジを外し、ドライブを筐体から取り外す</h4>
</div>
<div>
ドライブの側面4カ所のネジを外してドライブを筐体から取り外します。</div>
<div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhbd4S5Bm1BgWI4l1qsqxpsClzWIfnYmExArJuCL95AWnDz_880DTGbRqKLo1-scjT5-xxTmjD7M-NZ3_ha1057uc2syUnjkkV_NwFVrfSVe6P6AeiuiifZaB4JCYNUO-ttiv7NWOkyK9oz/s1600/IMG_0009.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em; text-align: center;"><img border="0" height="480" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhbd4S5Bm1BgWI4l1qsqxpsClzWIfnYmExArJuCL95AWnDz_880DTGbRqKLo1-scjT5-xxTmjD7M-NZ3_ha1057uc2syUnjkkV_NwFVrfSVe6P6AeiuiifZaB4JCYNUO-ttiv7NWOkyK9oz/s640/IMG_0009.jpg" width="640" /></a></div>
</div>
<div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh1IAx5fBQnlC4WHSm4iDRZsJNxa8R0-WL5QBDTCodEUG9a64kI0bLtV2mGXXdjQRCVYJRZi4gT9Iv0Hryc3gRWrRSOZnEnFlawYhTu9k73obxv79iwUtOXxxcS-nXVsjeTuyuFPCD01Naf/s1600/IMG_0010.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em; text-align: center;"><img border="0" height="480" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh1IAx5fBQnlC4WHSm4iDRZsJNxa8R0-WL5QBDTCodEUG9a64kI0bLtV2mGXXdjQRCVYJRZi4gT9Iv0Hryc3gRWrRSOZnEnFlawYhTu9k73obxv79iwUtOXxxcS-nXVsjeTuyuFPCD01Naf/s640/IMG_0010.jpg" width="640" /></a></div>
</div>
<div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj-NZuY5vGmembMaC5tXVoWPoIPayvi7QP9QbRZgCnAtuqHnPGEgMmIqW85MR91hSkkrfBHlD6mOgl7jezyU0ZruX4wWDN0sP8Ww2iaEg97t4YOzoxiB09PBIO2Gui4_RhNBVbrFo3bkRHF/s1600/IMG_0008.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em; text-align: center;"><img border="0" height="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj-NZuY5vGmembMaC5tXVoWPoIPayvi7QP9QbRZgCnAtuqHnPGEgMmIqW85MR91hSkkrfBHlD6mOgl7jezyU0ZruX4wWDN0sP8Ww2iaEg97t4YOzoxiB09PBIO2Gui4_RhNBVbrFo3bkRHF/s640/IMG_0008.jpg" width="480" /></a></div>
</div>
<div>
<br /></div>
<h4>
ドライブ前面パネルを外す</h4>
<div>
ドライブ前面パネルは6カ所くらいのツメパッチンで固定されています。マイナスドライバでこのツメをつついて外してから手でパネルをを取り外します。</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgoq7F8krwU4vaArLGUCquRIO3MaFxNedyYO_vrAmopGrJfNtrg7t3UwlyrK52SJlVD5r1k2rjSFEDJf9AcV_4caOs_A0IykhVMZeo-3N3ZUv8qRq3om4RFRCZ2JYePMLRGNHY_Zq4eVTik/s1600/IMG_0023.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em; text-align: center;"><img border="0" height="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgoq7F8krwU4vaArLGUCquRIO3MaFxNedyYO_vrAmopGrJfNtrg7t3UwlyrK52SJlVD5r1k2rjSFEDJf9AcV_4caOs_A0IykhVMZeo-3N3ZUv8qRq3om4RFRCZ2JYePMLRGNHY_Zq4eVTik/s640/IMG_0023.jpg" width="480" /></a></div>
<div>
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjZusCKrhEKe_6wVgusOrxyvgG1FxL52qFatz_ggD98dsUgGP63-2vQ0Q6l2xhQiZ-xWngvdEN6anXQQKcA0JoxjofiNSlLboZXI61PaCKmdT5gx7Rj6Zjd1JBHBgNDM3FEGsRDe8VrYpwN/s1600/IMG_0022.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em; text-align: center;"><img border="0" height="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjZusCKrhEKe_6wVgusOrxyvgG1FxL52qFatz_ggD98dsUgGP63-2vQ0Q6l2xhQiZ-xWngvdEN6anXQQKcA0JoxjofiNSlLboZXI61PaCKmdT5gx7Rj6Zjd1JBHBgNDM3FEGsRDe8VrYpwN/s640/IMG_0022.jpg" width="480" /></a></div>
<div>
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhm1ZHFYmI9OxnbPiH5sv4wFuqcroTIZeMgmyTNafAMXL04Ioc-tr9b84kIxGlc1OnXb4ywdfONq7py8KCWbSRotbBgnsgMVFNNIpEC2uy4unYGL-lTxQqJxhuLU6gdPqIKWIDT040qm7Bc/s1600/IMG_0021.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em; text-align: center;"><img border="0" height="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhm1ZHFYmI9OxnbPiH5sv4wFuqcroTIZeMgmyTNafAMXL04Ioc-tr9b84kIxGlc1OnXb4ywdfONq7py8KCWbSRotbBgnsgMVFNNIpEC2uy4unYGL-lTxQqJxhuLU6gdPqIKWIDT040qm7Bc/s640/IMG_0021.jpg" width="480" /></a></div>
<div>
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi_VgBLMwbHKMZYg2ZZxZUGbiiMEkJmWzssaZc4KSonqcyNZoffliKq15SIsBk__kA7pklq8sYsOKFsXBJkRdYk4YsyRCC19DClJwo9Pczpy5kfb9PnbB2YeWcy5S3o1ph7mOJBzypR-1YK/s1600/IMG_0020.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="480" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi_VgBLMwbHKMZYg2ZZxZUGbiiMEkJmWzssaZc4KSonqcyNZoffliKq15SIsBk__kA7pklq8sYsOKFsXBJkRdYk4YsyRCC19DClJwo9Pczpy5kfb9PnbB2YeWcy5S3o1ph7mOJBzypR-1YK/s640/IMG_0020.jpg" width="640" /></a></div>
<h4>
さらにドライブの外装を外す</h4>
<div>
とり外したドライブでさらに4カ所のネジを外してドライブの外装を外します。ここまでくるとあと少しです。ネジを外すと外装は上下にぱかっとはずれBDドライブが露わになります。</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgYUTmx-guwYPsrIRnb0q-FIClu7v7aPKkVzrIF65ZuHYUUHNqh0EP8dvqU6_PepKCMDYDRBGtzKuchIB-HuY13zWN3AP3kgPfJRExrgyun-uwiz0urmS-Dujo-3jWpszydUUTilBj9AFHw/s1600/IMG_0007.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgYUTmx-guwYPsrIRnb0q-FIClu7v7aPKkVzrIF65ZuHYUUHNqh0EP8dvqU6_PepKCMDYDRBGtzKuchIB-HuY13zWN3AP3kgPfJRExrgyun-uwiz0urmS-Dujo-3jWpszydUUTilBj9AFHw/s640/IMG_0007.jpg" width="480" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjxeWkthlz1_BbqRma0Ps9EQH8PZS2HavOaifNuv38ZlNIBciwDvf41y32WlgV-jXFZ8wBbPamM6ftkpxLGwqb1Kh87-4riG2IDBgnt_V278vKRboXfnyDKJojEgJ5BYH0Gk-axBFRbErik/s1600/IMG_0006.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjxeWkthlz1_BbqRma0Ps9EQH8PZS2HavOaifNuv38ZlNIBciwDvf41y32WlgV-jXFZ8wBbPamM6ftkpxLGwqb1Kh87-4riG2IDBgnt_V278vKRboXfnyDKJojEgJ5BYH0Gk-axBFRbErik/s640/IMG_0006.jpg" width="480" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<h4>
BDドライブ本体を分解する</h4>
<div class="separator" style="clear: both; text-align: left;">
露わになったBDドライブ本体の4カ所のネジを外します。するとBDドライブは完全には分解は出来ない(写真中の基盤で隠れている面にシールみたいなので接着されているためです。このシールははがすと後々面倒そうなのでやめておきます。)のですが手でカバーを持ち上げてやることで少し隙間が開くようになります。この隙間からディスクを指でつまんで救出することが出来ます。</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiG8CboSpRmw0aooqvzwafa-04a3BgsWQuUUjlgqcZk1CH0rC00hof8bR8V_Xi-c3-8AL0aNWMlVZban09X57EfwwdyvU_N7SnXja3tgEDKMWoT1LPuqJKCE3zQibWAns0WK96D3ifhW5-H/s1600/IMG_0005.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiG8CboSpRmw0aooqvzwafa-04a3BgsWQuUUjlgqcZk1CH0rC00hof8bR8V_Xi-c3-8AL0aNWMlVZban09X57EfwwdyvU_N7SnXja3tgEDKMWoT1LPuqJKCE3zQibWAns0WK96D3ifhW5-H/s640/IMG_0005.jpg" width="480" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjtUNR4F8mBp1mTokpLaGJQOJB3c81Uzh0clEQeOhdQHdJs5UYJB0__c-JcbOTrJ4bf8hyphenhyphenb_3d5hXmCIBY5lqQKb7s6opgPxlRoQrmLIPw2QSwA9_NbHTCl2bhnqqpmMjxUQduplgP79ASt/s1600/IMG_0003.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjtUNR4F8mBp1mTokpLaGJQOJB3c81Uzh0clEQeOhdQHdJs5UYJB0__c-JcbOTrJ4bf8hyphenhyphenb_3d5hXmCIBY5lqQKb7s6opgPxlRoQrmLIPw2QSwA9_NbHTCl2bhnqqpmMjxUQduplgP79ASt/s640/IMG_0003.jpg" width="480" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<h4>
再組み立てと復旧</h4>
<div>
ディスクを救出したら適当に必要なコネクタをとりつけて電源を投入します。(感電とかしないように気をつけて自己責任で行ってください。)するとブルーレイディスクプレーヤーが無事起動し「ディスクなし」と認識します。そこで取り出しボタンを押すと、スロットの入り口が開きディスク自体は(既に救出しているため)出てこないのですがディスクを出すように動作し、完全に正常な状態のディスクが空の状態になります。この状態で再び問題のジャッキーチェンの映画のディスクを恐る恐る入れてみると今度は正常に認識して再生出来ることが確認出来ました。(要するに今回の問題はディスクの問題とかではなくて単なる不運だったようです。ソフトウェア的なバグの可能性もあるので、ネットに接続してファームウェアをアップデートしておいた方が良さそうです。)</div>
<div>
動作確認出来たらちゃんと組み立てて、無事作業完了です。<br />
<br />
<h4>
最後に宣伝</h4>
</div>
<div>
自作でAndroidアプリを作ったので宣伝させてください。お子さんにAndroidのスマホやタブレットを渡している方におススメのアプリです。スマホやタブレットで遊ぶことをご褒美に勉強をさせることができます。子供が勝手に勉強するようになります。</div>
<div>
<a href="https://play.google.com/store/apps/details?id=com.marrolab.snp">https://play.google.com/store/apps/details?id=com.marrolab.snp</a><br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://2.bp.blogspot.com/2vVo8854EAstsq8BeSrihGuQnFGzg21DdUG_JBPnuY6Zld7ngdRyVDBtQxlu2Psvj_9r=w1920-h947-rw" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="947" data-original-width="533" height="320" src="https://2.bp.blogspot.com/2vVo8854EAstsq8BeSrihGuQnFGzg21DdUG_JBPnuY6Zld7ngdRyVDBtQxlu2Psvj_9r=w1920-h947-rw" width="180" /></a></div>
<br /></div>
<div>
<br /></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div>
<br /></div>
<br />
<br />
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<br />Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-452825703011793244.post-36718906070026654882013-11-23T19:09:00.001+09:002018-07-23T22:41:07.746+09:00XcodeでビルドしたOpenCVを参照するC++コードのビルド時のUndefined symbols for architecture x86_64MacでOpenCVをビルドし、そのビルドしたライブラリを使用した自分のコードをビルドするときにリンカエラーが出て次のように表示される問題について。<br />
<div>
<div>
<br /></div>
<div>
Undefined symbols for architecture x86_64:</div>
<div>
<br /></div>
<div>
※ちなみに環境はOS X 10.9, Xcode 5.0, OpenCV 3.0.0-dev, CPU:2.5 GHz Intel Core i5(64bit), 開発言語はC++</div>
<div>
<br /></div>
<div>
実際にはOpenCVのdylibのパスも通っているし、そのdylibにはx86_64用にビルドした使用関数が含まれているにも関わらず、その関数が見つからないというエラーで結構はまったのでメモ。</div>
<div>
<br /></div>
<div>
まず前提として次のことは確認済みとする。</div>
<div>
<div>
1)OpenCVのビルドをちゃんとx86_64で行っていることを再確認。(下図参照)</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg7pBtwE-4zmXTmdbf9LyxMOfH2gvglKw1wz29Z5PhloQP1eQHzQemE1h9kGAL8i-FAgDN4ZMbQ4eGoefGqk0Gt-4TgYCPAbOAE2ybqEivbpBMTGMWXBZJy4DJGZ7AzOgTl4Kzn5D8dRf7X/s1600/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88+2013-11-23+10.40.55.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="186" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg7pBtwE-4zmXTmdbf9LyxMOfH2gvglKw1wz29Z5PhloQP1eQHzQemE1h9kGAL8i-FAgDN4ZMbQ4eGoefGqk0Gt-4TgYCPAbOAE2ybqEivbpBMTGMWXBZJy4DJGZ7AzOgTl4Kzn5D8dRf7X/s640/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88+2013-11-23+10.40.55.png" width="640" /></a></div>
<div>
2)ビルドしたいOpenCVを使用しているプロジェクトのライブラリ参照パスOpenCVのdylibのディレクトリ(通常は/usr/local/lib)にOpenCVのdylibが通っていることを再確認。</div>
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgg016t_r8KSS9iZ_1kIsPNi59aTYNLMXuq1ZcLcCXcZQ5KPWkIpGmNScj4KPP05la3YdN6xHZ5MaxOKFGWpeXl_Ou49JZ02lo1plGv0LS0uIXEPiFmI6Xks3syInf3KuK-PeJnVjO9TbbZ/s1600/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88+2013-11-23+18.52.24.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="187" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgg016t_r8KSS9iZ_1kIsPNi59aTYNLMXuq1ZcLcCXcZQ5KPWkIpGmNScj4KPP05la3YdN6xHZ5MaxOKFGWpeXl_Ou49JZ02lo1plGv0LS0uIXEPiFmI6Xks3syInf3KuK-PeJnVjO9TbbZ/s640/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88+2013-11-23+18.52.24.png" width="640" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhvCvPT48NJ3JJQs7GB3G0KQoQtG5wrJJamZtBrqEsD60n7gYPqaWZbYX6JjFBym0UhkV8kpgZVGxlQ1q0zTgLRCatA9YaqRNJNZf-kOYrSqLilItXfJssFjC-v47319Gh2ox9lrqG8-pH_/s1600/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88+2013-11-23+18.53.26.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="347" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhvCvPT48NJ3JJQs7GB3G0KQoQtG5wrJJamZtBrqEsD60n7gYPqaWZbYX6JjFBym0UhkV8kpgZVGxlQ1q0zTgLRCatA9YaqRNJNZf-kOYrSqLilItXfJssFjC-v47319Gh2ox9lrqG8-pH_/s640/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88+2013-11-23+18.53.26.png" width="640" /></a></div>
<br />
<div>
以上がちゃんと出来ているのも関わらず冒頭のリンクエラーが出る場合はライブラリの設定を疑う。</div>
<div>
<br /></div>
<div>
・解決方法(コンパイラの設定)</div>
<div>
XcodeのOpenCVプロジェクトのBuild SettingsのApple LLVM 5.0 - Language - C++のC++ Standard Libraryの設定をlibstdc++ (GNU C++ standard library)に変更して、OpenCVをリビルドして再インストール。OpenCVを参照しているコードを管理しているプロジェクトの設定も同様に変更して、ビルドする。すると、ちゃんとdylibの関数を見つけられるようになり、ビルドできるようになる。</div>
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhf_p_isWT6pPITzfThKzbcIiAJM1eCOgmzJjjcPMNk6hshKt7_jwNbbcXDGwC-9Iz8qy1hr4gXo28fCDnm05HEgP2X-DLdcXSX0CycZR55-nCAWuEyhjeD3pgUe32gFahyeaAXA3VoDJD4/s1600/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88+2013-11-23+18.54.02.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="131" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhf_p_isWT6pPITzfThKzbcIiAJM1eCOgmzJjjcPMNk6hshKt7_jwNbbcXDGwC-9Iz8qy1hr4gXo28fCDnm05HEgP2X-DLdcXSX0CycZR55-nCAWuEyhjeD3pgUe32gFahyeaAXA3VoDJD4/s640/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88+2013-11-23+18.54.02.png" width="640" /></a></div>
<div>
<br /></div>
</div>
<div>
補足<br />
・XcodeでのOpenCVのビルドは<a href="http://blog.ra-labo.com/2011/01/opencv-macos-3c.html">http://blog.ra-labo.com/2011/01/opencv-macos-3c.html</a>が参考になった。<br />
・この記事ではアーキテクチャはx86_64に設定されていることを前提としているがUniversal(32/64-bit Intel(i386, x86_64))とかでもOpenCVのビルド設定と、OpenCV参照プログラムのビルド設定が一致していれば問題ないとは思う。<br />
・なんでLLVMの設定でうまく行くようになったのかはネットの断片的な情報で関係ありそうなのをひたすら試してみただけなので詳しくは分からない。とりあえず、今は続きの実装したいのでスルーする。知ってる人いたら教えて。<br />
<br />
<div>
<h4>
最後に宣伝</h4>
</div>
<div>
自作でAndroidアプリを作ったので宣伝させてください。お子さんにAndroidのスマホやタブレットを渡している方におススメのアプリです。スマホやタブレットで遊ぶことをご褒美に勉強をさせることができるアプリです。子供が勝手に勉強するようになります。</div>
<div>
<a href="https://play.google.com/store/apps/details?id=com.marrolab.snp">https://play.google.com/store/apps/details?id=com.marrolab.snp</a><br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://2.bp.blogspot.com/2vVo8854EAstsq8BeSrihGuQnFGzg21DdUG_JBPnuY6Zld7ngdRyVDBtQxlu2Psvj_9r=w1920-h947-rw" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="947" data-original-width="533" height="320" src="https://2.bp.blogspot.com/2vVo8854EAstsq8BeSrihGuQnFGzg21DdUG_JBPnuY6Zld7ngdRyVDBtQxlu2Psvj_9r=w1920-h947-rw" width="180" /></a></div>
<br /></div>
</div>
<div>
<br /></div>
Unknownnoreply@blogger.com1tag:blogger.com,1999:blog-452825703011793244.post-57014875353591178632013-11-19T00:23:00.002+09:002013-11-19T00:24:09.851+09:00ためになった記事のリンク集gitからダウンロードしたopencv(3.0)の最新版をmac(Mac OS X)でビルド<br />
<div>
http://blog.ra-labo.com/2011/01/opencv-macos-3c.html</div>
<div>
<br /></div>
<div>
<br /></div>
Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-452825703011793244.post-76765410695851121622013-11-14T23:44:00.002+09:002013-11-14T23:44:23.551+09:00VMWareの仮想Windowsで開発していてMSVCR90D.dllが見つからないと言われる件VMWareの仮想Windows上でVisualStudioのプロジェクトを実行すると<br />
<br />
「MSVCR90D.dllが見つからなかったため、このアプリケーションを開始できませんでした。<br />
アプリケーションをインストールし直すとこの問題は解決される場合があります。」<br />
<br />
のようなことを言われることがある。<br />
<br />
プロジェクトファイルがVMWareの(Macとの)共有フォルダにあることが原因と考えられる。※その場合はプロジェクトファイルをフォルダごとごっそり共有フォルダではないフォルダに移動してからプロジェクトを再度開き、リビルドしてから実行すると解決する。<br />
<br />
※VMWareをインストールするとデフォルトでドキュメントやピクチャ、デスクトップなど主要なフォルダが親Macと仮想Windowsで共有される設定になっていることがある。<br />
<br />
お困りの方は試してみてください。Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-452825703011793244.post-60006558140303053382013-10-06T01:10:00.002+09:002013-10-06T01:12:21.898+09:00mac os moutain lion (10.8.5) にてmacportsでgettextがインストールできない件macportsでvtkをインストールしようとしたら依存しているgettextのインストールで失敗したために結果的に失敗してしまった。詳細なエラーコードが残ってなくて申し訳ないのだが次のようなメッセージで失敗している。<br />
<br />
<pre class="brush:bash">
Error: org.macports.build for port gettext returned: command execution failed
Please see the log file for port gettext for details:
/opt/local/var/macports/logs/_opt_local_var_macports_sources_rsync.macports.org_release_tarballs_ports_devel_gettext/gettext/main.log
To report a bug, follow the instructions in the guide:
http://guide.macports.org/#project.tickets
Error: Processing of port gettext failed
</pre>
一度macportsでインストールしたプログラムを全てアンインストールする
<br />
<pre class="brush:bash">
$sudo port -f uninstall installed
</pre>
gettextのインストールを再度試みる。
<br />
<pre class="brush:bash">
$sudo port install gettext
</pre>
これでも失敗するのでもう一度gettextを削除する。
<br />
<pre class="brush:bash">
sudo port clean gettext
</pre>
gettextのインストールを再度試みる。
<br />
<pre class="brush:bash">
$sudo port install gettext
</pre>
するとなんだかよく分からないけどインストールに成功した。Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-452825703011793244.post-77892606015181675812013-05-15T23:23:00.002+09:002013-05-15T23:23:45.873+09:00Mountain LionでのMacOSX10.x.sdkの場所macでネット上で公開されているソースコードをコンパイルするときによく
/Developer/SDKs/MacOSX10.5.sdk
といったパスを設定しなさい、という記述を見かけるがMountain Lionではこのパスが存在しなくてコンパイルできない。
Mountain LionではMacOSX10.x.sdkは
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.8.sdk
に移動したようなので記述するパスをこのようなパスに置き換えると多分うまく行く。Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-452825703011793244.post-35959003312093563122013-04-19T00:43:00.000+09:002013-04-19T00:54:15.318+09:00三次元点群データをgnuplotで表示たまに三次元点群データ(point cloud)を可視化したいときがある。いろんな選択肢があるがgnuplotでもできるみたいなのでその方法をメモ。
<pre class="brush:cpp">
FILE* gp;
gp = _popen("pgnuplot -persist","w");
fprintf(gp, "splot '-' with points pointtype 1\n");
for (int i = 0; i < objectPoints.rows; i++)
{
fprintf(gp, "%lf %lf %lf\n", objectPoints.at<float>(i,0), objectPoints.at<float>(i,1), objectPoints.at<float>(i,2));
}
fprintf(gp, "e\n");
fflush(gp);
_pclose(gp);
</pre>
ちなみにC++, Windows環境での例です。前提としてgnuplot windows版をインストールしていて、インストール時に環境変数PATHにgnuplotのフォルダパスを追加しておく(インストーラのチェックボックスで設定)必要があります。
<a href="http://www.gnuplot.info/">http://www.gnuplot.info/</a>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-452825703011793244.post-54311311060419793462013-04-12T23:07:00.000+09:002013-04-12T23:08:20.091+09:00契約終了後HTC Desire X06HTIIが使えなくなる件の対処方法SoftbankのDesireが解約後約一ヶ月で「サービス提供不可」と表示されてなんにも操作できなくなる件、対処方法は起動直後に機内モードに設定することだそうです。<a href="http://kyaba.blog.eonet.jp/default/2012/09/post-b6dc.html">http://kyaba.blog.eonet.jp/default/2012/09/post-b6dc.html</a><br />
<br />
しかし、USIMカードにPINロックをかけていたり、画面ロックが複雑だったりするとロックがかかるまでに設定するのはほぼ不可能。<br />
<br />
と、あきらめかけていたのですがなんとか設定することが出来ました。そのときの手順をメモします。<br />
<br />
1. Desireを起動<br />
2. ロゴ表示が終わったと同時に画面のバーを下げて画面ロック解除コード入力画面を出し、パターンを入力(ここまでの操作をなんとかUSIMカードのPINロック画面が表示されるまでに行う)<br />
3. USIMカードのPIN入力画面になったらPINをすぐに入力せずに時間を稼ぐ。こうすることで常駐プロセスが全て起動し終えるまで(僕の携帯の場合はAdvansed Task Killerなどのアイコンが画面上に表示されたりして落ち着くまで)待つ。時間の稼ぎ方は番号を入力してバックスペース(番号表示枠の右側の←|のようなアイコン)を押したりするのを繰り返す。<br />
4. 常駐プロセスの起動が終わり落ち着いたら正しいPINを入力してOKを押す。<br />
5. ホーム画面が表示されると同時に"menu"ボタンを押す。押すと下側にメニューバーが表示されるのですぐに一番右下の"設定"を押す。すると設定メニューが表示されるのですぐに上から2番目の"無線とネットワーク"を押す。すると画面がまた変わるので今度は一番上の"機内モード"の右側にあるチェックボックスをONにする。<br />
<br />
かなり時間が厳しいのですが20回以上挑戦してなんとかうまくいきました。コツはPIN入力画面での時間は制限時間にカウントされないみたいなのでこの画面で常駐プロセスが起動するの待つことで続く画面の表示を高速に表示させるようにすることです。健闘を祈ります。<br />
<br />
参考までにメニューの位置が分かるよう画面の写真を載せておきます。<br />
#Desireだとスクリーンショットはroot化しないと撮影できないみたいなのであきらめました。<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiaeERWYwxgWzHbeT1u3CcNwfnlqeYaTgI2nIiUhhaTIVX2xaSNvD5Irflvinx12mTBmHACd6JhiO8QuzLVhUA2PXohqtZQM0HtYzfAageqBg72-vlBPmUoTduFOkYE5tjML_PKVnjKlFHs/s1600/IMG_0347.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiaeERWYwxgWzHbeT1u3CcNwfnlqeYaTgI2nIiUhhaTIVX2xaSNvD5Irflvinx12mTBmHACd6JhiO8QuzLVhUA2PXohqtZQM0HtYzfAageqBg72-vlBPmUoTduFOkYE5tjML_PKVnjKlFHs/s320/IMG_0347.jpg" width="240" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjhEVKOwetZvDYOZo-Et8zgDVqU3DyF6kHYm1uKwFOdjJdi0c0sDP65qIPdoH05x3ZF4wITR9GOlq4TTYT7nSX1aJmHWojX25ca-1H9EiyfnZygHQgTvq093SEgMHp5Bm3ech9L4Vf_nnvy/s1600/IMG_0346.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjhEVKOwetZvDYOZo-Et8zgDVqU3DyF6kHYm1uKwFOdjJdi0c0sDP65qIPdoH05x3ZF4wITR9GOlq4TTYT7nSX1aJmHWojX25ca-1H9EiyfnZygHQgTvq093SEgMHp5Bm3ech9L4Vf_nnvy/s320/IMG_0346.jpg" width="240" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhoL39NI06PEWDOjW510oXVIJxH2nGAlAMy2D4Iud5qE91ZAO8XXKG8-9zG9846dGNHnyK8DEQHN4E8k5eyUDQJ4CCKHDVJcO0qGiRcHUlonWwFS5ya93Eomdt9pD-uFyyblpFjpN6HXtpE/s1600/IMG_0345.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhoL39NI06PEWDOjW510oXVIJxH2nGAlAMy2D4Iud5qE91ZAO8XXKG8-9zG9846dGNHnyK8DEQHN4E8k5eyUDQJ4CCKHDVJcO0qGiRcHUlonWwFS5ya93Eomdt9pD-uFyyblpFjpN6HXtpE/s320/IMG_0345.jpg" width="240" /></a></div>
<br />Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-452825703011793244.post-56926892922564935042013-02-05T21:20:00.000+09:002013-02-05T21:21:20.335+09:00VMWare FUSION 5のGuest OSで突然ネットワークに接続できなくなったときの対応Guest のWindowsからある日突然ネットワークに接続できなくなったときはネット検索するとネットワークドライバを一回削除するとか、OSを再起動するとか、あきらめて自動検出からNAT接続に設定を変更するとかいろいろ書かれているが自分の場合は無線LANルーターを再起動することで直りました。<br />
詳しくは分からないが無線LANルーターのDHCPがGeustのWindowsにIPを振ってくれなくなるようだ。なのでこの現象が頻発するなら再起動するという対応以外にもWindowsのIPを固定にするとかの対応もあり得そうだ。(その場合は他のネットワーク環境で使うときはまたネットワークアダプタの設定の変更が必要になるが。。。)Unknownnoreply@blogger.com0