月別アーカイブ 7月 2018

asaba 著者:asaba

Handlerクラスtips

今日は処理を遅延させるコードを紹介します。

 

アプリのデザインに合わせて決められたタイミングで

処理をしたいなって思う時があると思います。

そんな時はhandlerクラスのpostDelayedメソッドを呼びましょう。

 

 

上の画像のようにHandlerインスタンスを生成した後に

run関数のスコープ内に遅延させたい処理を書きます。

これだけ。

{}外の700は、0.7秒後にrun内の処理をしますよという意味になります。

複雑な計算の処理は時間がかかりがちなので

このHandlerクラスを使って処理をさせましょう。

非同期通信の際にも応用されている非常にメジャーな技法なので

これからandroidアプリを開発をする!という人はぜひとも抑えておきたいですね。

 

  • この記事いいね! (0)
takahashi 著者:takahashi

Google Chrome Ver.68がついにリリース。非SSLサイトにすべて”保護されていません”メッセージが表示されるように

ついに来てしまいました…

「Google Chrome 68」公開、HTTPサイトには容赦なく警告を表示する仕様に – INTERNET Watch

以前から予告されていたGoogle Chromeで非SSLサイトに接続した際に”保護されていません”メッセージが、先日リリースされたChrome Ver.68からついに表示されるようになりました。

いままでは非SSLサイトにアクセスした際はiアイコンが表示され、フォームなどに何か文字を入力したときだけ”保護されていません”と表示されるだけでしたが、今後はすべての非SSLサイトには”保護されていません”と表示されるようになります。

もっとも、事情を知っている人にとってはメッセージが変わってもさほど行動が今までと変わることはないように思えますが、インターネット業界の事情にあまり詳しくないユーザーが見たら驚いてアクセスしなくなってしまう可能性は十分に考えられます。

自分でサイトを運営している場合は、Let’s Encryptを利用することで、無料のSSL証明書の取得も可能となっています。

まだ対策されていない方はお早めに…

  • この記事いいね! (0)
著者:ym

FastCGIとsuexecユーザ

SNI対応に備えてPHPの同居調査をしていますが、納得いかないところでつまずいています。

VirtualHost を SuexecUserGroup 指定で実行しているのですが、SetHandler cgi-script では正しく動くのに SetHandler fcgid-script では動かない。

エラーメッセージはログに出力されているのでそのメッセージを頼りに apache の suexec ソース suexec.c 追いかけて、場所はわかっています。

    if (strspn(target_uname, "1234567890") != strlen(target_uname)) {
        if ((pw = getpwnam(target_uname)) == NULL) {
            log_err("invalid target user name: (%s)\n", target_uname);
            exit(105);
        }
    }
    else {
        if ((pw = getpwuid(atoi(target_uname))) == NULL) {
            log_err("invalid target user id: (%s)\n", target_uname);
            exit(121);
        }
    }

この部分で cgi-script 指定の場合は、通過するけど fcgid-script 指定の場合は invalid target user name: (%s) とでて、しかも %s は uid が表示されています。

謎だ。

  • この記事いいね! (0)
著者:杉浦

正規表現の難題、入れ子構造

 正規表現は便利な技法です。一行ほどの短い文字列で様々な文字列を表現できます。一行で動作させる単純な動作のためか実装されている正規表現の多くは後方参照以外の参照可能な記憶領域を持ちません。入れ子構造を正規表現で表そうとした場合、この記憶領域が無いという仕様が大きくのしかかってきます。
 単純に()の入れ子を考えてみます。

(()(()))

 人間が見やすいようにインデントを付けます。


(
	()
	(
		()
	)
)

 入れ子が正しく結ばれているか、どの始点がどの終点に対応しているかを考えるためには記憶領域が必要になります。
 正しく結ばれているかは、次のルールを守ったまま文字列の終わりまで読み取り切れるか否かで確認できます。
・終点を読み込んだ時、対応する始点が存在する
・読み取り終わった時、今まで読み取った始点、終点の数が等しい
最新以外の始点についての情報が無い場合、対応する始点が存在するか否かがわからず、入れ子の確認ができません。正規表現は後方参照以外に記憶領域を持ちません。このため多くの正規表現は入れ子構造を読み取ることができません。余談ですがデータ構造のひとつであるスタック構造を用いると簡単に入れ子を読み取ることが出来ます。下図はスタック構造のgifです。始点を積み、終点を読んだら始点を一つ取り出す、という動作を繰り返すことで実装できます。
 正規表現には方言がある、と言われるほど、実装が多種多様で様々な拡張がなされています。perlやphpの様なプログラミング言語の一部では正規表現の再帰呼び出しが実装されています。再帰は自身の処理中に自身を呼び出すことが可能な動作です。これで始点を積み上げ、終点で始点を打ち消す、というスタック処理をそのままできます。
 再帰を用いた正規表現の説明書:PHP: 再帰的パターン – Manual

  • この記事いいね! (0)
村上 著者:村上

【Android】「Configuration ‘compile’ is obsolete and has been replaced with ‘implementation’ and ‘api’.」エラーの対処法

今回は久しぶりに Android Studioで遭遇したエラーの対処法のご紹介。
Android Studio を 3 にアップデートしたところ、こちらのエラーが発生しました。

Configuration ‘compile’ is obsolete and has been replaced with ‘implementation’ and ‘api’.

Googleで翻訳したところ、「‘compile’は廃止され、’implementation’と ‘api’に置き換えられました。」とのこと。
つまり、build.gradlecompile を使用しない様にとのことでした。

なお、参考にしたサイトはこちらから。

gradle3でcompile警告 – 組み込みエンジニアのアプリ日誌
http://shekeenlab.hatenablog.com/entry/2018/04/28/223442

 

さて、こちらのエラーへの対処法ですが、build.gradle で使用されている compile を implementation に置き換えるだけ。

dependencies {
    implementation fileTree(dir: 'libs', include: '*.jar')
    implementation project(":CordovaLib")
     ︙
}

なお、修正前はこちら

dependencies {
    compile fileTree(dir: 'libs', include: '*.jar')
    compile project(":CordovaLib")
     ︙
}

あとは、普通にビルドとランしてください。

 

以上、Android Studio のでエラーの対処法でした。
が、まだ compile の記述が残っているようでこの警告が未だ消えていません…。
警告なので、アプリは問題なく起動・動作するのですが、やはり少し気になります。
できれば、警告になっているファイルまで教えてくれるとありがたいですね。

  • この記事いいね! (0)
asaba 著者:asaba

ブルースクリーンが出てぞっとした時の話

今日はブルースクリーンと対峙した時の苦難をつづります。

 

 

自分は少し前富士通のFMV(もう八年前のPCです)を使っていました。

 

USBのデータをPCに転送しようかなと思って繋げた瞬間

 

ヒュン。という音と一緒にPCが落ちました。

 

USBも古いものを使っていたので、コネクトが劣化していて

 

PCが受け付けなかったのか程度の軽い気持ちでした。

 

あの画面がでるまでは・・・

 

再起動すると、なにやら起動に時間がかかっている。

 

接続前の状態に巻き戻してるのかと思ったら突然

 

 

真っ青な画面が!!

 

調べてみると、大体はハードの破損・マザーボードの劣化などが原因みたいです。

 

また、pcコネクタ・ケーブルどちらか一方が古いと同じように落ちることがあるようです。

 

自分の場合はUSBのコネクトに何らかの不具合があり、pcがそれをずっと記憶して残してしまっているのが原因でした。

 

こうなると絶対に直接開くことができないので

 

まずF8キーを押してセーフティーモードで起動します。

その後中のデータをバックアップしてそれをシステムの復元をしてロールバックしましょう。

 

正常にwindowsが起動すれば解決です。

 

それでもブルースクリーンが出現した場合は

 

家電量販店などに設置してある復旧サービスを頼みましょう。(中の部品関係は素人には敷居が高いと思うので)

 

この子に出くわさないような一番の対策は、日ごろから身の回りのインターフェースに異常がないかの確認だと思い知らされました。

 

小さなことですが、怠ればこの青い画面を一から処理すると思えば面倒くさいと感じなくなります。

 

そして古いpcが頻繁にブルースクリーンを出したら、それはもうpcが劣化して長くないことを意味するので

よほどのことが無い限りは買い替えましょう。

顔面蒼白にならないために

 

 

 

 

 

 

  • この記事いいね! (0)
takahashi 著者:takahashi

Googleが開発中の謎の新OS”Fuchsia(フクシア)”のUI/UXが体験できるサイト

Google社内で、AndroidでもChromeOSでもない新しいOSの開発が進んでいるようです。

Fuchsia OS が開発されていることは以前から知られていたようですが、Googleの現行の製品やロードマップにFuchsiaが入ってきそうな部分はなく、どういった立ち位置で開発されているのかわからない”謎のOS”としてネット上で取り上げられてきました。

Fuchsia OSの大きな特徴として、デスクトップ/モバイル端末双方に対応できる設計となっています。また、AndroidやChromeOSがベースとして使用しているLinuxカーネルではなく、Googleのエンジニアが一から作り上げた”Zircon(ジルコン)⁠”カーネルが採用されているということで、本当の意味での初のGoogle謹製OSとなっています。

そんなFuchsia OSですが、そのUI/UXがいわゆる”動くワイヤーフレーム”としてWeb上で公開されています。

https://mgoulao.github.io/fuchsia-web-demo/


ロック画面。
右下の+をクリックすると


ログインオプションが出現
現時点では”LOGIN”ボタンは動作しないので、”GUEST”ボタンでログインします。


こちらがホーム画面。
端末のステータスとユーザーアイコン、検索バーとメニューが表示されているシンプルな構成です。


下部の検索・メニューエリアは上にスワイプすることで引き出すことができる”カードUI”となっており、見た目から、Googleアシスタントもここに統合されているようです。


項目をタップするとアプリが起動。


画面下に出る〇ボタンを押すとアプリがバックグラウンドモードになり、ホーム画面へ戻ることができます。
ホームに表示されているアプリ画面のサムネイルをタップすれば、アプリを再表示させることができます。


設定画面。
頻繁に変更したくなりそうな項目が綺麗にまとまっており、とても使いやすそうな印象です。
右下に歯車アイコンがあることから、ここからさらに詳細な設定に飛ぶこともできそうです。

今回はPCで見たのでPC版レイアウトが表示されていましたが、スマホでアクセスするとスマホ版のUIも確認することができるようです。

Googleの話題の新OS「Fuchsia」のデモがブラウザで試せるよ! – GIZMODO

今後、もしかするとAndroidやChromeOSを置き換えるOSになるのではないかという憶測も出ているFuchsia OS。
今後どのような形で使われていくのか、今後の展開が楽しみですね。

  • この記事いいね! (0)
著者:ym

certbot と nsupdate

常に SSL/TLS の Web ページとして表示するいわゆる常時SSL化、いよいよ始まりました。

無償で利用できるLet’s Encryptの人気が高まっていますね。関連するので nsupdate と certbot 関連を調べてみました。

nsupdate 関連については、簡単なので置いておくとして。問題は、certbot と nsupdate さらには apache の連携です。すべてバラバラのサーバで運用している上に FreeBSD なサーバです。まだ古いFreeBSD上で動かす方法を考えていますが、やはりCentOSかな。

  • この記事いいね! (0)
村上 著者:村上

【アプリ】症状の緊急度を判断できる全国版救急受診アプリ「Q助」

出来れば使う機会が来ないほうが良いものではありますが、ここ数日の猛暑のため、インストールしてみました。
消防庁が提供している、全国版救急受診アプリ「Q助」です。
もし、具合が悪そうな方や倒れた人がいた時に、救急車を呼ぶべきなのか様子を見るべきなのかを判断してくれます。

消防庁の公式サイトはこちらから。

全国版救急受診アプリ(愛称:Q助):総務省消防庁
http://www.fdma.go.jp/neuter/topics/filedList9_6/kyukyu_app.html

 

起動してすぐの画面がこちら。

その人の症状に従って、あてはまる項目を選択していきます。

診断が終ると、次のような診断画面が出てきます。
こちらは緊急の場合。

焦っている救急隊のイラストとともに、「119番に電話する」というボタンが出ています。

こちらは、そこまで緊急度が高くなかった場合。

できるだけ早めに医療機関の受診することを進めています。
恐らく、このあたりが救急車を呼ぶか否かの判断に困りそうだと思われますから、アプリでわかると良いですね。

他にも、緊急ではない緑バージョンの判断結果もありました。

 

以上、救急受診アプリのご紹介でした。
意識なしとかだったら、即救急車!と分かりますが、そうでないイエロー判断の時とかに重宝しそうですね。
冒頭でも書きましたが…正直、使わないことが一番良いのですが…。
ですが、連日の猛暑で熱中症になる方も多そうですから、万が一の時のためにインストールしておくと安心だと思います。
特に、高齢者や小さいお子さんがいるご家庭の方は、インストールしてみてはいかがでしょうか。

  • この記事いいね! (0)
takahashi 著者:takahashi

markdown(*.md)形式のファイルを開けるビュアーアプリ”markcat”

HTMLよりも簡単に書式付きの文章が書け、GitHubやBacklogなどの主要な開発コミュニティサイトなどでもつかわれる”Markdown”ファイルですが、よく使われている割には定番のビュアーなどがなく、標準の状態ではMarkdownのビューを見るには実際にMarkdownが動作するWebサービスなどに置くか、あるいはエディタなどについているMarkdownのプレビュー機能などを用いるしかありません。

しかし、内容を確認するためにわざわざWebサービスにアップロードするのも手間ですし、エディタのプレビュー機能もソースコードも一緒に表示されてしまうのは煩わしい上、間違えて触ってしまいそうで落ち着いて見れないという欠点(?)があります。

ということで、デスクトップ上でmdファイルを開いた際に、レイアウト込みかつソースを表示しない、いわゆる”ビューアー”を探したところ、よさげなアプリを発見しました。

markcat – エクスプローラーやFinderから素早く利用できるMarkdownビューアー – SOFTANTENNA BLOG

markcat というアプリです。

Windows(64bit)向けとmacOS向けが公開されています。
mac版はまだ触っていないですが、Windows版についてはインストーラーはなく、解凍すればそのまま使えます。

早速試してみます。

とりあえず適当にMarkdownファイルを作成。

これをmarkcatで表示してみると、

こんな感じで表示できます。

白基調のカラーテーマも用意されているので、どちらか見やすい方をえらぶことができます。

あとはOS側の設定で”.md”の拡張子がついたファイルをmarkcatと関連づけをしておけば、mdファイルをダブルクリックしただけでmarkcatが開くようになります。
とても便利です。

Markdownをもっと活用したい、と考えている皆さんは是非一度試してみてはいかがでしょうか。

  • この記事いいね! (0)