コマンドラインから下記を発行
(executableをつけないと、コマンドラインツールにならない)
おおこれは便利
コマンドラインから下記を発行
(executableをつけないと、コマンドラインツールにならない)
おおこれは便利
宛名書きデータ変換用perl
やっぱりperlは楽
swiftバイナリが32kbなのにkotlin jarが 1.31MBっておかしいだろ..
#!/usr/bin/perl # change Atena CSV (sjis) to kitamura # perl -f jushoChanger.pl <jusho.csv # atena23からは # 姓、名、敬称、連名、連名敬称、自宅〒、自宅住所1、自宅住所2、自宅住所3形式で SJIS CSVで書き出す use utf8; binmode STDOUT, ":utf8"; binmode STDIN, ":encoding(cp932)"; print "姓1,名1,敬称1,姓2,名2,敬称2,姓3,名3,敬称3,姓4,名4,敬称4,姓5,名5,敬称5,姓6,名6,敬称6,〒番号,住所1,住所2,住所3,会社名,部署,役職,御中 \n"; while(<>) { chomp; @i = split(/,/, $_); @j = split(/\//, $i[3]); # はげ/ほげ/えげ/ぼけ @k = split(/\//, $i[4]); # 様/// printf("%s,%s,%s,,%s,%s,,%s,%s,,%s,%s,,%s,%s,,,,%s,%s,%s,%s\n", $i[0],$i[1],$i[2], # 姓1,名1,敬称1, $j[0],$k[0], # ,名2,敬称2, $j[1],$k[1], # ,名3,敬称2, $j[2],$k[2], # ,名4,敬称2, $j[3],$k[3], # ,名5,敬称2, $i[5],$i[6],$i[7],$i[8] # 〒番号,住所1,住所2,住所3, ); }
swift版
// main.swift import Cocoa let args = CommandLine.arguments.dropFirst() guard let file = args.first, !file.isEmpty else { print("ERROR: please input filename") exit(1) } let fileName: String = "./" + file // print("filename: \(fileName)") print("姓1,名1,敬称1,姓2,名2,敬称2,姓3,名3,敬称3,姓4,名4,敬称4,姓5,名5,敬称5,姓6,名6,敬称6,〒番号,住所1,住所2,住所3,会社名,部署,役職,御中") // 姓、名、敬称、連名、連名敬称、自宅〒、自宅住所1、自宅住所2、自宅住所3形式で SJIS CSVで書き出されている if let text = try? String(contentsOfFile: fileName, encoding: String.Encoding.shiftJIS) { text.enumerateLines { (line, stop) in let item = line.components(separatedBy: ",") var sub = item[3].components(separatedBy: "/") // 連名 sub.append("") // 連名がないときに備えて4個ほど""アイテムを追加 sub.append("") sub.append("") sub.append("") var subkei = item[4].components(separatedBy: "/") // 連名敬称 subkei.append("") // 連名がないときに備えて4個ほど""アイテムを追加 subkei.append("") subkei.append("") subkei.append("") print("\(item[0]),\(item[1]),\(item[2]),,\(sub[0]),\(subkei[0]),,\(sub[1]),\(subkei[1]),,\(sub[2]),\(subkei[2]),,\(sub[3]),\(subkei[3]),,,,\(item[5]),\(item[6]),\(item[7]),\(item[8])") } } exit(0)
kotlin版
// kotlinc -d jushoChanger.jar -include-runtime src/main.kt // import java.io.File import kotlin.system.exitProcess fun main(args: Array<String>) { if(args.size!=1) { println("ERROR: please input filename") exitProcess(1) } var fileName = args.first() //println(fileName) println("姓1,名1,敬称1,姓2,名2,敬称2,姓3,名3,敬称3,姓4,名4,敬称4,姓5,名5,敬称5,姓6,名6,敬称6,〒番号,住所1,住所2,住所3,会社名,部署,役職,御中") val textFile = File(fileName).absoluteFile val lines = textFile.readLines(charset("windows-31j")) lines.forEach { val i = it.split(",") var j = i[3].split("/").toMutableList() j.add("") j.add("") j.add("") j.add("") var k = i[4].split("/").toMutableList() k.add("") k.add("") k.add("") k.add("") val s = "%s,%s,%s,,%s,%s,,%s,%s,,%s,%s,,%s,%s,,,,%s,%s,%s,%s".format( i[0],i[1],i[2], j[0],k[0], j[1],k[1], j[2],k[2], j[3],k[3], i[5],i[6],i[7],i[8] ) println(s) } }
SwiftでChartsを書く練習
参考:
Creating a Line Chart in Swift and iOS - Osian Smith - Medium
まずXcodeを立ち上げる
新規Cocoaプロジェクト>Swiftで ChartExampleプロジェクトを作成
参考ページではcocoapodsが入っていることが前提だったが入っていなかったのでインストール
"sudo gem install cocoapods
"
terminalでChartExmapleのdirectoryに移動後、"pod init
"
そこにあるPodfileを編集, "pod 'Charts'
"という行を付け加える
再度 terminalから、"pod install
"でダウンロード&インストール
そしてChartExample.xcworkspaceファイルを開き直すとChartExampleに加えてPodsというプロジェクトも含まれてくる
Main.storyboardをWクリックして編集、いくつかのアイテムを追加する グラフのところはCustom Viewを置く
Custom Viewのクラス名をBarChartViewに変更
右上のリンクボタン(下の図の真ん中の2つの輪)をおして
controlキーを押しながら、Text Fieldの中身をソースコードまでcontrol+ドラッグしてoutletを作る (下の図ではTextFieldCellになっているがそれじゃだめでTextFieldの方をドラッグしてね)
同じようにAddボタンをcontrol+ドラッグしてactionを作る
View Controllerにoutletコードを追加
storyboardのView ControllerからCustom Viewへ同様にリンクを張ってoutletを接続
最後にボタンを押したときのコードを追加して終了
// // ViewController.swift // ChartExample // // Created by Namikare Gikoha on 2019/09/09. // Copyright © 2019 Namikare Gikoha. All rights reserved. // import Foundation import Cocoa import Charts class ViewController: NSViewController { @IBOutlet weak var value: NSTextField! @IBOutlet weak var chart: BarChartView! var numbers : [Double] = [] override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view. } override var representedObject: Any? { didSet { // Update the view, if already loaded. } } @IBAction func addAction(_ sender: Any) { let hoge = Double(value.stringValue) numbers.append(hoge!) updateGraph() } func updateGraph() { var barChartEntry = [BarChartDataEntry]() for i in 0..<numbers.count { let value = BarChartDataEntry(x: Double(i), y: numbers[i]) barChartEntry.append(value) } let bar1 = BarChartDataSet(entries: barChartEntry, label: "Data") let data = BarChartData() data.addDataSet(bar1) chart.data = data chart.chartDescription?.text = "Test" } }
(上記は"highlight ViewController.swift -O html --font=Menlo --inline-css -f --enclose-pre --style=github | pbcopy
")で記事を作成して貼り付けた
こんな感じになりました
DropBoxが3コンピュータのみしか同期できなくなった
Dropboxの代わりに最適なのは? 3つの無料オンラインストレージを徹底比較 : SIerブログ
iCloud, OneDriveがあったが、iCloudはちょっとWinと連携が悪いのと別コンピュータで別ID使っていると別のiCloud IDを接続できなかったりやっぱりちょっとよくない
OneDriveはOffice365 for Business使っている都合上1TBも容量があったためそっちメインでいくことにしました
グラフを書くときいままで大昔に買ったPrism5を使っていたが、こいつはコンピュータごとのIDに紐ついていて別コンピュータで使えない
最新版にしようとすると12万!とても買えない
しかしエラーバーのいろんな書き方があってRと相性がよかった
(mean-value,sd,N)のペアを書き出すだけで実データを貼り込まずにすんだ
最近そんなのがないかなと思ってMacAppStoreをさがすとDataGraphがあった
こいつは実データを入れないと箱ヒゲ図がうまく書けないが、一方でBracketを追加したりするのがわりと簡単で、それをkeynoteに貼り付けたりするのに相性がよい
何より1万で売り切りなのがよいかな
そんでこっちでやってみることにした
こんなかんじ
Rからの実データの書き出し方法は
con <- pipe("pbcopy", "w"); cat(paste(d$ldlhdlr,d$emergency,sep="\t",file=con), sep="\n");
close(con)
を行うとクリップボードにコピーできるのでそれをその都度Dataに貼り付けている
だがあまり褒められた方法じゃないな..
ReformatYahooTransit.jar
Yahoo路線情報の画面をコピーして evernoteなどにペーストしやすくするJavaプログラム
Yahoo路線情報をsafari/chromeで開き、
ルートXを含めたところにマウスカーソルをおき、到着までの範囲をコピーしてから起動
Convert..ボタンを押すと下に表示
たとえば
「
ルート1
[早][楽][安]
17:20発→20:01着2時間41分(乗車2時間17分)乗換:1回[priic]IC優先:14,940円(乗車券8,420円 特別料金6,520円)538.1km
[reg]ルート保存
[commuterpass]定期券
[share]ルート共有
[print]印刷する
17:20
[dep] 東京 時刻表出口地図 ホテル
[line]
[train]JR新幹線はやぶさ33号・新函館北斗行
22番線発 / 14番線着
4駅
指定席:6,520円
19:33着19:57発 [train] 盛岡 時刻表地図
[line]
[train]JR山田線・宮古行
2番線発
現金:8,420円
20:01
[arr] 上盛岡 時刻表地図 」
とコピーされた文字列が、
「
17:20発→20:01着2時間41分(乗車2時間17分)乗換:1回
17:20発 東京 JR新幹線はやぶさ33号・新函館北斗行 22番線発 / 14番線着 19:33着
19:57発 盛岡 JR山田線・宮古行 2番線発 20:01着 上盛岡
」
と整形される
Binary download: https://www.axfc.net/u/3967897.jar
GitHub - vascarpenter/ReformatYahooTransit
なんでこれを作ったか?そりゃー内科学会総会に行くためさ。