音楽に関する話題、プログラムに関する話題、ジョギングに関する話題、後は日々気になったことを綴っていきます。
ザ☆ミュージシャンズ・プログラマー - Exploring Music & Programming -



こんにちは。
GOの勉強をやろうと思って
で始めました。
しかし、GOバージョンが変わって、このサイトに記載されたやり方ではだめになったようなので、動作の確認ができるまでの過程を描きます。

構成はまったく同じです。

まず、
# cd HelloWorld
# go mod init example.com/HellowWorld
# cd hello
# go mod init example.com/hello
# cd ..
# go mod edit --replace example.com/hello=./hello
# go mod tidy
	
これでようやく実行ファイル"HelloWorld.exe"を作成できました。
# go build
めでたし、めでたし


コメント ( 0 ) | Trackback ( )
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする




こんにちは。
久しぶりのブログになります。

今現在仕事が一段落して、やることがなくなり、空いた時間を使って、何か勉強ができないかと思い、以前からやりたいと思っていいた、『C#』を選びました。
50過ぎおじさんが今更MS系の言語かと思っていますが。

Terasolunaを使ったプロジェクトをやっていたので、とりあえずの目標は、サーバはJavaでクライアントを.NETクライアントで何か役に立つものを作ろう、と。

とはいえ、開発環境がクローズドの環境なだけに、Visual Studioのインストーラ or ISOがほしいなと思ったんですが、今の時代は、すべてダウンロードみたいなので、ちょっとやっかいです。
サイトをググるととりあえず、オフラインでインストールする方法を見つけました。

MSの公式サイトですが、『オフラインインストールを作成する』、です。

まずは、インストールするためのブートストラップが必要です。
勉強するためなので、Communityをダウンロードしました。

次にローカルインストールキャッシュを作成する必要があるのですが、コマンドラインで実行して取得します。
ここでは、デスクトップ開発を目的としていますので、サイトにある、最初に記載されているコマンドを実行しました。
なお、日本語で開発するので、最後のオプションは『ja-JP』としました。
Copy
vs_community.exe --layout c:\vslayout --add Microsoft.VisualStudio.Workload.ManagedDesktop --add Microsoft.VisualStudio.Workload.NetWeb --add Component.GitHub.VisualStudio --includeOptional --lang ja-JP
*vs_community.exeはダウンロードしたブートストラプ名に読み替えてください。2020/11/10時点では、『vs_community__726872709.1604461107.exe』でした。

完了すると、上記の例でいうと、『C:\vslayout』にインストール資材が格納される。
これをどうにかこうにかしてオフライン環境(クローズド環境など)へ持っていきます。
サイトに従うと、同じvs_community.exe(今回はvs_community__726872709.1604461107.exe)を実行すると合ったので、ダウンロードしたvs_community__726872709.1604461107.exeも一緒にオフライン環境に持っていって同じコマンドを実行するとネットワークエラーとなった。
しかし、オフライン環境に持っていったvslayoutの中身を見ると、同様のvs_community__726872709.1604461107.exeがあったので、こちらをクリックするとインストール画面が表示された。



キャッシュ作成時に『Web開発』と『デスクトップ開発』を選んでいたので、インストール画面ではチェックが入っています。
およそ9GBの領域が必要でした。
これでインストールを開始します。時間がかかります。。。
完了すると再起動を求められるので、従って再起動します。
再起動後にログインしてしばらくすると以下の画面が表示されます。



『起動』をクリックすると、以下の画面が表示されます。



初回はサインインの画面が出ますが、『後で行う。』をクリックして続行します。



その後に、開発環境の選択と配色テーマのが選択できます。
とりあえず、慣れた開発環境は『全般』、配色テーマは『青』を選択しました。
この設定は後で変更可能です。


これで起動するとプロジェクト作成画面が表示されます。



最初の仕事なので『新しいプロジェクトの作成』をクリックします。
次にアプリケーションのテンプレートを選択します。



全般を選んでしまったので、たくさんのテンプレートが表示されてしまったので、すべての言語となっているところからC#を選択すると絞り込まれます。


今回は試しにコンソールアプリを作ってみたいので、下の方にある『空のプロジェクト(.NET Framework)』を選びました。そして次へ。



プロジェクト名を『test1』としました。すると、ソリューション名もtest1となります。
場所はデフォルトのままにしました。この場所にtest1プロジェクトが作成されます。



スクラッチで1から書いてみたいので、まずはプロジェクト→新しい項目の追加をクリックします。



中央辺りに『コードファイル』という項目があるのでクリックして、名前を簡単にtest1.csとしました。



作成をクリックするとコードの画面が表示されます。



以下を入力します。
Copy
Using System;
class Test {
  public static void Main() {
    Console.writeLine("はじめてのC#です。");
  }
}


デバッグ→デバッグなしで開始をクリックすると、ビルドが開始して、アプリケーションが実行されます。





オフラインのインストールから、アプリケーション作成のほんのさわりまでを確認しました。
これから、一人プロジェクトをはじめていきたいと思っています。




コメント ( 0 ) | Trackback ( )
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする




こんにちは。
以前に、コード表示のハイライトのやりかたで、SyntaxHighlightを紹介しました。
しかし、表示させると重く感じたので、highlight.jsも使ってみようと思いたちました。
ライブラリの読み込みは同様にCDNを使いました。

<cdnjs>
Copy
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/highlight.js/10.3.1/styles/atelier-heath-light.min.css">
<script src="//cdnjs.cloudflare.com/ajax/libs/highlight.js/10.3.1/highlight.min.js"></script>

jsdelivr
Copy
<link rel="stylesheet" href="//cdn.jsdelivr.net/gh/highlightjs/cdn-release@10.3.1/build/styles/default.min.css">
<script src="//cdn.jsdelivr.net/gh/highlightjs/cdn-release@10.3.1/build/highlight.min.js"></script>

highlight.jsだけでは行番号が表示されないため、行番号を表示するためのライブラリhighlights-line-numbers.jsも一緒に読み込みました。

<cdnjs>
Copy
<script src="//cdnjs.cloudflare.com/ajax/libs/highlightjs-line-numbers.js/2.8.0/highlightjs-line-numbers.min.js"></script>

jsdelivr
Copy
<script src="//cdn.jsdelivr.net/npm/highlightjs-line-numbers.js@2.8.0/dist/highlightjs-line-numbers.min.js"></script>

ライブラリを読み込んだだけでは利用できないので、ロードしてあげます。
Copy
<script>
hljs.initHighlightingOnLoad(); // highlight.jsの利用開始
hljs.initLineNumbersOnLoad(); // highlights-line-numbers.jsの利用開始
</script>

CSSに以下を追加しました。
Copy
.hljs.hljs-line-numbers {
    -webkit-touch-callout: none;
    -webkit-user-select: none;
    -khtml-user-select: none;
    -moz-user-select: none;
    -ms-user-select: none;
    user-select: none;

    text-align: center;
    color: #ccf;
    border-right: 1px solid #CCF;
    vertical-align: top;
    padding-right: 20px;
    padding-left: 20px;
}
.hljs-ln-code {
    margin: 00px;
    padding: 10px;
}
table.hljs-ln {
  white-space: pre;
  border-width: 0;
  margin-bottom: 10px;
}
table.hljs-ln .hljs-ln-line {
  border-width: 0;
  padding-left: 10px;
}
table.hljs-ln .hljs-ln-line.hljs-ln-numbers {
  padding-right: .5em;
  border-right: solid 2px #ccff00;
  text-align: right;
}
このままの設定で
でコードを括って表示させると、ここで表示されているようになります。
SyntaxHighlight.jsを使うよりCSSの設定が必要になりますが、細かい設定がわかりやすいようになっています。



コメント ( 0 ) | Trackback ( )
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする




こんばんは。

テンプレートでjQueryのCDNを追加して動作確認をしました。
$(this)が思ったように使えなかったので記録しておきます。

CDNは以下のものを使用しました。
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>

サンプルのHTMLです。
問題をクリックする度に解答が表示・非表示を繰り返すものです。
  •  
    問題
     

最初は簡略化させようと思い以下のようにやりました。
<script type="text/javascript">
	$(function(){
	  $(".question").on("click", () => {
		  $(this).siblings(".answer").toggle();
    });
  });
</script>

駄目なバージョン(注:scriptの関係上class名は変えています)
  • 問題

これではなぜか動作しませんでした。$(this)に問題あるのかと思い、同じ用に$(".question")とすると動いたんですが、複数ある場合は当然ながら同じclass属性も同じ動作になっていしまいます。ものは試しにfunction()を使ってやったところ動作しました。
<script type="text/javascript">
	$(function(){
	  $(".question").on("click", function() {
		  $(this).siblings(".answer").toggle();
    });
  });
</script>

うまくいったバージョン
  • 問題

なぜかは不明。



コメント ( 0 ) | Trackback ( )
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする




SyntaxHighlighterのBrush(class="brush: brush-name")のまとめ記事です。
バージョンは本日時点(2020/9/29)のものです。

namealiascdn
AS3actionscript3,as3shBrushAS3.min.js
Apple ScriptapplescriptshBrushAppleScript.min.js
bashbash, shellshBrushBash.min.js
C#c#, c-sharp, csharpshBrushCSharp.min.js
Cold Fusioncoldfusion, cfshBrushColdFusion.min.js
Ccpp, cshBrushCpp.min.js
CSScssshBrushCss.min.js
Delphidelphi, pascal, passhBrushDelphi.min.js
diffdiff, patchshBrushDiff.min.js
Erlangerl, erlangshBrushErlang.min.js
GroovygroovyshBrushGroovy.min.js
JavaScriptjs, jscript, javascriptshBrushJScript.min.js
JavajavashBrushJava.min.js
JavaFXjfx, javafxshBrushJavaFX.min.js
Perlperl, Perl, plshBrushPerl.min.js
PHPphpshBrushPhp.min.js
Plainplain, textshBrushPlain.min.js
PowerShellpowershell, psshBrushPowerShell.min.js
Pythonpy, pythonshBrushPython.min.js
Rubyruby, rails, ror, rbshBrushRuby.min.js
SASSsass, scssshBrushSass.min.js
ScalascalashBrushScala.min.js
SQLsqlshBrushSql.min.js
Visual Basicvb, vbnetshBrushVB.min.js
XMLxml, xhtml, xslt, htmlshBrushXML.min.js


コメント ( 0 ) | Trackback ( )
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする




こんにちは。
今日は3つ目の記事更新です。
今回は、我らがgooブログでSyntaxHightliter (CDN版のJavascriptライブラリ)の試験です。
とりあえず、PC版で試してみました。
SyntaxHighlighterを使うには、JavascriptとCSSが必要不可欠です。
JavascriptとCSSを使うためには、カスタムテンプレートでないと駄目で、今まで使っていたテンプレートだと、レイアウト変更しかできなかったため、やむなく、適当なカスタムテンプレートを使いました。
基調はやはりブラックにしました。

まずは、編集画面から、テンプレート設定をクリックします。



次に適当なテンプレートを選択します。カスタムから選んでください。



後は、HTML編集画面で、cdnjsのサイトで好みの言語タイプを探してJavascriptとCSSのリンクを記述及びJavascriptの若干のコードを書いてから変更を保存します。
ただし、shCore.js(shCore.min.js)shCore.css(shCore.css)は必須のようです。



以下のようになります。

CSS部分(抜粋) 
修正前
<link rel="stylesheet" type="text/css" charset="UTF-8" href="<{$css}>" />
<link rel="alternate" type="application/rss+xml" title="RSS" href="<{$rss_url}>" />
修正後(とりあえず、デフォルトだけ入れました)
<link rel="stylesheet" type="text/css" charset="UTF-8" href="<{$css}>" />
<link rel="alternate" type="application/rss+xml" title="RSS" href="<{$rss_url}>" />

<link type="text/css" rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/SyntaxHighlighter/3.0.83/styles/shCore.min.css" />
<link type="text/css" rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/SyntaxHighlighter/3.0.83/styles/shThemeDefault.min.css" />
Javascript部分(抜粋) 
修正前
<{$cjava}>
修正後(とりあえず、C言語用を入れました)
<{$cjava}>

<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/SyntaxHighlighter/3.0.83/scripts/shCore.min.js"></script>
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/SyntaxHighlighter/3.0.83/scripts/shBrushCpp.min.js"></script>
</script>
<script type="text/javascript">
    SyntaxHighlighter.all(); // ここが重要です!!
</script>

で後は、HTMLのコードを書いて終了です。
以下はC言語のコードサンプルです。
#include 
#include 
int main(void) {
    printf("Hello world!
");
}

出力結果
#include 
#include 
int main(void) {
    printf("Hello world!
");
}
Brush nameについてはいずれまとめようと思いますが、手っ取り早くは、
jsファイルのe.aliasesの配列の名前を使えば問題ないかと思います。

ということで、gooブログでもSyntaxHightlighterが使えました!!\(^o^)/
知ってました?よね。


コメント ( 0 ) | Trackback ( )
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする




何だか可愛いUmbrella。

近頃周りでJavascriptについての会話が耳にはいり、ウザい日々を過ごしています。
基幹系の業務でモックを作っているようです。
ということで、最近のJavascrip事情を調べてみたところ『Umbrella』にたどり着きました。
jQueryやangular止まりだったので、何だか新鮮な感じです。

UmbrellaはjQueryとの後継というか、さらにライトウェイトになったライブラリです。jQueryからの移行が楽だとの事なので少し試してみました。
が、一筋縄にはいきませんでした。いきなりつまづきました(笑)
$をuに変えるだけなのですが、jQueryで最初にやっていた
$(function(){
処理コード
});
は余計なようです。
例えば、buttonタグでクリックした時に『Hello world』を表示させた場合を例にします。 まずはボタンを表示します。
<button>OK<button>
jQueryでは次のようになります。
$function(){
    $('button').on('click',
    function(){
        alert('Hello world');
    })
});
Umbrellaで書く場合は以下のようになります。
u('button').on('click',
function(){
    alert('Hello world');
});
周りのものが不要になりスッキリした感があります。 しかし移行には注意が必要です。


コメント ( 0 ) | Trackback ( )
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする




<head><script type="text/javascript" src="/blog/scripts/shCore.js"></script><script type="text/javascript" src="/blog/scripts/shLegacy.js"></script><script type="text/javascript" src="/blog/scripts/shAutoloader.js"></script><script type="text/javascript" src="/blog/scripts/shBrushXml.js"></script><script type="text/javascript" src="/blog/scripts/shBrushCss.js"></script><script type="text/javascript" src="/blog/scripts/shBrushJScript.js"></script><script type="text/javascript" src="/blog/scripts/shBrushPerl.js"></script><script type="text/javascript" src="/blog/scripts/shBrushPhp.js"></script><script type="text/javascript" src="/blog/scripts/shBrushPython.js"></script><script type="text/javascript" src="/blog/scripts/shBrushRuby.js"></script><script type="text/javascript" src="/blog/scripts/shBrushPowerShell.js"></script><script type="text/javascript" src="/blog/scripts/shBrushBash.js"></script><script type="text/javascript" src="/blog/scripts/shBrushSql.js"></script><script type="text/javascript" src="/blog/scripts/shBrushVb.js"></script><script type="text/javascript" src="/blog/scripts/shBrushPlain.js"></script><link type="text/css" rel="stylesheet" href="/blog/styles/shCore.css"/><link type="text/css" rel="stylesheet" href="/blog/styles/shCoreDefault.css"/><script type="text/javascript">SyntaxHighlighter.config.tagName = "code";SyntaxHighlighter.config.stripBrs=true;SyntaxHighlighter.config.bloggerMode=true;SyntaxHighlighter.all();</script></head>
只今、某所から業務構築の話をもらっています。
簡単に言うと、発注データ、納品データ、出荷データをCSVとしてデータ管理するというものです。
インプットがCSVの生データだけではなく、ExcelやPDFも対象とします。
おそらくLAMP(PはPHPね)環境だと思われるので、PHPでExcelとPDFが処理できるかを試してみました。
PHPのExcelのモジュールとしてPHPExcelを試してみました。

試した環境は以下の通りです。

Linux:CentOS release 5.4 (Final)
Apache:Apache/2.2.22
MySQL:14.12
PHP:5.3.14

PHPExcelというモジュールがあったので、それようにPHPをリコンパイルしました。

# =========================
# phpコンフィグレーション
# =========================
./configure \
  --with-apxs2=/usr/local/apache2/bin/apxs \
  --with-mysql \
  --enable-sqlite-utf8 \
  --with-sqlite \
  --enable-mbstring \
  --enable-calendar \
  --enable-zend-multibyte \
  --with-oci8=shared,instantclient,/usr/local/lib/instantclient_11_2,11.2.0 \
  --with-pdo-oci=shared,instantclient,/usr/local/lib/instantclient_11_2,11.2.0 \
  --with-curl \
  --enable-zip \
  --with-gd \
  --with-jpeg-dir \
  --with-freetype-dir \
  --with-png-dir \
  --with-xpm-dir


PHPはPHPExcelで決まりですね。

Excel_Reviserというのもありましたが、動作しませんでした。
業務の仕様としては、Excelのバージョンは2000(拡張子がxls)~2010(拡張子がxlsx)ということで、
PHPExcelは意外と大丈夫でした。

# ====================
# PHPExcelのサンプル
# 参考:PHPExcelでExcel2000/XP形式のファイルをつくる
# ====================

require_once 'PHPExcel.php';
require_once 'PHPExcel/Writer/Excel5.php';
# Excelオブジェクト生成
$excel = new PHPExcel();
$excel->setActiveSheetIndex(0);
# セルの内容を変更
function setExcelData(&$sheet, $col, $row, $data)
{
  $sheet->setCellValue($col.$row, $data);
  $sheet->getColumnDimension($col)->setAutoSize(true);
  $style = $sheet->getStyle($col.$row);
  $style->getFont()->setName('MS Gothic');
  $style->getBorders()->getRight()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN);
  $style->getBorders()->getLeft()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN);
  $style->getBorders()->getTop()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN);
  $style->getBorders()->getBottom()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN);
  $style->getFill()->getStartColor()->setARGB('FF808080');
}
# 現在のシートを取得し、シート名を変更する(オリジナル)
$excel->getActiveSheet()->setTitle('これはテストです(-∀-)');
$sheet = $excel->getActiveSheet();
$row = 1;
setExcelData($sheet, 'A', $row, '名前');
setExcelData($sheet, 'B', $row, 'フリガナ');
$row++;
setExcelData($sheet, 'A', $row, '鈴木一郎');
setExcelData($sheet, 'B', $row, 'スズキイチロウ');
$row++;
setExcelData($sheet, 'A', $row, '田中太郎');
setExcelData($sheet, 'B', $row, 'タナカタロウ');
# 保存先定義
$savefile = 'list_'.date('Ymd').'.xls';
$savepath = '/tmp/';
# Excel2007より前の形式で保存する
$writer = new PHPExcel_Writer_Excel5($excel);
$writer->save($savepath.$savefile);
# ダウンロード
header("Content-Type: application/vnd.ms-excel");
header("Content-Disposition: attachment; filename=${savefile}");
header("Content-Length: ".filesize($savepath.$savefile));
# 出力
readfile($savepath.$savefile);
exit;


PDFはというと、PHPのモジュールとしては見つけることができませんでした。
いろいろと探した挙句、xpdfにたどり着きました。
とはいえ、pdftocsvなどはないので、pdftotextで代用するしかなく、コマンドラインでCSVの抽出ということになりそうです。
Xpdfのサイトはこちらです。

実験はこんなんで。
# =========================
# PDFTOTEXTのサンプル
# =========================




コメント ( 0 ) | Trackback ( )
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする




Windows Power Shellの覚書です。

★Excelの列挙型を確認する

1. Office プライマリ相互運用機能アセンブリをロードします。
 こんな感じ


PS C:\>[Reflection.Assembly]::LoadWithPartialName("Microsoft.Office.Interop.Excel")
GAC Version Location
--- ------- --------
True v2.0.50727 C:\WINDOWS\assembly\GAC_MSIL\Microsoft.Office.Interop.Excel\14.0.0.0__71e9bce111e9429c\Microsoft.Office.Interop.Excel.dll


2. 列挙型(例えばXlLineStyle)を一覧する


PS C:\>$xlLineStyle = [Microsoft.Office.Interop.Excel.XlLineStyle]
PS C:\>[enum]::GetValues($xlLineStyle) | %{ "{0,-20}: {1}" -f $_, [int]$_ }









xlContinuous: 1
xlDashDot: 4
xlDashDotDot : 5
xlSlantDashDot : 13
xlLineStyleNone: -4142
xlDouble: -4119
xlDot : -4118
xlDash: -4115



3. 列挙型を使ってみる
サンプル表(ファイル名:sample.xls、シート名:Sheet1)







A
1みかん
2りんご
3なし
4もも
5バナナ

# アセンブルします
PS C:\>[Reflection.Assembly]::LoadWithPartialName("Microsoft.Office.Interop.Excel")
# Excel.Applicationを生成します
PS C:\>$xls = New-Object -ComObject Excel.Application -property @{DisplayAlerts=$false}
# ワークブックを開きます
PS C:\>$wb = $xls.Workbooks.Open((Dir .\sample.xls).Fullname)
# ワークシートを取得します
PS C:\>$ws = $wb.Worksheets.Item("Sheet1")
# 列挙型XlDirectionを取得します
PS C:\>$xlDirection = [Microsoft.Office.Interop.Excel.XlDirection]
# A2の参照を取得して、値の入っている最下段のセルへ移動します
PS C:\>$range = $ws.Range("A2").End($xlDirection::XlDown)
# 移動先のアドレスと値を参照して、「バナナ」の行が参照できていればOK!!
PS C:\>"場所:{0}、値:{1}" -f $range.Address(), $range.Text
場所:$A$5、値:バナナ

MSDNのサイトMSDNのサイトでは、PowerShellではこうしろという指針(?)みたいな例がありました。
まぁ、これでもいいかなと思いましたが、ここは意地でも簡単にやるぞという意気込みで発見した次第です。

今日の収穫は以外にも大きかったです。

では。




コメント ( 0 ) | Trackback ( )
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする




先週からWindows PowerShellの勉強を始めました。

現在はV2.0ですが、結構前から出てたんですね。
ちょうどその頃はJScriptやVBScriptのWSH開発に勤しんでました。
もっと早く知ってれば、バリバリ使ってたでしょう。

いやー、これは使えるね。Pythonライクなインタラクティブシェルも使えてとっても重宝しています。
今までWSH環境でJScriptやVBScriptをやってきましたが、この知識も最大限に使えます。
これでWindowsシステム管理者スキルアップですかね。
といっても、メインホストはOracle Solarisなんですがね(藁

Perl、Ruby、Python(Jthon)、PHP、GroovyにつづきPowerShell。
ネーミングがいいじゃないですか。後追いのシェルだけにいろんなスクリプトの言いどころ取りですね。
また、オブジェクト指向を意識していたり、.NETやC#の知識なんかもふんだんに使えるみたいですね。

以下は覚書。

Windows PowerShell起動時の設定について
vimでのps1のシンタックスハイライト等について




コメント ( 0 ) | Trackback ( )
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする



« 前ページ