Vimかサクラエディタで固定長フォーマットを相手にする

( ´_ゝ`)ノシ

yoshitiaです。

VimConf 2017 は例年と違うようなのでちょっと期待してます。

 

固定長フォーマットって? 

以下のリンク参照で。

http://www.ipc.tohoku-gakuin.ac.jp/simlab/comlec/comop/prog05b.html

 

面倒な点

・行の左端から何番目かが重要

・改行コード無しの1行の場合、pagedownキー・pageupキーは無力。

 

Vimの場合

大体基本機能でok。

・フォーマット頭部分にカーソル移動

    固定長フォーマットは大体頭部分にどのフォーマットか判別するための値があるので

   それを指定して検索。

    nまたはNで前後の検索結果にカーソル移動。

 

・指定の桁数に移動

例: フォーマット開始桁から101桁目の場合。

Vimのノーマルモードのコマンドは使うコマンドの前に数字を入力すると

数字の回数だけ操作を繰り返す。

100hと入力するとカーソルが100桁分移動する。

サクラエディタの場合

・フォーマット頭部分にカーソル移動

    検索でやる。

    一度検索したらF3キーまたはShift+F3キーで

    前後の検索結果に移動できるので便利

 

・指定の桁数に移動

例: フォーマット開始桁から101桁目の場合。

基本のショートカットにはなさげなので

 マクロを用意する。※サクラエディタにはマクロ機能があります。

今回はカーソル移動をまとまった回数移動できるマクロを使います。

固定長フォーマットのファイルでカーソル移動するには

左右にカーソルキー100回分を1回のキー操作で移動できたら便利。(1000回分もありかも)

S_Right(0); // カーソル右移動
S_Left(0); // カーソル左移動

拡張子macのテキストファイルを右移動用、左移動用を作って

一回のキーで移動させたい回数コピペする。

サクラエディタのマクロでループさせる方法見つけられなかったので

詳しい人記事とか書いてくれないかなぁ。

nagoya-neko.com

あとはショートカットキーにマクロを割り当てて

ショートカット一回で100文字分移動とか1000文字分移動できるようにする。

その他、サクラエディタのマクロは以下のページ内にあるリンク先にマクロ構文があります。

http://sakura-editor.sourceforge.net/htmlhelp/HLP000107.html

マクロは今回の様に何回も同じキーボードショートカットを繰り返すときに力を発揮します。

例えば特定の単語の頭に余分に1文字ついていて、コピー&ペーストをしてたから

何箇所も修正する必要がある場合、

マクロの記録でF3, Deleteの操作を記録、

後は1回だけ特定の単語を検索してからマクロ実行を繰り返せばokです。

如何に繰り返しの操作になる所を見つけるかがポイントです。

あとがき

私がVimのtips記事を書くときに

サクラエディタでの操作方法を併記することがあるのは

「特定のエディタの機能を覚える」ではなく、

テキストエディタの機能を覚える」ことを意識しているからです。

新しいエディタを使う必要がある時役に立ちます。

忙しい人のRuby on Rails 5.0

( ´_ゝ`)ノシ

yoshitiaです。

スタートアップテクノロジーさん主催のRuby on Railsもくもく会

(直近の会は定員枠全部埋まる盛況でした。)

に参加して

Ruby on Railsチュートリアル

少しずつ消化しています。

startup-technology.connpass.com

Railsチュートリアル

しっかりしたやり方を覚えるには凄く素晴らしいのですが

プログラミングはじめての人だと結構詰むので

一通りコピペしたらその日で軽く動くところまでは

行く程度の内容を並べてみます。

 

環境構築について

この記事ではCloud9のみで記述しています。

Cloud9でなければRuby on Railsが出来ないわけではありませんが

環境構築の経験がないと厳しいです。

Cloud9の利用が難しい場合は近所で開催されているIT系の勉強会か

詳しい人に手伝ってもらってください。

 

プログラミングで最初にぶち当たる壁はプログラムやアプリケーションを

作れるようにコンピュータをセッティングする環境構築です。

とにかくプログラミングを体験してみたいけど環境構築が難しいという話であれば

OS選ばないのならJavaScript

Windowsならコマンドプロンプトからのbatファイル作成・Excel VBA

MacLinuxであればシェルスクリプト

これらから始めるのはアリだと思います。

参考リンク: Cloud9入門(ドットインストール)

https://dotinstall.com/lessons/basic_c9

 

環境構築

railstutorial.jp

Cloud9。以上。

(登録に要クレジットカード。この記事の範囲内の使い方なら料金は発生しない)

2017/11/11 クレジットカードを持ってない場合、Vプリカのカード番号でもOKみたいです。

 

リンク先の1.2.1から1.2.2まで完了できれば最低限の準備が整います。

$ gem install rails -v 5.0.3

時々こんな感じで$マークの後にgemやらrailsやら書いてある説明があった場合は

Cloud9のワークスペース画面下にあるbashと書いてる辺りに

$マークの表示があるところがあるのでそこに$から後ろの文字を入力して

Enter押して下さい。って意味になります。

ディレクトリとファイルのリストはCloud9のworkspace画面の左側に表示されているのでその中のファイルをダブルクリックするとファイルの中身が表示されます。

ファイルの中身はメモ帳などと同じように入力が可能です。

Ctrl+Sで保存もできます。

最初のRailsアプリ

環境構築が出来たら早速Railsアプリの作成になります。

railsguides.jp

Railsガイドの

3.2 ブログアプリケーションを作成する

ここから読み進めつつやっていけばokです。

railsを動かしてみる場合は

Railsガイドで $ rails new blog している場合、

$ cd ~/workspace/blog

を入力してEnter

$ rails server -b $IP -p $PORT

 を入力してEnterをした後に

Cloud9の画面上部にあるPreviewをクリック、

Preview running Applicationをクリック。

成功するとrailsアプリの動いている画面が確認できます。

 止めるには rails server~を入力した部分をクリックした後に

Ctrl+Cです。

ここまで一通りできればrails newから始めるタイプの参考書の内容は

大体始められると思います。

 

では良いRailsライフを。

その他: 説明していない事

この記事では最低限の事しか書いていませんが

他にも覚えることはあるので検索のヒントになる単語だけ置いておきます。

Gemfile

Gemfile.lock

bundle install

bundle update

git コマンド

git config --global

git init

git add -A

git commit -m

git remote add

git remoto set-url

github

ssh key

公開鍵

秘密鍵

git branch -b

git checkout

git checkout -f

git push

git pull

heroku

heroku toolbelt

デプロイ

basic認証

Vimでウガンダに寄付してvim onlineに名前を載せる

yoshitiaです。

とある研修でVimに出会ってから大体10年になるので

記念に寄付をしたわけで。

正直な話vim onlineに名前を載せたかったもので・・・。

 

ちょっとやり方失敗したのでその記録を。

 

Vim hall of honourに名前を載せる条件

・100ユーロ以上の寄付を行う

・寄付後、メールでregistration keyが届くので

それをvim onlineで作成したアカウントにに入力

 

 寄付を行うやり方で失敗した。

paypalのdescriptionを"Vim registration"にして寄付しないと

条件を満たさないっぽい。

 

最初ICFFのサイトから寄付した。

 

改めてvim onlineのリンクから寄付を実施。

無事Vim hall of honourに名前を載せることができました。

 

オチ

Q. やり方間違えた寄付はどうしたの?

A. 一旦寄付したものをやっばなし、とやるのもアレなんで

訂正せずにそのまま寄付。

Ruby on Railsでhttpサーバgemの指定

( ´_ゝ`)ノシ

 MS de:codeの2日目の記事書いてない、

と思い出したらもう8月末orz

de:codeは参加者多いから誰かが書いてると思うので

私が書かなくてもいいな(言い訳)

 

本題。

railsチュートリアル(rails5.0対応版)でpumaの設定をセットしたら

pumaはwindowsに対応してない?らしくてエラーが出るようになった。

ローカルで軽く動作確認したいだけならwebrickで十分なので

rails serverでwebrickを指定して起動できる方法を探したらあった。

対象gemバージョン: rack-1.6.0beta later

$ RACK_HANDLER=webrick rails s

 これで起動させればwebrickで起動する。

rackのバージョンは

$ rake about

で確認できます。

RACK_HANDLERについて

gemのrackで利用する環境変数

値が指定されている場合は指定されているgemを利用する。

指定されていない場合の動作はpuma > thin > webrickの優先度で

設定があるか確認してhttpサーバを起動する。

 

お世話になってる勉強会

今年の7月くらいから株式会社スタートアップテクノロジー

@naoki_m1006さんが主宰されている

【初心者歓迎!】Ruby on Railsもくもく会@渋谷

(リンクは2017/08/19開催時の募集。)

に何度か参加しています。

今のところ土曜日の14時開催が基本のようです。

html?それRailsで使うんですか?

レベルの初心者の方も参加されてるので

必要なのは案内通りやる気、PC、教材(これは無くてもなんとかなる)です。

早く一通り覚えたい。

MS de:code2017 1日目に参加

yoshitiaです。

今年のアップデートでkindleに音読機能付いた情報にガタッとなっています。

 

本記事はde:code 2017 1日目に参加したセッションの記録です。

 今回のyoshitiaの目当てはAIより開発手法まわりの話でした。

基調講演

初参加でよく知らなかったのですが

de:codeは米国で開催されているイベント MS build の内容を

日本でも紹介するものらしい。(+日本向けの追加セッション)

メインテーマとしては「AIスゲー」だった気がする。

デモではスピーカーの方が滞在先のホテルで見つけてきた落ち葉を

AIで品種判定してた。

 

『変わらない開発現場』をかえていくために ~エンプラ系レガシー SIer のための DevOps 再入門~

 内容は開発手法の紹介ってよりSIerに開発手法やソフトウェアの更新を行う上で

考慮することは、って話でした。

雑に言うと軍隊が装備を更新したり新装備に合わせた部隊編成変更するには、

みたいなノリ。

内容はweb記事で確認できます。

blogs.msdn.microsoft.com

 

 DevOps でリードタイムを 8 か月から最短 1 週間まで短縮!! マネージャや開発チーム変化の赤裸々話

こちらはwebでネタにされる典型的なタイプのSIer

段階を踏んで少しずつDevOpsの手法を取り込んでいった苦労話です。

新しい技術を導入するのは外部から人材呼ぶくらい思い切らないと

厳しそうだなぁ。

 

channel9.msdn.com

日本企業の生産性を根本から改善する 8 つの習慣とその事例

 DevOps等2000年以降色々と出てくる米国から発信されてくる

開発手法について日本が導入する場合の困難について解説しています。

日本の開発現場は他国より不確実性忌避と長期志向が高いそうです。

言葉をくだくと、まずはやってみよう・駄目元でチャレンジを簡単に認めない、

一旦決めたものは簡単に変えたがらない傾向です。

それがいいか悪いかは人それぞれだと思いますが

新しい開発手法を受け入れたり生産性上げる目的には向かないので

取り入れていきたいものが8つの習慣だそうです。

詳細は以下のリンクで。

simplearchitect.hatenablog.com

 

War is over : ブラウザエバンジェリスト達とWebの未来を語ろう

MicrosoftgoogleMozillaのブラウザまわりに関わってる人が

集まって話してるってのが時代変わった感あった。

webでもコンパイルって単語が当たり前になってきてるのか・・・。

MS de:code2017 前夜祭に参加

( ´_ゝ`)ノシ

yoshitiaです。

MS de:code に参加してきました。

あれ?そろそろ一ヶ月経ちそうだ。

本記事はその前夜祭の記録です。

そろそろ記憶もあやしいのでupしよう。

 

基調講演

全身にLED貼り付けたダンサーさんがパフォーマンスしたと思ってたら

ダンサーであり技術者の方だった。

活動当初はLED500個くらいだったらしいが

今は5000個のLEDを制御してるらしい。

これは数学必要な案件ですわ。

他にはタチコマが出てきた。

特徴的な機能は

自然言語処理での応答(Siriとかそういうのと似たようなやつかな?)

・並列化機能?

 タチコマのセンサーに物体を認識・記憶させるときに

 声で物体についての情報を教えると

 ネットワークでつながっているタチコマとその情報を共有できる。

 (センサーで認識した物体の情報と教えられた物体の情報のみ)

 

将来的には数十体のロボットに並列化機能を搭載して

ロボットAIの学習時間短縮に利用されたりするんだろうなぁ。

 

 

基調講演後は3つのサブステージから興味を持った講演を聴くスタイルに。

 

サブステージ講演1

『遅咲きエンジニアのキャリアプランニング』とかそういうタイトルだったと思う

ゼロからプログラミングを始める際に選択する言語として熱いPHP推しをしていた。

なぜPHPなのかって理由は講演者の方のweb記事に書いてあります。

 

サブステージ講演2

ARでスポーツ用デバイス作成している方の開発の軌跡。

まだデバイスがごつくて普及難しいと言われたりしてるのに

それを装着してドッジボールばりに激しく動く競技作ろうとしてるそうで。

控えめに言ってマジキチです。(ほめ言葉)

 印象に残ってるのは

攻撃でARのエフェクト出すとき、

必殺技モーションで出せるようにモーション登録をして

一般テスターの方に試してもらったら

登録したモーションに合う動きができなくて

「壊れてるんじゃないですか?」って言われたのが

すごくつらかったと。

※人間はじっと座ってるときでも重心が常に動くように

体ができてるのでコンピュータに同一モーションと

判断されるレベルでの同じ動きをするのが難しい。

と言うか武術の達人が目指す境地。

同一モーションと判定する基準のさじ加減が厳しいと達人の世界になるし、

甘くしすぎると関係ない動きまで該当のモーションと判断されるという・・・。

Vimのコマンドでテキスト整形

※本記事はVimの基本操作の話です。プラグインは使用しません。

 

( ´_ゝ`)ノシ

yoshitiaです。

ブログトップ画像を変更しました。

GWにお出かけしたときのフッジサーン/(^o^)\です。

どうも桜とか富士山とかそういうのじゃないと

写真取る気起きない性分みたいです。

 

本題。 

今回はSQLのCREATE文からカラムのコメントに記述されているカラム名を取り出す、

これをVimで行う手順を書いてみようと思います。

(postgreSQL, pgAdminのSQLビューから取り出す想定)

Vimの起動・保存・入力・終了がわかっていれば理解はできるかと。

 

1. 上下の余分な行を削除

以下のsqlpostgresqlの公式ドキュメント

https://www.postgresql.jp/document/9.4/html/sql-createtable.html

から取ってきて雑にコメントを後ろに追加しただけになります。

取り出したいのはフィルム番号、タイトル...の部分です。

CREATE TABLE films (
    code        char(5), -- フィルム番号
    title       varchar(40), -- タイトル
    did         integer, -- ディストリビュータid 
    date_prod   date, -- リリース日
    kind        varchar(10), -- 種類
    len         interval hour to minute, -- リリース日からの経過時間
    CONSTRAINT code_title PRIMARY KEY(code,title)
);

 pgAdminのsqlビューだともう少し上下に余分なものがあります。

Vimで上下の余分な行を取り除くときは以下の操作を行います。

ノーマルモードで取り出したい部分の下の行に移動させて

で行頭に移動。

次に dG を押します。

dGのdは削除を指定、続くG(Shift+g)で

「カーソルからファイルの末尾まで」の範囲指定を行っています。

 

次に gg でファイル先頭にカーソル移動。

続けてdd と入力すると1行削除が実行されます。

続いて.(ドット)を取り出したい部分より上の行がなくなるまで連打します。

.(ドット)は直前に実行したノーマルモードのテキスト編集操作を繰り返します。

Vimの.(ドット)コマンドについてはwebに沢山記事があるのでweb検索すると幸せになれます。

 

必要なコメントがある行以外を抜くと次のようになります。

    code        char(5), -- フィルム番号
    title       varchar(40), -- タイトル
    did         integer, -- ディストリビュータid 
    date_prod   date, -- リリース日
    kind        varchar(10), -- 種類
    len         interval hour to minute, -- リリース日からの経過時間

 

2. コメント以外の部分を取り除く

 1の結果からコメント以外の部分(--より左側)を取り除きます。

各行のコメント開始位置がそろっていないのが面倒です。

結論から言うとexモードで置換します。

1より慣れが必要なのでこういうことがVimでできる、という紹介になります。

今はVimに限らず高機能なテキストエディタがあるので

同じ事が利用中のテキストエディタで可能か調べるのは学びがあると思います。

    code        char(5), -- フィルム番号
    title       varchar(40), -- タイトル
    did         integer, -- ディストリビュータid 
    date_prod   date, -- リリース日
    kind        varchar(10), -- 種類
    len         interval hour to minute, -- リリース日からの経過時間

各行コメントの左側は文字数等に差はありますが

「コメント部分の左側は『-- 』」なのは共通しています。

そこでノーマルモードで :%s/^.*-- //を入力後Enterで実行すると

 以下の様になります。

フィルム番号
タイトル
ディストリビュータid 
リリース日
種類
リリース日からの経過時間

コマンドの内容は

: がexモード開始、 %はexモードで「今画面で編集中のファイル」を表す記号です。sはsubstitute(置換)を表します。

%の部分を省略するとカーソルのある行が対象になります。

 /から右側は /置換対象/置換する文字列/ です。

「^.*」は正規表現なので一文字ずつ調べると幸せになれます。

 

3. まとめ

vimでテキスト編集を行うときは

編集する手順を考える→実行する

→うまくいかなければundoする→...

の繰り返しです。

テキストの編集で「どう編集するか」を

考えるのは面倒だと思います。

 ですが、ある程度繰り返していくと

編集する手順を考える時間が短くなっていきます。

コツは、無理に1回の操作でやりたいことを

片付けようとしないことです。

Vimが身についてくると

「こうしたら少ない操作でできるんじゃないか」と

思いついたり調べたりする気持ちの余裕が出てくるのでそこからが本番です。

それまではカーソル移動がhjklだけでも

文字削除にx連打でもいいんじゃないかと。

よし、Vimmerらしい記事書いたぞ。

Happy Vim Life!