SSブログ
プログラミング ブログトップ
前の10件 | -

GitHub Actions で、Rust のプロジェクトをテストする [プログラミング]

GitHub Actions は、使ったこと無かったのだが、重い腰をあげてやってみる。

https://github.com/nakagami/awabi の Actions タブを開くと
「Rust」の workflow が suggest されているので
「Set up this workflow」を押下「Start commit」→「Commit new file」
で master ブランチにファイル追加
rust-github-actions.png
awabi/.github/workflows/rust.yml が作成され、しばらくすると、テストが実行され、ステータスが Failure になる。
なるほど、ファイルが追加されたら、他になにか設定しなくても動くんだ。
rust.yml の内容から、 master ブランチの push と pull request の時に実行されるということはわかった。

Fail するのは、 mecab-ipadic-utf8 が無いからなので、 rust.yml に、 sudo apt install mecab-ipadic-utf8 を追加
https://github.com/nakagami/awabi/commit/59221cb4f47dbd6ebf016928f90388e2662a443e

これで Success するようになった。

Rust のプロジェクトは cargo test でテストするように決まっているので、 GitHub Action での CI は、このパターンでいけそう。
コメント(0) 
共通テーマ:日記・雑感

git で 特定の tag にブランチを戻す [プログラミング]

普段、事故ったりハマったりするのがいやで、 git で rebase はしていない。
歴史は修正しない主義。
本当は、綺麗に rebase してコミットログを整えるほうがいいのかもしれないけど。

ところが、諸般の事情により、主義に反して、特定の tag までブランチの HEAD を戻す必要が出てしまった。

ありがたいことに、ここに答えが載っていた
https://stackoverflow.com/questions/6872223/how-do-i-revert-master-branch-to-a-tag-in-git

git checkout master
git reset --hard tag_ABC
git push --force origin master


これで、 master の HEAD を tag_ABC に設定できた。
この程度のことは、することあるかもしれないので、ここにメモっておく。

コメント(0) 
共通テーマ:日記・雑感

長く使える技術を予測するのは難しい [プログラミング]

息子が、ここ数日、迷路の深さ優先探索のプログラムを書いている。
大学のアルゴリズムのコマで説明する必要があって、プログラムを書く必要はないのだがサンプルプログラムで示せたほうが良かろうという考えらしい。

ウィンドウに迷路が表示されて、その迷路を探索する様子がグラフィカルに描かれるんだけど GUI ツールキットは AWT (プログラミング言語は Java)だそうな。

自分は、以前 Swing で GUI アプリケーションを書いたことはあったが、AWT で書いたことはない。
Swing のコードを書いていた頃(10年以上前)は、すでに AWT は「古いもの」「遅くて使えないもの」という位置づけで、そのうちなくなるものだと思っていた。そのうち「Swing はもう古い、これからは JavaFXだ」ということを言われて、「そっかー。俺の Swing の経験は無駄になっちゃったかー」と思った。

まさか、ここにきて、新しい OpenJDK から JavaFX が外され、息子が彼の生まれる前にできていた GUI ツールキットを使って迷路を描画しているとは思わなかった。

コメント(0) 
共通テーマ:日記・雑感

令和対応で不具合 [プログラミング]

振込予定日が、本来 2019-05-07 と出るべきところ 1989-05-07 と出る不具合が発生しているそうで。

北陸銀行の、このお詫びだけでなく、
https://www.hokugin.co.jp/info/important/archives/personal/2019/1625.html
類似の不具合が、 NTT データの基盤の上に乗っている地銀で発生していて、地銀で共有している NTTデータの基盤以外にも、同じようなことが発生している?

内部的なデータを、和暦の年月日で持っていて、令和1年5月7日振込を、平成1年5月7日と判定してしまうための模様。
平成の間の処理で、振込期日(返済期日)が令和になるときの表示がおかしいけど、ATM を操作した日が令和(5/1以降)だと、ほっておいても正しく表示されるんだと思う。
そうはいっても
「ああ、表示だけの問題だし、ほっておけば、5/1には直りますよ」
とは言えず、中の人は10連休がなくなってしまったのかな。

内部的に、(おそらく元号なしの)和暦で持っていて、和暦→西暦変換してるとは思わなかったが、今回の新元号対応した人たちにはどうしようもないことである。

やれ、下請けがコード書いてるだの、開発力が、だの言われているが、今回のは、テスト環境が制限されていたんだと思う。
末端のソースコードを修正していた人たちは、机上でそれっぽいところを修正しても、気軽に動作確認できるテスト環境がなかったのではないか。

そうじゃなければ、見てみたら一瞬でわかるような不具合に気づかないわけないと思うのだが・・・
もしかして、ATM 機器側で修正しないといけないものがあったの気づかなかったのかな?
ローソンの ATMだけらしいから、間違った西暦に変換してるのが ATM側のせいだとすると、それはきついな。

いずれにせよ、こんなぱっと見ダメってわかるような不具合が銀行システムで見つけられないというのは、日本の IT業界、大変なことであるな。


(追記)お、これは、原因わかってる表示の不具合なので休出しません。なのかな。そうだといいな
https://togetter.com/li/1342653
https://www.sankei.com/smp/economy/news/190429/ecn1904290002-s1.html
コメント(0) 

Java 10 が出てしまった [プログラミング]

JDK 1.0 か JDK 1.1 の頃に、状態によって四角を緑と赤に描き分ける Applet を書いたことがある。
まあ、おもちゃみたいなもので、とても書いたことがあると言えるような経験ではなかったが、
職業プログラマーとして、いつかは Java のコードを書くんじゃないかと思って来た。

Java 8 までは、この本を読んだり

Java SE8 for the Really Impatient: A Short Course on the Basics (Java Series)

Java 8 Oracle JDK をインストールしてみたりしてみたりしていたが
http://nakagami.blog.so-net.ne.jp/2014-03-22

「Java 9 では jshell なんてのが使えるんだー」
と思いながら、Java9 について何もしないまま Java 10 が出てしまった。
var で型推論するコードなんか見てもなじめそうにない。そして、あと半年すると Java 11 が出てしまうらしい。

もうだめだ。ついていけなくなった。
Perl, PHP, JavaScript, Scala といった「勉強したけど挫折したプログラミング言語リスト」の中に Java が加えられてしまった。

・・・といいつシンタックス上の変更について調べてしまう。

流行りの型推論が導入されるらしい。
Go言語だと、宣言での型の指定が後置になっていて、型の部分を省略すると推論するようになってるんだけど、
Java 10 の場合、型を書くべきところに var って書くようになっていて、それだったら型書いたほうが読みやすくない?
って思ってしまう。

もうだめだと思ったが、 Java 9 では jshell が Java 10 では型推論が使えるようになったくらいかな?

コメント(0) 
共通テーマ:日記・雑感

Ubuntu 17.10 でAngular 環境を用意する [プログラミング]

notejs とか npm とかよくわかんないから、はまるのやだなーと思って避けてたけど Ubuntu 17.10 だと、apt ではまらずにインストールできたっぽい

$ sudo apt install nodejs npm
$ sudo npm install -g @angular/cli
$ sudo npm install -g typescript
$ nodejs -v
v6.11.4
$ npm -v
3.5.2
$ tsc -v
Version 2.7.2

npm install でワーニング出て、よくわかんないけどそういうもんなの?

$ ng new my-app
$ cd my-app
$ ng serve --open

でブラウザーで http://localhost:4200/ にアクセスすると Angular のスタート画面が出た

(追記)
ここまでの手順で良さそうではあるのだが、nodejs は、もっと新しいのを入れるのがいいの?
http://jsstudy.hatenablog.com/entry/Difference-in-version-of-Nodejs
https://nodejs.org/ja/download/releases/

ここ↓を参考にして、最新にしたほうがいいのかなぁ・・・
https://qiita.com/seibe/items/36cef7df85fe2cefa3ea

やっぱり、よくわからない
コメント(0) 
共通テーマ:日記・雑感

Neo4j をさわってみる [プログラミング]

自分は macOS Sierra にインストールして使ってみたかったので
「MacでNeo4jを使ってみる」が参考になった
http://qiita.com/awk256/items/a4c7457aad103a07e5d6
これ↑を見てもらうのが良いのだが、もしページが消えちゃうと困るので
自分でやった操作をいかにメモしておく。

java8 はインストール済み

Community Edition ダウンロードページ
https://neo4j.com/download/community-edition/
の Neo4j 3.1.1 MacOS (dmg) というのをダウンロードして実行して
インストール(いつものように Application フォルダーアイコンにドラッグ&ドロップ)

Application フォルダーの「Neo4j Commmunity Edition 3.1.1」を開いて start。
http://localhost:7474/
初期の ID とパスワードは neo4j/neo4j だけどログインしたら新しいパスワードを
聞かれるので設定

コマンドシェルで
:play movie graph
を実行。
出てくるクエリ文の枠の中をクリックするとコマンドラインにコピーされるので
それを実行。
これで映画データーベースが読み込まれた。

tarball を落として動かすのは、(CentOS 7 関係なく)これ↓が参考になりそう
さくらVPS上のCentOS 7にNeo4jインストールしてローカルからアクセス出来るようにした
http://postmaster.hatenablog.com/entry/2016/04/16/085549

以前は、Java のネイティブメソッドか Rest API でアクセスしてたんだけど、
割と最近、Neo4j 3.0 から Bolt Protocol というプロトコルでアクセスできるようになった
http://www.creationline.com/lab/14847

Bolt Protocol でアクセスするデーターベースドライバーは python だと
$ pip install neo4j-driver
でインストールできるっぽい

Bolt Protocol
http://boltprotocol.org
Bolt Protocol, Version 1
http://boltprotocol.org/v1/
コメント(0)  トラックバック(0) 
共通テーマ:日記・雑感

Cassandra 3.9 をさわってみる [プログラミング]

まず java8 をインストールする
あと python という名前のコマンドで python2.7 がインストールされている必要がある

binary tarball file を使うことにする
http://cassandra.apache.org/doc/latest/getting_started/installing.html#installation-from-binary-tarball-files
cassandra の最新が 3.9 のようなので apache-cassandra-3.9-bin.tar.gz をダウンロードしてきて
$ tar zxvf apache-cassandra-3.9-bin.tar.gz
で展開。
展開したディレクトリの中の bin ディレクトリにパスを通す。
自分の場合は、
export PATH="$PATH:$HOME/apache-cassandra-3.9/bin"
みたいな感じにした。

これで
$ cassandra
でサーバー実行
$ cqlsh
でコマンドシェル実行できた
$ cqlsh
Connected to Test Cluster at 127.0.0.1:9042.
[cqlsh 5.0.1 | Cassandra 3.9 | CQL spec 3.4.2 | Native protocol v4]
Use HELP for help.
cqlsh>

使い方は↓ここら辺が参考になった
http://symfoware.blog68.fc2.com/blog-entry-1917.html

以下、自分が実行した例
cqlsh> create keyspace sample WITH replication = {'class': 'SimpleStrategy', 'replication_factor' : 1};
cqlsh> DESCRIBE keyspaces;

system_schema  system_auth  system  sample  system_distributed  system_traces

cqlsh> use sample;
cqlsh:sample> create table test (
          ...     id int,
          ...     s text,
          ...     primary key(id)
          ... );
cqlsh:sample> describe tables;

test

cqlsh:sample> INSERT INTO test (id, s) VALUES (1, 'test1');
cqlsh:sample> INSERT INTO test (id, s) VALUES (2, 'test2');
cqlsh:sample> SELECT * FROM test;

 id | s
----+-------
  1 | test1
  2 | test2

(2 rows)
cqlsh:sample>



(追記)

cqlsh は、 python 製の pip でインストールできるコマンドなので
ダウンロードした tarball の じゃなくても

sudo pip install cqlsh

でインストールできる。

macOS Sierra の場合
$ sudo easy_install -U six
で、システムの python 2.7 の six をアップグレードしないとダメかも


この /usr/local/bin/cqlsh にインストールされるコマンドを実行しても良い・・・はずなのだが

$ cqlsh
Connection error: ('Unable to connect to any servers', {'127.0.0.1': ProtocolError("cql_version '3.3.1' is not supported by remote (w/ native protocol). Supported versions: [u'3.4.2']",)})

エラーで接続できない。クライアントの要求する CQL バージョンの方を
サーバーが受け付けられないということらしい

$ cqlsh --cqlversion=3.4.2

って指定するとエラーにならないんだけどいいのかな?

~/.cassandra/cqlshrc に
[cql]
version = 3.4.2

と書いても同じらしい
コメント(0)  トラックバック(0) 
共通テーマ:日記・雑感

MongoDB にユーザー追加してユーザ認証 [プログラミング]

データーベース test_nmongo に管理者権限を持ったユーザー alice (パスワード secret)を追加

$ mongo
$ use test_nmongo

db.createUser(
{
user: "alice",
pwd: "secret",
roles:
[
{
role: "userAdmin",
db: "test_nmongo"
}
]
}
)

role には普通は "readWrite" とか "read" とか指定するみたい
https://docs.mongodb.com/manual/tutorial/enable-authentication/#create-additional-users-as-needed-for-your-deployment


ユーザー alice でログインしてみる

[mongo shell から接続する場合]

mongo -u "alice" -p "secret" --authenticationDatabase "test_nmongo"

[mongo shell で接続してから認証する場合]

mongo
> use test_nmongo
switched to db test_nmongo
> db.auth("alice", "secret")
1
>

うーんと、できてるっぽいけど、これでいいのかな・・・
コメント(0)  トラックバック(0) 
共通テーマ:日記・雑感

MongoDB の SSL 設定 [プログラミング]

ここらへん↓を参考に作業
https://docs.mongodb.com/manual/tutorial/configure-ssl/
https://github.com/retorillo/mongodb-example/blob/master/README-ja.md
http://www.utali.io/entry/2016/11/04/113830

http://nakagami.blog.so-net.ne.jp/2016-12-07
の時に Ubuntu16.04 にインストールした MongoDB3.2 で /etc/mongod.conf に設定ファイルがあることを前提に・・・

# cd /etc/ssl
# openssl req -newkey rsa:2048 -new -x509 -days 365 -nodes -out mongodb-cert.crt -keyout mongodb-cert.key
(色々入力。この時、Common Name は、検証されるので接続される IP アドレスのホスト名を入れる)
# cat mongodb-cert.key mongodb-cert.crt > mongodb.pem

/etc/mongod.conf の
net:
  port: 27017
  bindIp: 127.0.0.1

こうなっていたのを↑こう↓変更
net:
  port: 27017
  ssl:
    mode: requireSSL
    PEMKeyFile: /etc/ssl/mongodb.pem


んで、 mongo shell からは

mongo --ssl --sslCAFile=/etc/ssl/mongodb-cert.crt

でアクセス。
--sslCAFile=/etc/ssl/mongodb-cert.crt の指定がないとエラーになる
なるほどー

WARNING出るけど
mongo --ssl --sslAllowInvalidCertificates
でも接続できた
コメント(0)  トラックバック(0) 
共通テーマ:日記・雑感
前の10件 | - プログラミング ブログトップ