コグノスケ


link 未来から過去へ表示(*)  link 過去から未来へ表示

link もっと前
2013年10月18日 >>> 2013年10月5日
link もっと後

2013年10月18日

Windows 8のリモートデスクトップ

ノートPC(Windows 8 Pro)からサブPC(Windows 8 Pro)にリモートデスクトップで接続したまま、ノートPCをスリープしたら、サブPCに二度と接続できなくなりました。

ノートPCからサブPCに、何度接続しなおしても「このコンピューターへの接続数は制限されていて、すべての接続は現在使用されています。後で接続するか、またはシステム管理者に問い合わせてください。」と言われるばかりで接続できません。

試しに別のデスクトップPC(Windows 7 Ultimate)からサブPCに接続してみましたが、同様のエラーメッセージが出るばかり。

同じことをWindows 7(デスクトップPC)にやってもこんなエラーは起きないのですよね。Windows 8(サブPC)がおかしいのかなあ…?

そもそもログインすらできない

その後、サブPCにキーボードとマウスを繋いで直接ログインしてみたのですが、全く同じエラーが出ました。もうダメだこれ。

意味が良くわからんまま、とりあえず再起動したら直りました。一体、何だったんでしょうなあ…。

編集者:すずき(2013/10/20 18:21)

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



2013年10月5日

Python初歩で既に挫折気味

目次: Python

Pythonの初歩と思われるバイト列処理で、既に挫折気味です…。

RubyやらLuaやらの、他の動的型言語はどうしているんだろう…。この手の問題が多発したら、私の弱い心は挫折してしまいそうです。

Pythonにおけるバイト列

Python 3は文字列とバイト列を明確に区別しています。バイト列の表現には2種類あり、bytes型は読み取り専用のバイト列を表し、bytearray型は読み書き可能なバイト列を表します。それぞれ、組み込み関数bytes() とbytearray() で生成します。

Python 3からバイト列リテラルが追加され、bytes型を生成する際にbytes('abc', 'ASCII') から、b'abc' のように書けるようになったそうです。ふーん…。

bytesオブジェクトの要素、bytesオブジェクトのスライスの型
Python 3.3.2(Windows), Python 3.2.3(Linux)
>>> type(b'abc'[0])
<class 'int'>
>>> type(b'abc'[0:1])
<class 'bytes'>
bytearrayオブジェクトの要素、bytearrayオブジェクトのスライスの型
Python 3.3.2(Windows), Python 3.2.3(Linux)
>>> type(bytearray(b'abc')[0])
<class 'int'>
>>> type(bytearray(b'abc')[0:1])
<class 'bytearray'>

なおバイト列(bytesとbytearrayオブジェクト)の要素は0から255までを取る整数型(int)となります。従ってb'abc'[0] + 1の結果が98となるなど、要素に対する計算が可能です。

アレイ

バイト列だけではなく、整数列や、浮動小数点列はないのか?という疑問にお答えするのが、array.array型です。この型により要素のバイト長が1以外の配列を扱えます。

オブジェクト生成の際array.array() の第一引数により、配列の要素の型が決定されます。指定可能な型の一覧は、Pythonのリファレンスをご参照ください。

array.arrayオブジェクトの生成
Python 3.3.2(Windows), Python 3.2.3(Linux)

#### 長整数型(singed long, 1要素4バイト)の配列を作成

>>> import array
>>> a = array.array('l')
>>> a.itemsize
4

#### 要素の追加

>>> a.append(1)
>>> a.append(12345678)
>>> a
array('l', [1, 12345678])

#### 要素とスライスの型

>>> a[0]
1
>>> type(a[0])
<class 'int'>

>>> a[0:1]
array('l', [1])
>>> type(a[0:1])
<class 'array.array'>

#### signed long型の値域から外れる値は追加できない

>>> a.append(11111111111111111111111111111111111)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
OverflowError: Python int too large to convert to C long

以上のbytes, bytearray, array.arrayの3つの型はいずれもバッファプロトコルという、内部のメモリをオブジェクトの外に見せる仕組みを持っています。

この仕組みにより、以下に述べるメモリビューを使ってオブジェクト内部のメモリをコピーすることなく読み書きすることができます。

バイト列のメモリビュー

オブジェクトの持つメモリをコピーすることなく読む(可能なら書く)ために使うのがmemoryview型です。

オブジェクトの持つメモリが何の配列に見えるか?は、見たいオブジェクトに依存します。signed longとして見せてくるオブジェクトもあるでしょうし、バイト列として見せてくるオブジェクトもあります。

オブジェクトが内部メモリをどう見せてくるにせよmemoryviewの仕様を見る限り、要素の型は配列の各要素の型になるはずです。しかし…、

bytearrayのメモリビューの要素、スライスの型
Python 3.3.2(Windows)
>>> type(memoryview(bytearray(b'abc'))[0])
<class 'int'>
>>> type(memoryview(bytearray(b'abc'))[0:1])
<class 'memoryview'>

Python 3.2.3(Linux)
>>> type(memoryview(bytearray(b'abc'))[0])
<class 'bytes'>
>>> type(memoryview(bytearray(b'abc'))[0:1])
<class 'memoryview'>

なぜかPython 3.2では要素の型が「bytes」になっています。おかげでmemoryview(...)[0] に対して加減乗除、ビット演算する個所が全滅です。

無理やりmemoryview(...)[0][0] として切り抜けることも不可能ではありませんが、今度はPython 3.3で動かなくなるので困りものです。

整数列のメモリビュー

ちなみにメモリビューによってlong型の要素を参照した場合は、さらに具合が悪いです。

array.array('l') のメモリビューの要素、スライスの型
Python 3.2.3(Linux)
>>> import array
>>> a = array.array('l')
>>> a.append(0x01234567)
>>> a.append(0x79abcdef)
>>> a
array('l', [19088743, 2041302511])

>>> type(memoryview(a)[0])
<class 'bytes'>
>>> type(memoryview(a)[0:1])
<class 'memoryview'>

>>> memoryview(a)[0]
b'gE#x01'

なんと4要素のbytesが返ってきます…。これを一々intに組みなおすのも大変だし、値をコピーせずに参照できる、という利点が完全に死んでる気がします。

せめて何か言ってくれよPythonさん

もしかしてPython 3.2と3.3でmemoryviewの仕様が変わったんでしょうか?

CやJavaならコンパイル時に「型が違うぜ!」って怒られて気づきますが、Pythonは実行時にクラッシュするまで何も言ってくれません。世の中のPython使いはこういう問題にどうやって対処しているのでしょう?

編集者:すずき(2025/01/13 16:10)

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



link もっと前
2013年10月18日 >>> 2013年10月5日
link もっと後

管理用メニュー

link 記事を新規作成

<2013>
<<<10>>>
--12345
6789101112
13141516171819
20212223242526
2728293031--

最近のコメント5件

  • link 20年8月24日
    すずきさん (08/30 22:06)
    「ですね、自分も今はPulseAudioを...」
  • link 20年8月24日
    hdkさん (08/29 09:32)
    「ALSA懐かしい... PulseAud...」
  • link 16年2月14日
    すずきさん (08/04 01:31)
    「お役に立ったようでしたら幸いです。」
  • link 16年2月14日
    enc28j60さん (08/03 17:40)
    「ちょうど詰まっていたところです。\n非常...」
  • link 25年7月20日
    すずきさん (07/30 00:10)
    「ギクシャクするのは減速時の2速シフトダウ...」

最近の記事20件

  • link 23年5月15日
    すずき (08/30 17:58)
    「[車 - まとめリンク] 目次: 車三菱FTOの話。群馬県へのドライブ1群馬県へのドライブ2将来車を買い替えるとしたら?FTO...」
  • link 25年8月30日
    すずき (08/30 17:58)
    「[日本のガソリンスタンド] 目次: 車ガソリンスタンドは統廃合が進んで、ENEOS、コスモ、出光(apollostation)...」
  • link 20年8月24日
    すずき (08/28 23:30)
    「[ALSAループバックデバイスで簡易リモート再生] 目次: ALSAデスクトップPCにはスピーカーを繋いでいませんが、たまに音...」
  • link 23年6月1日
    すずき (08/21 01:43)
    「[自宅サーバー - まとめリンク] 目次: 自宅サーバーこの日記システム、Wikiの話。カウンターをPerlからPHPに移植日...」
  • link 13年5月10日
    すずき (08/21 01:43)
    「[Debian 7.0 Wheezyにアップデート] 目次: 自宅サーバーリリースノートを読みつつ、apt-get updat...」
  • link 15年4月30日
    すずき (08/21 01:42)
    「[Debian 8.0 Jessieにアップデート] 目次: 自宅サーバーDebianのアップデートが来ていたので、試しに職場...」
  • link 23年6月13日
    すずき (08/21 01:42)
    「[Debian 12 Bookwormにアップデート] 目次: 自宅サーバーDebianの更新はとても簡単でありがたいですが、...」
  • link 25年8月17日
    すずき (08/21 01:40)
    「[Debian 13 Trixieにアップデート] 目次: 自宅サーバー先日8/9にDebian 13がリリースされました。コ...」
  • link 25年8月20日
    すずき (08/21 01:38)
    「[パスポートのオンライン申請] 海外出張の予定が発生してパスポートが必要になりました。以前発行した10年パスポートの発行日を見...」
  • link 25年8月15日
    すずき (08/17 06:26)
    「[帰省終わり、東京へ] 帰ってきました。東京に降り立った瞬間に暑くてイヤになりました……。朝10時...」
  • link 25年8月11日
    すずき (08/17 06:20)
    「[帰省始まり、北海道へ] 北海道に帰省しました。今年は北海道も30℃超え連発で割と暑い年とはいえ、東京と決定的に違う点は湿度で...」
  • link 25年7月25日
    すずき (07/30 01:36)
    「[電装系が微妙なジャガーさん] 目次: 車車を買い替えてから1週間くらい経ちました。通勤路以外は幹線道路や高速をメインにしばし...」
  • link 19年9月1日
    すずき (07/30 01:36)
    「[カーナビを買いました] 目次: 車一昨年にカーナビが壊れて(2017年9月3日の日記参照)以来、カーナビを使わず過ごしていま...」
  • link 25年7月20日
    すずき (07/22 01:56)
    「[ジャガーXE Sを買いました] 目次: 車車を買い替えました。ジャガーXE Sです。マイナー車すぎて会社の人たちもあまり知ら...」
  • link 24年7月7日
    すずき (07/22 00:00)
    「[PC - まとめリンク] 目次: PC一覧が欲しくなったので作りました。 スピーカーGX-D90故障ノートPCの内蔵サウンド...」
  • link 21年4月16日
    すずき (07/21 23:59)
    「[ドキュメントスキャナーで書類を電子化] 目次: PC我が家の本棚は広い方ではないのに、ほとんど参照しない書類が幅を取っていて...」
  • link 21年4月6日
    すずき (07/21 23:58)
    「[ディスプレイアーム] 目次: PC机の奥行きが60cmのためか、ディスプレイの足がキーボードとぶつかって若干邪魔なのと、前か...」
  • link 21年2月27日
    すずき (07/21 23:56)
    「[新キーボードMajestouch購入] 目次: PC先日の在宅勤務環境改善(2021年2月12日の日記参照)にて、デュアルデ...」
  • link 21年2月28日
    すずき (07/21 23:55)
    「[JIS配列キーボードとOADG配列キーボード] 目次: PC今まで、いわゆる日本語配列のキー配列のことを漠然とJIS配列と呼...」
  • link 21年3月6日
    すずき (07/21 23:54)
    「[気に入るマウスはどれ?] 目次: PC手に合うワイヤレスマウスを探し続け、高級製品、小さい製品、お手ごろ製品と買いまくり、一...」
link もっとみる

こんてんつ

open/close wiki
open/close Linux JM
open/close Java API

過去の日記

open/close 2002年
open/close 2003年
open/close 2004年
open/close 2005年
open/close 2006年
open/close 2007年
open/close 2008年
open/close 2009年
open/close 2010年
open/close 2011年
open/close 2012年
open/close 2013年
open/close 2014年
open/close 2015年
open/close 2016年
open/close 2017年
open/close 2018年
open/close 2019年
open/close 2020年
open/close 2021年
open/close 2022年
open/close 2023年
open/close 2024年
open/close 2025年
open/close 過去日記について

その他の情報

open/close アクセス統計
open/close サーバ一覧
open/close サイトの情報

合計:  counter total
本日:  counter today

link About www.katsuster.net
RDFファイル RSS 1.0

最終更新: 08/30 22:06