きゃべログ

プログラミングや電子工作などについての記事がほとんどです

Atomで複数行一括で行頭に文字列を入力する方法

0 件のコメント

AtomでTexファイルをいじっていて不要な箇所を一気にコメントアウトするときに、どうするんだっけ、と迷ったのでメモ。 複数行一括してコメントアウトしたいときだけでなく、コメントアウトを外したいときにも使える手順なので、記事としてシェアしようと思います。 ここで紹介しているのはMacのキーボードショートカットなので、WindowsやLinuxの方は適宜読み替えて実行してください。

手順

1. 文字列を挿入したい行を選択する

まずは先頭に文字列を挿入したい行を選択してください。 マウスでドラッグしても良いですし、Shiftキーを押しながら矢印キーで選択してもいいでしょう。

2. マルチカーソルにする

次に「Shift + Command + L」で選択した行にマルチカーソルを生成します。

3. カーソルを行頭に移動する

この段階ではカーソルの位置がまちまちなので行頭に移動します。 「Control + A」で行頭に移動します。

4. 文字列を入力

ここで万を持して文字を入力します。コメントアウトするなら「//」や「#」や「%」を入力することになるでしょう。 入力を終えたらEscキーでマルチカーソルを解除するのを忘れないでください。

まとめ

Atomで複数行一括文字入力の操作方法をまとめてみました。 かなり使う場面が多い操作だと思うので積極的に使っていきましょう。

0 件のコメント :

コメントを投稿

Affinity Designerが期間限定で20%オフ中。これは買うしか。

0 件のコメント

期間限定でディスカウント中

Affinity DesignerとSketchのどちらが買いなのか

昨年この記事を書いて購入して以来Affinity Designer推しな私です。AdobeのIllustratorがサブスクリプション制になってからはすっかりイラレとはご無沙汰です。買い切りのAffinity Designerは財布にやさしい。機能も充実しています。

さて、先日10/6にAffinity Designerがバージョン1.5という大型アップデートがリリースされました。その関係だと思いますが、現在App Storeにて20%オフ価格の4800円で販売されています。この期間限定のセールが買いどきなのは間違いないです。いつまでこのセールが続くのかは公式情報が見つかりませんでしたので、購入はお早めに。


Affinity Designer

公式情報

宣伝


Affinity Tips – Affinity製品の使い方ガイド
Affinity Designの操作方法やチュートリアルを紹介するWebサイトを運営中です。 もしこの記事をきっかけにAffinity Designerを使うことになったら是非読んでくださいね! ちょっとずつ記事もPVも増え、今後も随時更新していく予定です。

0 件のコメント :

コメントを投稿

Blogger向けAmazletのリンクhttps化ツールを作成しました

0 件のコメント

概要

BloggerのHTTPS化をしたらやたら警告が出る

以前このブログのプロトコルをHTTPS化したのですが、どうもamazlet (jp)で生成した画像でやたらと記事編集中に警告が出るようになりました。これはHTTPSプロトコルで通信するにも関わらずhttpのプロトコルを利用して画像を埋め込んでいるからだそうです。

そこでこの問題を解決すべく、Amazletで生成したリンクを掲載している記事すべてを更新……するのは面倒だったので一括編集出来るツールを作成しました。

作成したツール

cabbage63/amazletOptimizer: Blogger automation tool making link made by Amazlet suitable for HTTPS

PythonからGoogle Blogger APIを叩いて自動的にURLを全記事置換するというスクリプトを書きました。

使い方は少しだけややこしくて、APIキーを取得→ファイルをちょっといじる→実行という手順です。詳しくはリポジトリのトップページにREADMEが書いてあるのでそちらを参考していただければと思います。

機能

こちらを参考にコードを書きました。
当 Blog を SSL 対応させたので手順や修正が必要になった点などをまとめ | WWW WATCH

機能としては全記事の中身を次のような規則に従って置換するだけです。imgタグの中のURLだけ修正すれば警告は出ないのですが、ついでにaタグのURLも更新しています。

http://ecx.images-amazon.com/
↓
https://images-fe.ssl-images-amazon.com/
http://www.amazon.co.jp/
↓
https://www.amazon.co.jp/

予めこの置換方法で問題ありそうな方は気をつけておいてください。

製作後記

WEB APIを叩くのに慣れていなかったのがそもそも問題ですが、BloggerのAPIを叩くサンプルが少なくて苦労しました。BloggerのPythonライブラリのドキュメントがあまりよくわからなかったのも困った要因の1つです。もし需要がありそうならこのあたりのノウハウについて記事を書いてみようかなと思っています。まああんまりBloggerのAPIを叩くことはないかな。

0 件のコメント :

コメントを投稿

pythonスクリプトをcronで自動実行したいときに気をつけること

0 件のコメント

cronでpythonスクリプトを自動実行する場合の落とし穴

最近pythonを使って動画を自動生成して定期投稿をするbotを作ってみました。

botを作るのってもっと簡単なイメージだったのですが、小さなハマりポイントがいくつかあって意外と手こずりました。ということで今回はその情報をシェアしていきます。

ローカルのパス指定は絶対パスで指定する

Pythonスクリプト内のローカルパスを指定するときは絶対パスで記述すると安心です。相対パスで記述すると思った動作をしてくれない可能性があります。

#coding:utf-8
f = open('test.txt','w')

例えば上のようなhoge.pyというスクリプトをcrontabでpython ~/any/path/hoge.pyのようにして実行するとします。するとtest.txtはcrontabを実行しているユーザのデフォルトディレクトリに生成されます。これはcrontabは新たに指定ユーザでログインし、コマンドを実行するためです。

では次のようなスクリプトではどうでしょうか。

#coding:utf-8
f = open('./test.txt','w')

やはりこれでもcrontabのログインシェルのデフォルトディレクトリに生成されます。

補足ですが次にホームディレクトリをした場合にはどうなるでしょうか。

#coding:utf-8
f = open('~/test.txt','w')

この場合はチルダがホームディレクトリに展開されずにエラー終了してしまいます。なのでopen()などでパスを与えるときには/home/[ユーザ名]/のように与えるのが無難だと思います。


実践力を身につける Pythonの教科書
クジラ飛行机
マイナビ出版 (2016-10-26)
売り上げランキング: 66,551

pyenvでバージョン管理している場合は気をつける

おそらく多くの方が.bashrcなどで記述しているであろうeval "$(pyenv init -)"がcrontabでは実行されていないため、pyenvにパスが通っていない状態になってしまいます。そのためpythonはOSプリインストールのpythonで実行されてしまうはずです。そのため想定したバージョンではpipなどでモジュールをインストールしているのにインポート出来ないなどの症状に見舞われます。対応策としては2通りあります。

pyenvにパスを通しちゃう

pyenvにパスが通っていないからデフォルトのpythonが呼び出されているわけなので、通してやれば言い訳です。crontab -eのジョブの最初にパスを通してpyenv initします。サンプルは次のとおりです。

#8hoge.pypyenv
* 15 * * * export PYENV_ROOT=$HOME/.pyenv; export PATH=$PYENV_ROOT/bin:$PATH; eval "$(pyenv init -)"; python /any/path/you/want/hoge.py
#15hoge.pypythonhoge.py
#
* 15 * * * export PYENV_ROOT=$HOME/.pyenv; export PATH=$PYENV_ROOT/bin:$PATH; eval "$(pyenv init -)"; cd ~/any/path/you/want/; python /any/path/you/want/hoge.py

直接pyenv内のpythonを呼び出しちゃう

力技ですが~/.pyenv/versions/下に格納されているpythonを呼び出しても実行できます。そのときのcronジョブの指定は次のようになります。

#15python2.7.9hoge.py
* 15 * * * ~/.pyenv/versions/2.7.9/bin/python /any/path/you/want/hoge.py

環境変数PATHは指定しなおす

前の話からcronではパスが通っていないことはお察しのとおりですが、これが理由でpython経由でshellのコマンドを実行する場合に使いたいコマンドが見つからないことがあります。たとえば初期設定のままだと/usr/local/bin/にインストールしたコマンドが実行できなかったりします。なのでジョブの先頭にパスを登録するようにしましょう。次は/usr/local/bin/にパスを通す一例です。

#hoge.py
* 15 * * * export PATH=$PATH:/usr/local/bin/;python /any/path/you/want/hoge.py

詳しくはこの記事を読むことをおすすめします。
cronジョブを作るのにいつものやり方でいいんですか? - Qiita

まとめ

今回はcronでpythonスクリプトを自動実行する際に気をつけることをまとめました。また何か見つけたら追記するかもしれません。


新しいLinuxの教科書
新しいLinuxの教科書
posted with amazlet at 16.10.12
大角 祐介
SBクリエイティブ
売り上げランキング: 4,333

ふつうのLinuxプログラミング Linuxの仕組みから学べるgccプログラミングの王道
青木 峰郎
ソフトバンククリエイティブ
売り上げランキング: 140,503

0 件のコメント :

コメントを投稿

読書管理サービスを読書メーターからブクログに移行した

0 件のコメント

ついさっき読書メーターに登録していた本をすべてブクログに移行しました。読書メーターは2年使って来たのですが、少しブクログを試してみたくなりました。理由やそのやり方について少し書いてみようと思います。

移行したきっかけとしては、自分が大事だと思っているポイントに関してブクログのほうが少し良いかなと思ったからです。もちろん読書メーターの方が優れている点もたくさんあるので紹介します。今読書メーターを使っていて移行を考えている人や、どっちを使おうか悩んでいる人の助けになれば幸いです。

大人のための読書の全技術
齋藤 孝
KADOKAWA/中経出版
売り上げランキング: 17,500

各サービスの強み

読書メーターの強み

SNSとしての機能が充実している。

ホームにはタイムラインがあり、自分がお気に入りしたユーザのアクティビティを見ることができます。例えば◯◯の本を読み終えました、というようなものです。読書を軸に色々な人とコミュニケーションを取りたい人にとってはとても重要な機能だと思います。

また、レビューを書くと誰かがナイス(いいねみたいなもの)してくれたりコメントを付けてくれたりするのも続けるモチベーションの1つかなと思います。ナイスは知らない人から結構来ることがあったりして面白いです。レビューは書籍の個別ページの下に表示されるので、人目に触れる頻度が多いからだと思います。

ログしてくれる情報が細かい

読書した冊数だけでなく、ページ数についてもログしてくれます。本によってページ数にはムラがあるので、月ごとの読書ペースをモニタリングするには冊数でなくページ数のほうが良いでしょう。

また、ページ数や冊数については日平均・週平均・月平均も計算して出してくれるのでこれもありがたいです。

個人的には見やすい所に積読本や読みたい本の数が表示されているのが嬉しかったりします。

レビュー数が豊富

他のサービスに比べてレビューが活発な印象です。読んでみようか悩んでいる本のレビューを見ることは良い判断材料になるかもしれません。

1冊20分、読まずに「わかる!」すごい読書術
サンマーク出版 (2016-06-17)
売り上げランキング: 21,062

ブクログの強み

デザインがモダン

要するに今時っぽいデザインということです。配色がおとなしく、ごちゃごちゃしていないのでストレスがかかりません。本棚は木のテクスチャを貼っていたり、ブクログの見せ方に対するこだわりが見て取れます。


デザインというのは見た目の話だけでなく機能面も優れていて、本棚内の本を検索するためのパラメータがたくさん用意されていたり、本棚をスクロールすると自動的にどんどん読み込みをしてくれたりユーザビリティが高いです。


iPhoneだけですが、ネイティブアプリもあります。バーコードリーダーで本を登録できたりちょっと便利な感じです。

本を探す機能が強い

アクセスしてすぐ見るホームのページに新刊情報やランキング、人気のレビューが表示されているため、皆が注目している本をいち早く知ることができます。

本の管理機能が強い

本をたくさん登録していくと、「あの本どこだっけ」ということが頻発すると思います。ブクログでは独自の「カテゴリ」と「タグ」を書籍ごとに振ることができ、それらを頼りに書籍を検索することが出来るようになります。

また、5段階でレーティングすることが出来るため、もう一度本を読み返したい本を探しやすくなるのも良いところです。

コンビニ人間 (文春e-book)
文藝春秋 (2016-07-27)
売り上げランキング: 99

読書メーターの弱み

デザインのなんともいえない感じ

シンプルで見やすいといえば見やすいのですが、個人的にはかっこよくはないなぁという印象です。なんとなくもっさりした感じが気になっていました。

上はお知らせの表示が4つも並んだりまあまあ強烈な図。

公式のネイティブアプリがない

一応App Storeには非公式(?)と思しきアプリはあるのですが、iPhone6など新しい端末で閲覧してもiPhone4時代の昔懐かしのUIのアプリで、使い勝手がよろしくありません。

バーコードリーダーだったりネイティブアプリならではの便利機能が搭載された公式アプリが出たらなあという思いがあります。

読書は1冊のノートにまとめなさい[完全版]
奥野 宣之
ダイヤモンド社
売り上げランキング: 16,821

ブクログの弱み

個人に着目したデータが少ない

読書メーターは個人の読書を記録したりSNS機能を伸ばしていたり人にフィーチャーしたサービスであるのに対し、ブクログは自分の本棚を作るというのがメインのサービスです。その都合上、ブクログは本を探すことや本の一覧性はとても良いのですが、読書ペースなどの個人のデータはあまり見て取れません。また読み終えた本の数や、読みたい本の数がいくつかボタンアクションを経ないと見られないところも少し不便なところでしょうか。

SNSとして使うには個人間のつながりが薄い

基本的に他人とのインタラクションがメインではなさそう?なのでホームには他人のアクティビティは表示されません。そのため他の人がどういう本を読んでいるかを知るにはメニューバーから「タイムライン」をクリックする必要があります。そのため他人からのコネクションも少なめかもしれません。

また、意見交換をする掲示板「談話室」という機能もありますが、こちらも能動的にトピックを立ち上げたり、トピックに参加する必要があるので、少しハードルがあるのかなと思います。

格差社会を生き延びる“読書”という最強の武器
大岩 俊之
アルファポリス
売り上げランキング: 864

まとめると

細かい日毎の読書ペースを管理したい人や、他の人と読書で繋がりを作りたい人は読書メーターを、読みたい本と読んだ本などをきれいに管理したい人はブクログを使うと良いと思います。

私はサービスを使うモチベーションとしてデザイン面が強いみたいなのでブクログを選びました。

どっちのサービスが向いているか診断(?)

以上から、各サービスがどんな人に向いているかを考えてみました。あんまり参考にならないかも。

  • 読書メータを使うと捗る人
    • 日頃から読書ペースを管理したい
    • 読書を通じて人と繋がりたい
    • 本は口コミで選ぶタイプだ
  • ブクログを使うと捗る人
    • 本は何度も読み直すタイプだ
    • デザインがキレイなWebが好きだ
    • 本を表紙で選ぶことが少なくない

移行プロセス

登録している本の移行が結構面倒でした。ググってツールがないか調べてみると、あったのですがRubyのバージョンを変えてみても、エラーが全然取れなかったので諦めました。
読書メーター→ブクログ移行用スクリプトを書いた - blog.kymmt.com

ということで読みたい本はISBNで一括登録することにしました。まずは読書メーターの読みたい本にアクセス。

そして印刷をクリック。すると本の一覧画面が出るので、ISBNのみにチェックして表示項目を更新します。そしてリストになったISBNを範囲選択で一括コピーして、ブクログのまとめて登録(ISBN)から登録しました。

読んだ本には印刷ボタンがないので仕方なく全部手作業で移行しました。40冊程度だったので手作業でしたが、数百あったらプログラム組んだかもしれない。

0 件のコメント :

コメントを投稿