k0b0's record.

Computer Engineering, Arts and Books

謙虚なるプログラマ:エドガー・ダイクストラ博士

ダイクストラ法、構造化プログラミング、セマフォ、etc.

 ダイクストラ法、構造化プログラミング、セマフォ等を考案した偉大な計算機科学者、エドガー・ダイクストラ博士。
 1972年にACMチューリング賞を受賞した際の受賞講演(日本語訳)を見つけたのでメモしておく。
計算機科学を学ぶ上で抽象化・階層化・部品化という思考方法はとても重要である。以下の文献では、プログラミングと抽象化についての卓越した考察が述べられており、大変、勉強になった。

エドガー・W・ダイクストラ: 謙虚なるプログラマ (The Humble Programmer)

 学生時代に誰から聞いたのかは忘れてしまったが、私は以下のダイクストラ博士のエピソードが印象に残っている。

ダイクストラはソフトウェアについて様々な発明をしたが、自分のコンピュータを所有したのは比較的遅く、しかもめったに使わなかった。1972年以降のEWDはほとんどが手書きである。講義の際は黒板にチョークで書き、オーバーヘッドプロジェクタも滅多に使わなかった。アップルのMacintoshを購入してからも、電子メールとWebブラウザ以外には使わなかったエドガー・ダイクストラ - Wikipediaより引用)

 このエピソードを思い出すたびに、紙と鉛筆のみでじっくり物事を考えてみたいと思ってしまう。

Introduction to Python. System programming [Process directory]

System programming "Process directory with python."

Sample program to process the directory

### Sample program to process the directory.

import os
import glob
import shutil

# Create a directory.
if (not(os.path.exists('poems'))):
    print('os.mkdir(poems)')
    os.mkdir('poems')

# Check existence of directory. 
print("os.path.exists('poems') : " + str(os.path.exists('poems')))

# Check the directory.
print("os.listdir('poems') : " + str(os.listdir('poems')))

# Create a subdirectory.
if (not(os.path.exists('poems/poem00'))):
    print('os.mkdir(poems/poem00)')
    os.mkdir('poems/poem00')

# Check the directory.
print("os.listdir('poems') : " + str(os.listdir('poems')))

# Create a file in the directory.
fout = open('poems/poem00/helo_text', 'wt')
fout.write('''Hello Text ''')
fout.close()

# Check the directory.
print("os.listdir('poems/poem00') : " + str(os.listdir('poems/poem00')))

# Change the directory.
print("os.chdir('poems')")
os.chdir('poems')
print("os.listdir('.') : " + str(os.listdir('.')))

# File pattern match.
print("glob.glob('p*') : " + str(glob.glob('p*')))
print("glob.glob('???') : " + str(glob.glob('???')))
print("glob.glob('po????') : " + str(glob.glob('po????')))
print("glob.glob('[poab]????0') : " + str(glob.glob('[poab]????0')))

print("os.chdir('..')")
os.chdir('..')

# Remove directory.
print("shutil.rmtree('poems')")
shutil.rmtree('poems')
print("os.path.exists('poems') : " + str(os.path.exists('poems')))

print("End of job.")

Execution result

os.mkdir(poems)
os.path.exists('poems') : True
os.listdir('poems') : []
os.mkdir(poems/poem00)
os.listdir('poems') : ['poem00']
os.listdir('poems/poem00') : ['helo_text']
os.chdir('poems')
os.listdir('.') : ['poem00']
glob.glob('p*') : ['poem00']
glob.glob('???') : []
glob.glob('po????') : ['poem00']
glob.glob('[poab]????0') : ['poem00']
os.chdir('..')
shutil.rmtree('poems')
os.path.exists('poems') : False
End of job.

Which is the best book and website to study verilogHDL coding ?

Which is the best book and website to study verilogHDL coding ?

https://www.quora.com/Which-is-the-best-book-to-study-verilog-coding

book

Verilog HDL (paperback)

Verilog HDL (paperback)

website

 This site is good. There are description examples of various circuit modules. I think that this site is useful as a reference when doing digital circuit design.
asic.co.in

"sudo dpkg --configure -a"実行時のエラー : ”dpkg: エラー: ファイル '/var/lib/dpkg/updates/0006' を解析。0 行目付近: フィールド名 `#padding' に改行”

dpkg: エラー: ファイル '/var/lib/dpkg/updates/0006' を解析。0 行目付近: フィールド名 `#padding' に改行

 "sudo dpkg --configure -a"を実行した際にこのエラーにはまったのでメモしておく。

解決方法

update中に使われる一時ファイルが残留しているようなので、以下のコマンドで削除してみると解決した。

sudo rm /var/lib/dpkg/updates/0006