できればシェルスクリプトなんて書きたくないんだけど,まだまだ書く機会は多い.シェル芸やワンライナーのような凝ったことではなく,他のひとが使いやすいシェルスクリプトを書くために自分が実践していることをまとめておく. ヘルプメッセージ 書いてるシェルスクリプトが使い捨てではなく何度も使うものである場合は,本体を書き始める前に,そのスクリプトの使い方を表示するusage関数を書いてしまう. これを書いておくと,後々チームへ共有がしやすくなる.とりあえずusage見てくださいと言える.また,あらかじめ書くことで,単なるシェルスクリプトであっても自分の中で動作を整理してから書き始めることができる.関数として書くのは,usageを表示してあげるとよい場面がいくつかあり,使い回すことができるため. 以下のように書く. function usage { cat <<EOF $(basename ${0})
概要 この記事でできるようになること 安定してInfo.plistの内容(ここではBuild番号)を変更できる ふつうにRun Scriptで編集するとタイミングによってすぐにアプリに反映されないことがあったりしたがそれが解消される Info.plistに差分がでないのでcommitのときに邪魔にならない なお、この方法を教えてくれた熊谷さんがこの方法に行き着いた経緯や所感がこちらに詳しくまとめられています。詳細や考え方などをきちんと知りたいかたは是非、熊谷さんの記事をご一読ください! 必要な設定 Preprocess Info.plist file でInfo.plistをビルド前に確定させる Run Scriptで${TEMP_DIR}/Preprocessed-Info.plistを編集する 以下、具体的な話をします。 経緯 これまで、 デバッグ用やArchive用のアプリのバージョ
2019/1更新 はじめにMediumはブログサービスです。デザイン面は基本的な機能に限定されていますが、意見を述べる機能はしっかりあるという硬派なサービスです。 デザインについて通常あれこれ変更したい部分があるものですが、Mediumはそういう部分はないです。まるごと運営側に任せてもいいかなという気になります(Windowsだと少しフォントが荒れるみたいですが)。 パソコンで見たときにTwitterボタンやFacebookボタンがよくある青系のボタンではなく、他の部分と統一感のある配色になっています。また、私の環境(Mac)では文字の色は黒(#000000)ではなく濃い灰色(#292929)です。こだわりのポイントが面白いです。 SNSのボタンには、Mediumに合う配色がされているパブリケーション記事はその性質に応じて、グループごとにまとめることが出来ます。このグループのことをパブリケ
The Next Generation of Web Development Build products, not infrastructure. Just code. There's no deployment process with Bowery. There are no database migrations or server configuration. You write code, and it runs. Just branch. Bowery doesn't have a local dev environment. It uses branches just like git, and each branch gets its own subdomain. Changes are immediately viewable on the web—no pushing
ずっと触っていなかったのですが、久しぶりに触ってみたらだいぶ変わっていたので内容を反映します。 必要なATOMパッケージは「go-plus」「godef」+依存パッケージとなります。 gocodeとの連携がサポートされていて補完が効くようになりました。 またgodefを入れることでCtrl+iで定義箇所へジャンプできるようになりました。 前提条件 $GOPATHは~/goに設定済みであるとします。 Golang自体はhomebrewにてインストール済みとします。 Golang側の必要コマンドのインストール ATOM側で必要としているGolang各種ツールをインストールします。 go get golang.org/x/tools/cmd/goimports go get github.com/nsf/gocode go get github.com/rogpeppe/godef brew i
概要 mroongaがメジャーバージョンアップしたため、centos6の標準パッケージにあるmysql5.1が非推奨となりました。 そこで、mroonga推奨SCL mysql5.5に対応したときの四苦八苦したことをメモします。 mroongaインストール インストール手順はmroonga公式とほぼ同じですが、ちょっと違います。 注意点 SCLでインストールしたソフトウェアは /opt/rh に入ります。 なので、SCLのmysqlは /opt/rh/mysql55/ となり、 my.cnf は /opt/rh/mysql55/root/etc/my.cnf にあります。 また、これらのソフトウェアはyumでインストールしてもPATHが通っていないので、自分で設定する必要があります。 詳しくはIDC Frontier Engineers' Blog インストール手順 詳細はコメントを見てく
WindowsはExplorerで複数ファイルを選んでからF2キーでファイル名の一括変更が出来て便利なのですが、スペースとカッコが付いてfile (1).jpg, file (2).jpg とかになります。 これをfile1.jpg, file2.jpgという感じにしたいので調べました。 カッコとスペースの削除 PowerShellで連番ファイルのあるディレクトリに行って、
①AndroidManifest.xmlに追加。 ②Activityで取得 WifiManager wifiManager = (WifiManager) getSystemService(Context.WIFI_SERVICE); WifiInfo wifiInfo = wifiManager.getConnectionInfo(); String macAddress = wifiInfo.getMacAddress(); Register as a new user and use Qiita more conveniently You get articles that match your needsYou can efficiently read back useful informationYou can use dark themeWhat you can do with
#!/usr/bin/env zsh if [[ $# -lt 2 ]]; then print -P "%UUsage%u: brew install-version [install options] FORMULA VERSION" exit 1 fi formula= version= install_opts=() versions_opts=() for arg in $*; do if [[ $arg =~ '^--' ]]; then install_opts+=$arg [[ $arg == --devel ]] && versions_opts+=$arg continue fi if [[ -z $formula ]]; then formula=$arg continue fi version=$arg done versions=`brew versions $v
クライアントサイドJavaScriptにおけるHTMLとCSSの知識 とある勉強会にて JavaScriptを勉強したいのだけど、まず何から勉強したらよいか? という問いがありました。 もちろんプログラミングの基礎知識やアルゴリズムの知識、ある程度の数学の知識、文章読解力が重要という意見もあるでしょう。答えは色々あると思うのですが、 クライアントサイドJavaScript (ブラウザやWebビューで実行されるJavaScript)において、まずひとつ押さえておきたいのは HTML/CSS の知識ではないかと思っています。 今回の話は、「なぜクライアントサイドJavaScriptにはHTML/CSSの知識が必要か?」というテーマで、JavaScriptとHTML/CSSがどのくらい関わっているのか解説していきたいと思います。 どんな人に読んで欲しいか JavaScriptをこれから学びたい人
amazonのProduct Advertising APIを使って、本のISBNコードから名前と価格を取得し、Spreadsheetに保存してみる。 リクエストの作成手順 アカウントを作成して、アクセスキー、シークレットキー、アソシエイトタグを取得 パラメータ収集 アクセスキー、タイムスタンプを付加 パラメータ名でソート パラメータをURLエンコードし、文字列作成 「GET」「ecs.amazonaws.jp」「/onca/xml」の文字列追加 署名を作成 署名をリクエストに追加 アクセスキー、シークレットキー、アソシエイトタグを取得 アクセスキー、シークレットキー、アソシエイトタグを取得。 アソシエイトタグ作成 Product Advertising APIヘルプ Product Advertising API アカウント作成 ヘルプ 最近取得方法が変わった。。? パラメータ収集 以下
自分の場合開発環境としてATOMを使っていますが、 ちゃんとappengineパッケージとかをATOM側に認識させるにはコツみたいなものがあったので メモとして残しておきます。 GAE環境構築 ここを参照です。 http://qiita.com/135yshr/items/de2b8cc7ec9ae1ce2cd9 goenvのインストール ここを参照です http://d.hatena.ne.jp/sasaplus1/20130616/1371352276 ATOM側の設定 ここを参照です http://qiita.com/abe00makoto/items/b7b27254a43d50b7aba2 使い方 プロジェクト名 hellowordとして作成します。 注意点としてGAE/GoSDKは~/go_appengineに置いてる前提です。
「BigQueryは120億行を5秒でフルスキャン可能」は本当か? 先日、kaheiさんがGoogle BigQuery(Googleクラウドの大規模クエリサービス)について、こんなエントリを書いていた。 とにかくパフォーマンスがすごい。(Fluentd Meetupでの)プレゼン中のデモで、ディスクに収められた5億件のデータをSQLでフルスキャンするのに3秒しかかからない。9億件のデータを正規表現を含んだSQLでスキャンしても、7秒で終わる(これ、記憶がちょっとあいまい。もう少しかかったかも)。これには驚いた。佐藤さんがGoogleに入社して一番驚いた技術が、一般公開される前のBigQueryだったと言っていたが、その気持ちはわかる。 From Fluentd Meetupに行ってきました これを読んだ時、BigQueryの検索スピードについてちょっと補足したくなった。確かにFluent
どうにもVirtualBoxの動きがもっさりしてて気に食わなかったのでビデオメモリの割り当てと3Dアクセレーションを有効化したらかなり改善したのでこれはオススメです。 設定方法 VirtualBoxのイメージごとの設定画面を開いて設定→ディスプレイのビデオのところで初期設定だと12MBしか割り当てられてないので128MBにして、下の3D アクセレーションを有効化もチェックしときます。 もちろんホストPCのスペックが低い場合は何をどうしようが無理なので諦めて新しいPCを買いましょう。 Register as a new user and use Qiita more conveniently You get articles that match your needsYou can efficiently read back useful informationYou can use dar
Morphia - MongoDB Integration [morphia] module This module is for the Play 1.x series only. IMPORTANT NOTE for those who use Long type ID: There is an urgent issue reported by Peksa: Version 1.2.11 and up reset Long id generation in production system Seamlessly MongoDB access integration with Play’s Model interface. Notes: v1.2.7 does not support Play-1.2.3 or below, please use v1.2.6 if you are u
MySQLのマスター1台、スレーブ2台、mysql-master-haのマネージャ1台の計4台構成です。 4台すべてを起動するとトータルで3.5GBほどメモリを使用しますので、ご注意ください。 手順は全部Ansibleで自動化してもよかったのですが、それだとフェイルオーバーの動作がよくわからないかと思ったので、レプリケーション、HA構成の設定は手動です。 HA構成にはmysql-master-haを使用します。 準備 VirtualBox、Vagrant、Ansibleはあらかじめインストールしておき、ターミナル上でコマンドが実行できるようにしておいてください。 OSはCentOSを使用します。 以下のコマンドでCentOS6.5のボックスを追加します。
昔、別のブログに書いた記事を転載。 PDFのツールバーにキャプチャを撮る機能があった! 多分、通常は表示されていないので、 まず、バーの「ツール」をクリック。 「カスタマイズ」をクリック。 スクロールで下に行くと、「スナップショットツール」 というのがあるので、チェックを入れて「OK」をクリック。 キャプチャを撮りたいPDFを開いて、 ツールバーに表示されているカメラマークをクリック。 1ページ撮りたい時は、1ページ表示にしておいて、 そのページをダブルクリックするだけ。 1部分だけを撮りたい時は ドラッグ&ドロップで範囲指定する。 そして、ペイントか何かにペーストすれば完了! Register as a new user and use Qiita more conveniently You get articles that match your needsYou can effici
あわせて読みたい: ①Appiumを使ってみた【iOS編】 ③Appiumでどこまで出来るか試してみた【iOS編】 ④AppiumでWebアプリのテストを実機で実行する【iOS編】 1. はじめに 前回の投稿では、Appiumの導入〜簡単なテストの実行方法までについて学びました。 今回はより実践的な内容として JUnitで書かれたJavaのテストコード を使用した方法について記述していきたいと思います。 2. 事前準備 1. TestAppを実機にインストールする 前回に引き続き、アプリはAppiumのサンプルコードコードに同梱されているTestAppを使用します。 Xcodeを使用して実機へアプリのビルド&インストールを行います。※詳細な手順は前回の投稿を参照 2. Mavenをインストールする Javaで書かれたテストの実行にはMavenが必要となりますので、あらかじめインストールして
iOSで端末同士の通信を実現するためにMultipeerConnectivityがありますね。最大で何台接続可能か気になったので調べてみました。 最大接続数はMCSettion.hにkMCSessionMaximumNumberOfPeersとして定義されています。ちなみに、最小接続数はkMCSessionMinimumNumberOfPeersとして定義されています。 NSLog(@"min=%lu,max=%lu",(unsigned long)kMCSessionMinimumNumberOfPeers, (unsigned long)kMCSessionMaximumNumberOfPeers);
JAXB(Java Architecture for XML Binding)で、日本語のタグも使えることを動作確認してみました。フツーに使えますね。 ポイントは、変換元/先オブジェクトのクラス定義で、@XmlRootElement、@XmlElementアノテーションを付けることですね。 文字コードも指定できました。 オブジェクト→XML変換 @XmlRootElement(name = "人データ") public class PersonJp { // Getter/Setterを省略して、publicにしてあります。 @XmlElement(name = "名前") public String name; @XmlElement(name = "年齢") public int age; } // 入力オブジェクト PersonJp person = new PersonJp();
概要 まとめると、最近のWineはMac上だとX11に依存せずに動作させることが出来、Windowsアプリケーションを違和感少なく動かせて最高!という記事です。それだけです。(これだけでモチベーションが沸かない人は、下に実際の動作画像があるので見てみるのも一興かもです) インストール方法 おなじみHomebrewで一発。 ただデフォルトだとX11 (XQuartz)入れろやと警告が出るので、X11サポートを切るオプションを付加します。(XQuartz入れるのを面倒くさがっているだけなので、別に入れても良いと思います) あとは地味にバージョンアップで違和感が無くなってきて嬉しい感じなので、develオプションを付けておく。(自己責任で)
リスト系のビューを使うときに、おもにナビゲーションバーあたりのボタンに実装したくなりそうな機能を2つ用意したのでメモ。なお、今回はCollectionViewを利用している。 選択中のアイテムを一括で解除する コレクションビュー内のアイテム(セル)の数だけ、deselectItemAtIndexPath:を呼び出す。 - (void)clearCellSelections { for (NSIndexPath *indexPath in self.collectionView.indexPathsForSelectedItems) { [self.collectionView deselectItemAtIndexPath:indexPath animated:NO]; } } //TabBarのサイズを取得 float t_height = self.tabBarController.t
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く