とあるSEの手順書

個人的な技術メモです。無保証ですが参考になりましたら幸いです。

レイトン教授 不思議な街のナゾ099を解く

レイトン教授面白いですね。
ナゾ099に、こんなのがありました。
1から9までの数字を1回ずつ使い、□□□□□-□□□□=33333になるよう□に数字を当てはめるというものです。

私は解けませんでした。

Pythonで無理やり解いてみようとソースコードを書きました。

import numpy as np
import re

def isKiri(x):
	if re.match('^([0-9])\\1+$', str(x)):
		return True
	if str(x) in '12345':
		return True
	return False

def hantei(z):
    ans = z[0] * 10000 + z[1] * 1000 + z[2] * 100 + z[3] * 10 + z[4] - z[5] * 1000 -z[6] * 100 - z[7] * 10 - z[8]
    if isKiri(ans):
        print (str(ans) + ',' + str(z))

def tansaku(x,y):
    for n in x:
        # xから1つ要素を減らす
        next_x = np.array([ i for i in x if n != i ])
        # yに選択した要素を追加する
        next_y = np.append(y , n)
        if next_y.size == 9:
            hantei(next_y)
            return
        # xがなくなるまで再帰
        tansaku(next_x , next_y)

if __name__ == '__main__':
    x = np.arange(1,10)
    y = np.array([] , dtype='int32')
    tansaku(x, y)

調べてみると33333は、2件しかないですが、
33333を除き、11111から77777は、結構数パターン存在するみたいですね。

キリ番判定は、下記を参考にさせていただきました。
pythonでキリ番かどうか判定する - BlankTar

アセトン転写のレーザープリンタによる比較

アセトン転写する際に、どのプリンタで印刷したり、どの用紙を用いるか実験してみました。

実験ケース

f:id:stone-book:20180623074604p:plain

左から順に

f:id:stone-book:20180623075106p:plain

  • Brother JUSTIO HL-L2365DW+普通紙
  • Canon Satena MF242dw+普通紙

アセトン転写手順

  1. レーザープリンタで印刷してプラスチック版の上に乗せる
  2. 100均の除光液(アセトン入り)をかける
  3. 全体的に湿ったら、うえからクリアファイルをかけて軍手でこする
  4. クリアファイルをはがし、乾燥させる
  5. 水でふやかして、紙をはがす

詳細は過去記事を参照ください。

stone-book.hatenablog.com

実験結果

実験した結果は下記になります。

f:id:stone-book:20180623075749p:plain

こちらも左から順に

f:id:stone-book:20180623075924p:plain

  • Brother JUSTIO HL-L2365DW+普通紙
  • Canon Satena MF242dw+普通紙

考察

結果からすると、コンビニで印刷したものが一番きれいにできました。何回か試しましたが、コンビニの印刷がきれいに転写できそうです。

もちろん、軍手でこすった際に、どれも同じように力をかけていましたが、やはりムラができたせいなのかもしれません。

ただ、レーザープリンタであれば基本的には、どれでもアセトン転写ができることが示唆できたかも。「力のかけ具合」「アセトンの量」などが変わる程度なのかもしれません。

また、普通紙と光沢紙ですが、光沢紙だとはがしにくく紙繊維が残りやすいと感じました。普通紙でも比較しても綺麗に転写できたと思います。

アセトン転写による自作プリント基板作成のメモ②

前回に続き、自作プリント基板作成のメモです。

プリント基板のアセトン転写までの作業、および関連の参考記事は、下記をご参照ください。

stone-book.hatenablog.com

エッチング液の作成

エッチング液は、クエン酸:食塩を4:1で混ぜて、そこに溶けるまでオキシドールを適量に混ぜます。

私はコンビニのスプーンでチャック袋に感覚でいれて混ぜました。

もし安いチャック袋の場合、漏れてしまうことがあるため、二重にしておいたほうがいいです。

f:id:stone-book:20180620152834p:plain

経験的に、配線に関係のない箇所は油性ペンで塗っておくなどしたほうが、溶ける銅が少なくなるので、必要なエッチング液や漬ける時間が短くなると感じました。

エッチング液に基盤を投入

エッチング液に基盤を入れます。しばらくすると綺麗なエメラルドグリーンになります。

f:id:stone-book:20180620152604p:plain

ゴム手袋をはめて、取り出して様子を見ます。

こんな感じに銅箔が溶けて、下地が見えたらOK。このサイズで、だいたい、30~40分くらいつけてました。

f:id:stone-book:20180629074117p:plain

漬けている間、注視していると銅箔が溶けて、下地が見えてくる様子が観察できます。(反応中は、泡が出ます。)

この様子を観察できると、下地が見えてきたと判断つきやすいです。

基盤の洗浄

銅箔が腐食したと思ったら、取り出して洗浄します。

その後、トナーを落とすため、サンドペーパーでこすって落とします。

f:id:stone-book:20180629074223p:plain

トナーやヤスリカスも洗い流して、乾かして完成です。

f:id:stone-book:20180629074842p:plain

ちなみに、上記は印刷する際に反転するのを忘れていました。

エッチング液の廃液処理

銅イオンが溶けている液は、下水に流してはいけないです。

希釈するか、アルミニウムイオンに置換する必要があります。アルミニウムイオンに置換したほうが、銅イオンの絶対量が減るので、環境にはよさそうです。

アルミ箔を投入して、しばらく放置すると銅が出てきます。

アルミ箔を丸めたり沢山いれすぎると熱くなりすぎるらしいので、ちょっとづつ。

f:id:stone-book:20180629075025p:plain

熱が出てもいいようにタッパーに水を張ってます。

入れても銅が出ない場合、アルミが足らないのかもしれません。追加してみてください。

コーヒーのフィルターで銅を取り出したあと、まだ酸性の溶液なので重曹アルカリ性)で中和するとOKです。

失敗例

一度、エッチング液につけて5時間くらい放置していたら、銅箔が溶けすぎてしまいました。

f:id:stone-book:20180620153109p:plain

洗浄メモ

作業途中で放置していた生基盤は、酸化してしまいうまくエッチングできないことがありました。

サンポールで洗うときれいになったので、エッチング前にするとよいかもしれません。

 

f:id:stone-book:20180620153522p:plain

洗浄前

 

f:id:stone-book:20180620153536p:plain

洗浄後

補足

なかなか時間がなく、まだ綺麗にエッチングできた基盤がお見せできない状況です。

手が空いた時に、再挑戦し載せる予定です。忘れないように手順だけ掲載しました。

(6/29追記)綺麗にできたので、追記しました。

 

アセトン転写による自作プリント基板作成のメモ①

こちらの記事を参考にアセトン転写によるプリント基板に挑戦したので、そのメモを記載します。

コンビニと100均材料でプリント基板作成 アセトン転写 | WEBで何かつくるよ

制作メモ:慣れれば30分。普段使いの基板づくり by akira_you - DMM.make

材料集め

これらの材料は100均で揃えました。

f:id:stone-book:20180619164326p:plain

写真にはないのですが、これらも揃えました。(家にあった。)

  • 細めの油性ペン
  • 軍手
  • ビニール手袋
  • クリアファイル
  • 重曹
  • コーヒーのフィルタ
  • カッター

こちらは、Amazonで買いました。紙フェノールのやすい生基盤です。

 f:id:stone-book:20180619164320p:plain

  • 生基盤

パターンの印刷

下記の記事でも言及しましたが、レーザープリンタと普通紙で大丈夫でした。

stone-book.hatenablog.com

 

パターンの作成は、Fritzingを使いました。

f:id:stone-book:20180619170614p:plain

エクスポート > for Production > Etchable(PDF)でパターンのPDFが作成できます。

このパターンの部分が、エッチングした際に銅箔が残る部分になります。

そのため、ワイヤーなどは、極太にしておいたほうが、エッチングしやすくなります。

f:id:stone-book:20180629080210p:plain

反転しない場合、このPDFを印刷すればOKですが、紙1枚に1パターンですし、失敗を考えて紙1枚に何パターンか出したいです。

少し文字なども入れたり、反転したい場合も多いと思います。

そのため、一回、PDF全体をJPEG画像に変換します。

PDFをJPGに変換。PDFから画像を抽出

私は、上記のサイトでJPEGに変換して、ペイントで編集しました。

ペイントで保存する際は、モノクロJPEGにしておくのがベターです。

また、デフォルトのペイントの設定で印刷するとピッチ幅が合わなくなりますので、ページ設定を変更します。

f:id:stone-book:20180619171115p:plain

ページ設定の拡大縮小で調整100%にして印刷します。

f:id:stone-book:20180619171208p:plain

印刷後、ピッチ幅があっているかどうか、実際にICを重ねて確認することが重要になります。

レーザープリンタがなく、コンビニなどのネットプリントを使う場合は、PDFに変換する必要があります。

(そうか、インクジェットで印刷した紙を持っていき、コピーするのもOK)

私がやった感触では、JPEG画像をペイントの印刷で出力をPDFにするとサイズが若干ずれてしまい、ピッチ幅があわなくなりました。

正しいのわかりませんが、エクセルに画像をサイズ変更しないで上記のJPEGを張り付けて、保存の際にPDFを選択したファイルは、ピッチ幅が合いました。

 結構めんどくさいので良いやり方があれば、教えてください。

基盤の切り出し

f:id:stone-book:20180619164332p:plain

印刷したパターンに合わせて、生基盤から必要の大きさのものを切り出します。

生基盤の切り方は、カッターで裏をじょりじょり削ってパキって割りました。ハサミで切ったら、銅箔もはがれてしまいました。

切り出した生基盤をサンドペーパーで酸化している汚れなどを落とすため、こすってきれいにします。

アセトン転写

f:id:stone-book:20180619164337p:plain

プリントしたパターンを重ねて、除光液をスポイトでゆっくりかけます。私の買ったものは、ストロベリーのにおいがついているので、甘ったるい感じがしました。。。

f:id:stone-book:20180619164344p:plain

クリアファイルをかぶせて、軍手をつけた手でごしごしこすります。空気を追い出すイメージで、2,3分ほど強めにこすります。

f:id:stone-book:20180619164352p:plain

こすったあと、軽く乾かして(乾かすと、若干白くなるように感じます。)水に入れて紙をふやかします。ふやかしつつ、指で紙をはがします。

 

f:id:stone-book:20180619164312p:plain

転写が完了します。

次は、エッチング液を作り、銅箔を溶かして(腐食さして)いきます。

この前に、転写がうまくいっていない箇所は、油性ペンで修正しておきましょう。


stone-book.hatenablog.com

 

市民税の期限後申告してみた

昨年の仮想通貨の取引にて数万程度の少額の利益が出ていました。
雑収入の20万円以下は確定申告をしなくてもいいと聞いていて、なにもしませんでした。

しかし、20万以下でも市民税の申告は必要であることを知りました。
既に5月で、申告期限を過ぎていましたが、その手順をメモします。

この手順は、当方の居住する市でご対応いただいた内容です。
他の市町村では異なる可能性があります。

メールで問い合わせ

期限後に申告することもあって、市役所に直接顔出すと怒られる気がして(怒られません。)
申告方法について市の税務室のホームページからメールで問い合わせました。

問い合わせさせていただいた結果、
「その額では確定申告しなくてもよいが、市民税の申告は必要である。期限後でも申告できる。」
とのことでした。
大まかな手順は下記です。

  1. ホームページの申告書を印刷する
  2. 申告書を記載する
  3. 源泉徴収票マイナンバーのコピーを張り付ける
  4. 郵送または窓口で提出する

これだけでした。

申告書を記載する

ホームページに公開されている申告書は茶色の枠でしたが、
モノクロ印刷でも大丈夫とのことで、印刷し、記載しました。

所得控除の記載について、年末調整と変更がない場合、空欄でもいいということで
記載したのは、住所氏名、連絡先、職業、納税方法、所得額などをです。
勤務先から市に関係書類が届いているため、改めて保険料控除や扶養控除の額を計算、記載しなくてもよいそうです。

仮想通貨の売買を記載する区分については、、
「雑」の「その他」という区分でいいということで、そこに収入と所得を記載して提出しました。
経緯費等の計算をして、所得を計算してもよかったのですが、収入と同額にしました。
(経緯費も多少の電気代だけで、1000円以下の変化だと、切り捨てで税額が変わらないかもしれない。)

郵送する

マイナンバー確認書類(通知書のコピーなど)をいれているため、普通郵便だとちょっと不安だったので
簡易書留で郵送しました。

後日、市役所から申告書の控えが送られてきました。
空欄だった所得控除の額も記載されて、あとは納付書を待つだけです。


きちんと納税しないといけませんね。

C#でlibHaruを使ってPDFを出力してみよう。その3「C#からlibHaruの呼び出し編」

さて、前回に続きC#でPDF作成できる手順を記載したいと思います。
libHaruのビルドが完了している前提になります。
ビルド手順は、前回の記事を参照してください。
stone-book.hatenablog.com

今回は、C#のプロジェクトで前回ビルドしたlibHaruのライブラリ、
libhpdf.dllを使って、libHaruのdemoに同梱されているPDF出力を目標にします。
検証に使ったソースコードは下記に公開しています。
GitHub - stone-book/libHaruApp

大まか流れは下記になります。

  1. プロジェクトの作成
  2. プロジェクトにhpdf.csとlibhpdf.dllの追加
  3. デモソースの修正と実行

プロジェクトの作成

Visual Studioを起動し、とりあえず.netコンソールアプリケーションを作成します。

ここで、ライブラリのビルドがx86である場合は、プロジェクトの設定を変更してください。

f:id:stone-book:20170911222351p:plain
プロジェクトの設定

プロジェクトにhpdf.csとlibhpdf.dllの追加

既存の項目を追加で、libHaruフォルダにある、次のファイルをプロジェクトに追加します。

libharu\if\c#\hpdf.cs

同時にプロジェクトのカレントに「libhpdf.dll」を追加します。

f:id:stone-book:20170911222719p:plain
プロジェクトの状態
作成される実行ファイルと同じディレクトリに必要なので「出力ディレクトリにコピーする」としておくと便利です。

デモソースの修正と実行

次にデモソースを実行します。demoに入っていた、TextDemoをインポートし、適当にTextDemoのMain関数を呼び出すように変更。

このままでも動作するはずですが、

Console.WriteLine("libhpdf-" + HPdfDoc.HPdfGetVersion());

これと

pdf.SetCompressionMode(HPdfDoc.HPDF_COMP_ALL);

この箇所でなぜかエラーが出ました。
内容見る限り、コメントアウトしても影響なさそうと思い、コメントアウトします。

f:id:stone-book:20170911223003p:plain
デモソースの修正
若干気持ち悪いですが・・
f:id:stone-book:20170911223407p:plain
出力結果

PDFが出力されました。
念のため、ImageDemoも同様の修正を加えて実行してみたところ動作しました。

簡単な帳票くらいなら対応できそうです。

追記(2017/9/12)

HPdfDoc.HPdfGetVersion()については、hpdf.csを修正することで対応できるようです。
Critical error detected c0000374 bei Aufruf native code von managed dll

githubにあげているソースにも反映しました。

C#でlibHaruを使ってPDFを出力してみよう。その2「libHaruビルド編」

さて、前回に続きC#でPDF作成できる手順を記載したいと思います。
libpngとzlibのビルドが完了している前提になります。
これらのビルド手順は、前回の記事を参照してください。
stone-book.hatenablog.com

大まかな流れは下記になります。

  1. ダウンロードしてフォルダ構成を整える
  2. libpngとzlibをコピー
  3. 各種ファイルの変更
  4. VS2017用 x84 Native Toolコマンドプロンプトコンパイル

フォルダ構成

公式サイトからlibHaruのソースをダウンロードしてきます。
libHaru

ダウンロード後、適当にリネームして、libpngやzlibと同ディレクトリに格納します。
コンパイルの際、相対パスで参照するためです。)

f:id:stone-book:20170910081022p:plain
フォルダ構成

libpngとzlibをコピー

前回ビルドした「libpng16.lib」と「zlib.lib」をRelease LibraryからlibHaruのフォルダにコピーします。

f:id:stone-book:20170910081656p:plain
ライブラリのコピー

これで、必要なファイルがそろいました。

各種ファイルの変更

スタートメニューからVisual Studioの中にある「VS2017用 x84 Native Toolコマンドプロンプト」を使ってビルドします。
このまま、ビルドしてみるといろいろ怒られました。一つ一つつぶしていきます。

f:id:stone-book:20170910082032p:plain
コンパイルエラー

VS2017を用いる場合は、下記のスクリプトを利用するため、環境に合わせて変更します。

libharu\script\Makefile.msvc_dll

まず、PREFIXのパスの部分をlibpngがzlibのバージョンに合わせて修正します。
コマンドプロンプトのカレントを基準とした相対パスに変更。)

!IFNDEF PNG_PREFIX
PNG_PREFIX = ../lpng1632
!ENDIF

!IFNDEF ZLIB_PREFIX
ZLIB_PREFIX = ../zlib-1.2.8

併せて、CFLAGSの箇所も修正します。libpngとzlibのincludeフォルダに指定のヘッダファイルはないので、次に変更。

CFLAGS=/MD -nologo -O2 -Iinclude -Iwin32\include -I"$(PNG_PREFIX)" -I"$(ZLIB_PREFIX)" -DHPDF_DLL_MAKE

また、LDFLAGSの箇所で、libpng13.libとなっているので、libpng16.libに変更

LDFLAGS= /LIBPATH:$(PNG_PREFIX)\lib /LIBPATH:$(ZLIB_PREFIX)\lib /LIBPATH:win32\msvc libpng16.lib zlib.lib

この状態でビルドしてみます。

f:id:stone-book:20170910083104p:plain
変更後のファイル

しかし、HPDF_3DAnnot_Set3DViewの参照エラーが出てしまいました。

f:id:stone-book:20170910083213p:plain
HPDF_3DAnnot_Set3DView参照エラー

中国のサイトで、同様に対処例?が記載されていたので参考に・・

libharu\win32\msvc\libhpdf.def

にある EXPORTS から次を削除します。

HPDF_3DAnnot_Set3DView

これで設定が完了。

VS2017用 x84 Native Toolコマンドプロンプトコンパイル

今回はx84ですが、libpng、zlibもwin32ではなくx64でビルドしている場合は、
VS2017用 x64 Native Toolを選択すれば良いと思います。

コマンドプロンプトにてlibHaruフォルダまで移動します。
(私の環境の場合、cd E:\build\libharu ですね。)
libHaruフォルダで次のコマンドを入力します。

nmake -f script\Makefile.msvc_dll

なんやかんや警告は出ますが、とりあえず完了します。

f:id:stone-book:20170910085050p:plain
ビルド完了

libhpdf.dllがlibHaruフォルダに出力されます。
私の環境では、731KB程度でした。