[ カテゴリー » PC関連 ]

メモリ壊れた

blog20130315-BrokenSODIMM

やけにFirefoxが落ちたりBSoDが出るなと思ったら、メモリが壊れていた。何も海外で壊れなくてもと思ったけど、出張か帰省中にしか活躍しないノートだからそりゃ海外で壊れるか。

Knoppixが起動するUSBメモリとか、2枚入れてあったメモリカードとか、普段なら「無駄に良い」と言われそうな準備が役に立ち、特に困った事態にはならずに済みそう。

— posted by mu at 06:53 pm  

Lenovo A800 root化

中華フォント対策のためにLenovo A800をroot化したのでメモ。

  • ADB用ドライバはLenovoUsbDriverで検索する。バージョン1.0.1以降推奨。私はここLink から取りました(チェコ語のようです)
  • root化にはSRS One Click RootLink を使用。
    • 英語が読めると成功確率がグッと上がると思う、というか読めずにできるのだろうか?
    • root化するボタンは2つあります。私は上のボタン(全部試す)で成功。多分どっちでもいい。
    • 途中WindowsのOKボタンを押した直後にAndroidのResumeボタンを押せと出ますが、本当にすぐ押さないといけないようなので失敗したらもう一度。
  • フォントファイルの変更などはここLink の他色んな所に書いてあるのでお好きな方法で。
  • あとは好みでSuperuserとかBusyboxとか。

個人的にroot化すると、汚してしまったというか取り返しの付かないことしたような気分になる(^_^;)

[参考]

— posted by mu at 12:03 am   commentComment [0]  pingTrackBack [0]

Lenovo A800購入

blog20130311-LenovoA800

Nexus7を購入Link してから私のスマホ化が急激に進んでます。去年の今頃は「スマホ買っても使い道ないしなぁ」と言ってたような > 自分

先週から再びフィリピン出張。それまで定宿としていたホテルは室内インターネット使い放題だったのですが、今回来てみると3時間/日制限が入ってたorz で、ちょっと調べてみると携帯回線のデータ通信定額が予想外に安いLink ので代替になりそう。最初はUSB接続タイプLink を購入してWindows7にSoftAPを設定して使っていたのですが、なんかSoftAPがブツブツ切れるので安いテザリング用スマホが欲しくなってきた次第。

Dual SIM機がいいなってことでSony Xperia tipo dualLink が候補だったのですが、安いの探して店巡りしていたらLenovo A800Link を勧められて心変わり。とりあえず2日使ってみたところ…

  • バッテリーはSIM 2枚14時間待ち受け/数回メールチェック/1時間テザリングで残り75%と頼もしい限り。
  • いかんせん(^_^;) 中華パッド/スマホ。フィリピン販売なので初期設定は英語なものの、言語選択に日本語なし。ここLink 読んで気後れしていたのですが、なんてことはないGoogle Playが最初から使えるのでMoreLocation2とGoogle日本語入力を入れてあっさり解決
  • ただし日本語設定にしてもAndroid設定画面(標準の設定画面とは違うデザイン)や一部のプリインストールアプリは英語のまま
  • ストラップ通す穴がないのは意表を突かれた。中国人はストラップ使わないってことか。
  • 現在中華フォント対策にモトヤLマルベリ3等幅を入れる準備中

でかくて重いですが、コストパフォーマンスはかなりいいです。

で、パケット定額ですが、日中・夕方は40kbpsとかb-mobileの980円Link といい勝負の速度ですが、深夜になると1Mbpsを超えるようになり、夜間のぶっ通しダウンロードにかなり便利。

[2013/03/12 追記] ストラップの穴について会社の人に聞いてみたところ、中国人「珍しいな、普通ついてるんだが」 アメリカ人「今まで買った5台、どれも穴なんてなかったぞ」と予想の逆の返答でした。

[2013/03/13 追記] 日本語フォント入れるための第一歩であるADBドライバは、LenovoUsbDriverで検索。私の環境(Windows7 SP1 x64)ではバージョン1.0.1じゃないと認識してくれませんでした。私はここLink から取りましたが、何語だこのページ? 勘で乗り切りましょう(^_^)

— posted by mu at 10:51 pm  

ADSL-direct利用開始

昨日プロバイダの移行が完了し、eAccess ADSL-directLink になりました。朝9時過ぎには既に回線切り替えが終わっていたようだったのですが、出かけないといけなかったので確認したのは夜。

同じeAccessなのでモデムがそのまま使えることを期待したLink のですが、結局同じ型番(MegaBit Gear TE4571E)の新しいモデムが送付され、今まで使ったのは送り返すことに。無駄なことを…

新しいモデムは同じ型番なのですがファームウェアが変えられているようで、PPPのユーザーIDが設定済み&変更不可。ケーブルを繋ぐだけで即使える初心者に優しい仕様となっています。

他のプロバイダにモデムを転用する気はさらさらないのでそれはいいのですが、困ったのはPPPoEブリッジを使用して別のルーターを使おうとしたとき。先にADSLモデムがPPPセッションを確立してしまい、外部ルーターが接続できない。モデムにPCを繋いでPPP接続を切ると外部ルーターが接続可能になるのですが、モデムの電源を入れなおすと再びモデムがPPP接続してしまう。これは停電復帰後が面倒。

外部ルーターがDD-WRTLink 化したものだったので、PPPoEのAdvanced設定でMulti linkにチェックを入れるとこの問題は解決しました。う~む、他のブロードバンドルーターはマルチセッションが当たり前で、DD-WRTの規定値が少数派なのだろうか。

— posted by mu at 11:32 am  

WPF TreeViewのアイテムを幅一杯に伸ばす

blog20130222-StretchTreeViewItem

TreeViewLink の各アイテムを枠囲みしたり背景を色付にしようとすると、内部のテキストをぴったり納めるような枠のサイズになってデコボコしたりLink中身のサイズを固定するとサブアイテムのお尻が右に飛び出るLink といまいち綺麗じゃありません。

TreeView.HorizontalContentAlignment=Stretchで解決できると思いきや、TreeViewはこのプロパティを華麗に無視。TreeViewItemのテンプレートを根こそぎ変更しないといけないらしい。1から書くと大変そうなのでネットにあったテンプレートLink を改造。変更点は、

  • テンプレートの最初にあるGridがTreeViewItemを表示する部分。HorizontalAlignment="Stretch"にして目一杯横に広がるようにする。
  • そのGridの2カラム目が肝心の中身。ここのWidthをAutoから*に。
  • 3カラム目は要らない子なので削除。
  • 消した3カラム目の辻褄合わせに、下のほうにあるItemsPresenterのColumnSpan指定を削除。
<UserControl x:Class="TreeViewTest"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
             mc:Ignorable="d" 
             d:DesignHeight="100" d:DesignWidth="300">

    <UserControl.Resources>
        <Style TargetType="TreeViewItem">
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="TreeViewItem" xmlns:s="clr-namespace:System;assembly=mscorlib">
                        <Grid HorizontalAlignment="Stretch">
                        <!--
                        <Grid>
                        -->
                            <Grid.ColumnDefinitions>
                                <ColumnDefinition Width="Auto" MinWidth="19" />
                                <ColumnDefinition Width="*"/>
                                <!-- Change to expand width of tree items to base TreeView size (expand to right edge)
                                <ColumnDefinition Width="Auto" />
                                <ColumnDefinition Width="*" />
                                -->
                            </Grid.ColumnDefinitions>
                            <Grid.RowDefinitions>
                                <RowDefinition Height="Auto" />
                                <RowDefinition />
                            </Grid.RowDefinitions>
                            <ToggleButton IsChecked="{Binding RelativeSource={RelativeSource TemplatedParent},Path=IsExpanded,Mode=TwoWay}" ClickMode="Press" Name="Expander">
                                <ToggleButton.Style>
                                    <Style TargetType="ToggleButton">
                                        <Style.Resources>
                                            <ResourceDictionary />
                                        </Style.Resources>
                                        <Setter Property="UIElement.Focusable">
                                            <Setter.Value>
                                                <s:Boolean>False</s:Boolean>
                                            </Setter.Value>
                                        </Setter>
                                        <Setter Property="FrameworkElement.Width">
                                            <Setter.Value>
                                                <s:Double>16</s:Double>
                                            </Setter.Value>
                                        </Setter>
                                        <Setter Property="FrameworkElement.Height">
                                            <Setter.Value>
                                                <s:Double>16</s:Double>
                                            </Setter.Value>
                                        </Setter>
                                        <Setter Property="Control.Template">
                                            <Setter.Value>
                                                <ControlTemplate TargetType="ToggleButton">
                                                    <Border Padding="5,5,5,5" Background="#00FFFFFF" Width="30" Height="30">
                                                        <Path Fill="#00FFFFFF" Stroke="#FF989898" Name="ExpandPath">
                                                            <Path.Data>
                                                                <!--※②マークを変えるにはここの値を変える-->
                                                                <PathGeometry Figures="M0,0L0,10L10,0z" />
                                                            </Path.Data>
                                                            <Path.RenderTransform>
                                                                <RotateTransform Angle="135" CenterX="3" CenterY="3" />
                                                            </Path.RenderTransform>
                                                        </Path>
                                                    </Border>
                                                    <ControlTemplate.Triggers>
                                                        <Trigger Property="UIElement.IsMouseOver">
                                                            <Setter TargetName="ExpandPath" Property="Shape.Stroke">
                                                                <Setter.Value>
                                                                    <SolidColorBrush>#FF1BBBFA</SolidColorBrush>
                                                                </Setter.Value>
                                                            </Setter>
                                                            <Setter TargetName="ExpandPath" Property="Shape.Fill">
                                                                <Setter.Value>
                                                                    <SolidColorBrush>#00FFFFFF</SolidColorBrush>
                                                                </Setter.Value>
                                                            </Setter>
                                                            <Trigger.Value>
                                                                <s:Boolean>True</s:Boolean>
                                                            </Trigger.Value>
                                                        </Trigger>
                                                        <Trigger Property="ToggleButton.IsChecked">
                                                            <Setter TargetName="ExpandPath" Property="UIElement.RenderTransform">
                                                                <Setter.Value>
                                                                    <RotateTransform Angle="180" CenterX="3" CenterY="3" />
                                                                </Setter.Value>
                                                            </Setter>
                                                            <Setter TargetName="ExpandPath" Property="Shape.Fill">
                                                                <Setter.Value>
                                                                    <SolidColorBrush>#FF595959</SolidColorBrush>
                                                                </Setter.Value>
                                                            </Setter>
                                                            <Setter TargetName="ExpandPath" Property="Shape.Stroke">
                                                                <Setter.Value>
                                                                    <SolidColorBrush>#FF262626</SolidColorBrush>
                                                                </Setter.Value>
                                                            </Setter>
                                                            <Trigger.Value>
                                                                <s:Boolean>True</s:Boolean>
                                                            </Trigger.Value>
                                                        </Trigger>
                                                    </ControlTemplate.Triggers>
                                                </ControlTemplate>
                                            </Setter.Value>
                                        </Setter>
                                    </Style>
                                </ToggleButton.Style>
                            </ToggleButton>
                            <Border BorderThickness="{TemplateBinding Border.BorderThickness}" Padding="{TemplateBinding Control.Padding}" BorderBrush="{TemplateBinding Border.BorderBrush}" Background="{TemplateBinding Panel.Background}" Name="Bd" SnapsToDevicePixels="True" Grid.Column="1">
                                <ContentPresenter Content="{TemplateBinding HeaderedContentControl.Header}" ContentTemplate="{TemplateBinding HeaderedContentControl.HeaderTemplate}" ContentStringFormat="{TemplateBinding HeaderedItemsControl.HeaderStringFormat}" ContentSource="Header" Name="PART_Header" HorizontalAlignment="{TemplateBinding Control.HorizontalContentAlignment}" SnapsToDevicePixels="{TemplateBinding UIElement.SnapsToDevicePixels}" />
                            </Border>
                            <!--
                            <ItemsPresenter Name="ItemsHost" Grid.Column="1" Grid.Row="1" Grid.ColumnSpan="2"/>
                            -->
                            <ItemsPresenter Name="ItemsHost" Grid.Column="1" Grid.Row="1"/>
                        </Grid>
                        <ControlTemplate.Triggers>
                            <Trigger Property="TreeViewItem.IsExpanded">
                                <Setter TargetName="ItemsHost" Property="UIElement.Visibility" Value="{x:Static Visibility.Collapsed}" />
                                <Trigger.Value>
                                    <s:Boolean>False</s:Boolean>
                                </Trigger.Value>
                            </Trigger>
                            <Trigger Property="ItemsControl.HasItems">
                                <Setter TargetName="Expander" Property="UIElement.Visibility" Value="{x:Static Visibility.Hidden}" />
                                <Trigger.Value>
                                    <s:Boolean>False</s:Boolean>
                                </Trigger.Value>
                            </Trigger>
                            <Trigger Property="TreeViewItem.IsSelected">
                                <Setter TargetName="Bd" Property="Panel.Background" Value="{DynamicResource {x:Static SystemColors.HighlightBrushKey}}" />
                                <Setter Property="TextElement.Foreground">
                                    <Setter.Value>
                                        <DynamicResource ResourceKey="{x:Static SystemColors.HighlightTextBrushKey}" />
                                    </Setter.Value>
                                </Setter>
                                <Trigger.Value>
                                    <s:Boolean>True</s:Boolean>
                                </Trigger.Value>
                            </Trigger>
                            <MultiTrigger>
                                <MultiTrigger.Conditions>
                                    <Condition Property="TreeViewItem.IsSelected">
                                        <Condition.Value>
                                            <s:Boolean>True</s:Boolean>
                                        </Condition.Value>
                                    </Condition>
                                    <Condition Property="Selector.IsSelectionActive">
                                        <Condition.Value>
                                            <s:Boolean>False</s:Boolean>
                                        </Condition.Value>
                                    </Condition>
                                </MultiTrigger.Conditions>
                                <Setter TargetName="Bd" Property="Panel.Background" Value="{DynamicResource {x:Static SystemColors.ControlBrushKey}}" />
                                <Setter Property="TextElement.Foreground">
                                    <Setter.Value>
                                        <DynamicResource ResourceKey="{x:Static SystemColors.ControlTextBrushKey}" />
                                    </Setter.Value>
                                </Setter>
                            </MultiTrigger>
                            <Trigger Property="UIElement.IsEnabled">
                                <Setter Property="TextElement.Foreground">
                                    <Setter.Value>
                                        <DynamicResource ResourceKey="{x:Static SystemColors.GrayTextBrushKey}" />
                                    </Setter.Value>
                                </Setter>
                                <Trigger.Value>
                                    <s:Boolean>False</s:Boolean>
                                </Trigger.Value>
                            </Trigger>
                        </ControlTemplate.Triggers>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>

            <Setter Property="ItemsPanel">
                <Setter.Value>
                    <ItemsPanelTemplate>
                        <!--※①マージンを変える場合はここ-->
                        <StackPanel IsItemsHost="True" Margin="20,0,0,0"/>
                    </ItemsPanelTemplate>
                </Setter.Value>
            </Setter>
        </Style>
    </UserControl.Resources>

    <TreeView Name="tree" ItemsSource="{Binding Items}" HorizontalAlignment="Stretch" HorizontalContentAlignment="Stretch" ScrollViewer.HorizontalScrollBarVisibility="Disabled">
        <TreeView.ItemTemplate>
            <HierarchicalDataTemplate DataType="{x:Type TVItem}" ItemsSource="{Binding Items}">
                <Border BorderBrush="Silver" BorderThickness="2" Margin="0.5" Padding="2">
                    <Grid HorizontalAlignment="Stretch">
                        <Grid.RowDefinitions>
                            <RowDefinition MinHeight="32"/>
                            <RowDefinition MinHeight="20"/>
                        </Grid.RowDefinitions>
                        <Grid.ColumnDefinitions>
                            <ColumnDefinition Width="200"/>
                            <ColumnDefinition Width="*"/>
                        </Grid.ColumnDefinitions>
                        <Label Grid.Row="0" Grid.Column="0" Grid.ColumnSpan="2" Content="{Binding Name}" FontSize="20" HorizontalAlignment="Left" VerticalAlignment="Center" />
                        <Label Grid.Row="1" Grid.Column="0" Content="{Binding Status}" FontSize="16" HorizontalAlignment="Left" VerticalAlignment="Center"/>
                        <ProgressBar Grid.Row="1" Grid.Column="1" Minimum="0" Maximum="1" Value="{Binding Progress}" HorizontalAlignment="Stretch"/>
                    </Grid>
                </Border>
            </HierarchicalDataTemplate>
        </TreeView.ItemTemplate>
    </TreeView>
</UserControl>
元データとなるCLRクラスはこんな感じです。
public partial class TreeViewTest : UserControl
{
    public TreeViewTest()
    {
        InitializeComponent();

        DataContext = new
        {
            Items = new TVItem[]
            {
                new TVItem()
                {
                     Name = "Item 1",
                     Status = "Status 1",
                     Progress = 0.1
                },
                new TVItem()
                {
                    Name = "Item 2",
                    Status = "Status 2",
                    Progress = 0.3,
                    Items = new TVItem[]
                    {
                        new TVItem()
                        {
                            Name = "Item 2-1",
                            Status = "Status 2-1",
                            Progress = 0.5
                        },
                        new TVItem()
                        {
                            Name = "Item 2-2",
                            Status = "Status 2-2",
                            Progress = 0.7
                        }
                    }
                }
            }
        };
    }
}

public class TVItem
{
    public string Name { get; set; }
    public string Status { get; set; }
    public double Progress { get; set; }
    public IEnumerable<TVItem> Items{ get; set; }
}

[参考]

[2013/02/24] コード修正

— posted by mu at 07:03 pm  

T: Y: ALL: Online:
ThemeSwitch
  • Basic
Created in 0.0290 sec.
prev
2024.11
next
          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30