おおよそ
Error parsing PCC subspaces from PCCTという内容です。
色々調べたんですがfast startupを無効にしろとかしか出てこず(Win入れてないので関係ない)、BIOSのアップデートをしてみたりもしたんですが解決しませんでした。
結局、カーネルのバグ(?)のようでいくつかのThinkPadで発生してる事象のようです。
- linux 4.17.11-1
- linux-lts 4.14.56-1
Error parsing PCC subspaces from PCCTという内容です。
Androidのレイアウトって難しい。では何故こう感じるか、そしてレイアウトの考え方のお話をします。
画面幅が100、中にあるLinearLayoutの幅が50でその中のボタンをmatch_parentにした場合ボタンのサイズは50になります。XdpはXに数字が入ります。上のバー(アクションバーって言います)は48dpといったように色々決まってます。ここの数字はあまり使わない...はずです。

android.support.constraint.ConstraintLayoutを
LinearLayoutに書き換えた上でapp:から始まる行を全て消しましょう。
android:orientation="vertical"を追記しておきます。
はじめまして。私はジタクサーバー。あなたの開発ライフを守ります。みなさんはじめまして! Githubでは@kawakawaritsuki、Life is Tech!ではごっちゃんと名乗っているものです。
sudo python -m SimpleHTTPServer 80
というコマンドを打つだけです。自分はMacOSX10.11.3でArduino1.0.5を使っています。 もちろんWindowsでも出来るはずです!
普段は1.6.xを使っているのですが、自分の環境では手順1で引っかかってしまったので、1.0.5を使っています。 Arduino1.0.5はここでDLできます。 https://www.arduino.cc/en/Main/OldSoftwareReleases#1.0.x
http://make.kosakalab.com/make/electronic-work/arduino-ide-arduinoisp/ こちらのページの
ATmega/ATtiny記述ファイルアーカイブ
から、hardware.zipをDLします。 そして、自分の標準のフォルダ(Arduinoフォルダ)に解凍したものを入れます。
そしてArduinoIDEを起動します(この時点で起動していた場合は再起動させてください)。 ツールのマイコンボードの中にATtinyなどが追加されていればOKです。
Arduinoのツールバーのファイルの中の、スケッチの例の中にあるArduinoISPをクリックします。 するとソースが表示されるので、それをArduinoに書き込んでください。
こんな感じです
さっきのページにも配線図はありますが、書き込むだけの装置なら正直これだけで十分です。(テストするなら話は別)
ソースコードが書けたら、先ほどの配線をしたArduinoを接続します。 そして、ArduinoIDEのツールの中の マイコンボードをATtiny85に 書き込み装置をArduino as ISPに設定します。
そして、いざ書き込み! 普通に書き込みボタンを押します。 エラーが出ることが結構ありますが、案外書き込めてます。 試してみてください!
最近(?)Twitterで問題になったりならなかったりする、「ln.is」について調べてみた。
真似しないでくださいね。。。笑
http://linkis.com/ にアクセス!
そこから試しに短縮URL(じゃない気がするけど笑)を生成してみた。
先ほど短縮URL(?)を取得したもの http://linkis.com/www.example.com/YWjGO
どうやらドメイン部分は除ける模様 http://linkis.com/YWjGO
で、短縮用のURLにすることも可能な模様 http://ln.is/YWjGO
(最初からコレでいいじゃんというツッコミは置いといてw)
ページの5分の1くらいのサイズにLinkis特有のメニューが出てる。
↑こんな感じ短縮元ページはiFrameで表示してるみたい。 ファビコンはlinkis.comのものに差し替わってる。 このメニューで出来ることは、いいね!とシェアと共有元の人、それにページに対してコメントも付けれるみたい。
やりたいことは分かるんですがちょっと嫌ですねー。
ページを見てたら、「Twitter automation」という項目があったので、チェックに入れてみた。 https://twitter.com/Dummy01001/status/697019738594140160 ちゃっかり書き換わった。 URLが入ったツイートをされると、一度ツイートを削除してURLを書き換えてもう一度ツイートする仕組みのようだ。
迷惑といえば迷惑かもしれない。
とりあえずサイトを運営されている方に申し訳ない
それに、どうやらこのサービスを使ったページを開くと、認証を促されることがある模様?(確認は取れていません)
(追記:5/9)
少なくとも自分から使ってないかぎりは自分にとって迷惑ですね(汗)
自分は公式のページから試したものの、意味わからないまま認証したりしてそう。。。 おそらく、ln.isのURLでツイートしてる人の大半は気づいてないと思う。 一回認証しちゃうとそれ以降ずっとらしい。
たまにはTwitterなどのSNSの認証状態を確認していらないものを外そう!
(追記:2/9)
https://twitter.com/settings/applications このページに、「Linkis.com」という項目があったらそれです。
こんなサービス使わない!という人は、確認方法で書いたページで、いらないものの「許可を取り消す」ボタンを押します。 その後、 http://ln.is へ行き、Settingの中のACCOUNTSページで、ログアウトボタンを押してください。 (追記ここまで)
いろんなソフトがあるようですが、今回はGitBucketというソフトウェアを使ってみました。GitHubのクローンのようなものです。日本の方が作られているとのこと。
####GitBucket本体 https://github.com/takezoe/gitbucket/releases このサイトの、warファイルをDLします。
このソフトはJavaで実行するので、JREが必要です。
基本的にはbatファイルを作成して起動するのがいいと思います。
warファイルがデスクトップに有ることを前提として、
ファイルの中に、
java -jar gitbucket.war
と書いて、保存して終了する。
そして、その生成したbatファイルをダブルクリックすると起動出来ます。
起動ができたら、その端末のブラウザから http://localhost:8080 へアクセスします。 UIはまさにGithubなので使い慣れていれば安心です。
その他のPCからは、 http://192.168.XXX.XXX:8080 と、IPアドレスを指定してあげます。
開けない場合はファイアウォールから許可してください。
初めて起動した時は、アカウントを作ることはできないので ID:root PW:root と入力してログインします。
その後、右上のスパナマークをクリックして、System Settingsへ移動すれば、ユーザーを作れるようにしたりすることができます。
ログインはメールアドレスではなく、IDでのログインとなります。
さすがにポートが8080だと都合が悪い場合もあると思うので、ポートの変更方法について
batファイルのgitbucket.warの最後にスペースを開けて
--port=80
などと追記することで、設定できます。
かなり簡単にGitのサーバーを実装することが出来ました。 warファイルはJavaなので、LinuxでもMacでも簡単にインストールできると思います。 内容に、誤字や不備があればコメントいただけると幸いです。
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.PrintStream;
import java.net.URL;
import java.net.URLConnection;
public class HttpConnector {
String host = "";//ここにドメインとか書いておくとコンストラクタのhostにファイル名を指定することができる
String message = "";
String contentType = "";//ContentTypeをここに指定しておく。
private OnHttpResponseListener resLis = null;
private OnHttpErrorListener errLis = null;
public HttpConnector(){}
public HttpConnector(String host){
this.host += host;
}
public HttpConnector(String host, String message){
this.host += host;
this.message = message;
}
public void get(){
new Thread(new Runnable() {
@Override
public void run() {
try {
URL url = new URL(host);
URLConnection uc = url.openConnection();
InputStream is = uc.getInputStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(is));
StringBuffer sb = new StringBuffer();
String s;
while ((s = reader.readLine()) != null) {
sb.append(s);
}
if (resLis != null)
resLis.onResponse(sb.toString());
reader.close();
} catch (IOException e) {
if (errLis != null)
errLis.onError(0);
}
}
}).start();
}
//ポスト用コマンド
public void post(){
new Thread(new Runnable() {
@Override
public void run() {
try {
URL url = new URL(host);
URLConnection uc = url.openConnection();
uc.setDoOutput(true);
uc.setRequestProperty("Content-type", "application/json");
OutputStream os = uc.getOutputStream();
PrintStream ps = new PrintStream(os);
ps.print(message);
ps.close();
InputStream is = uc.getInputStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(is));
StringBuffer sb = new StringBuffer();
String s;
while ((s = reader.readLine()) != null) {
sb.append(s);
}
if (resLis != null)
resLis.onResponse(sb.toString());
reader.close();
} catch (IOException e) {
if (errLis != null)
errLis.onError(0);
}
}
}).start();
}
public void setHost(String host){
this.host = host;
}
public String getHost(){
return host;
}
public void setContentType(String contentType){
this.contentType = contentType;
}
public String getContentType(){
return contentType;
}
public void setMessage(String message){
this.message = message;
}
public String getMessage(){
return message;
}
public void setOnHttpResponseListener(OnHttpResponseListener listener){
this.resLis = listener;
}
public void setOnHttpErrorListener(OnHttpErrorListener listener){
this.errLis = listener;
}
public void removeResponseListener(){
this.resLis = null;
}
public void removeErrorListener(){
this.errLis = null;
}
}
import java.util.EventListener;
public interface OnHttpResponseListener extends EventListener {
void onResponse(String response);
}
import java.util.EventListener;
public interface OnHttpErrorListener extends EventListener {
void onError(int error);
}
適当に作ってるんでエラー番号の処理とかは書いてません。すみません。 Androidで使う場合はHandlerをかませる必要があることが有ります。コメントしていただければそれ用のソースも公開します。 ほとんど例外書いてないんであまり変なことはしないほうがいいかも。
HttpConnector httpConnector = new HttpConnector("http://example.com/");
httpConnector.setOnHttpResponseListener(new OnHttpResponseListener() {
@Override
public void onResponse(String response) {
System.out.println("Response:" + response);
}
});
httpConnector.setOnHttpErrorListener(new OnHttpErrorListener() {
@Override
public void onError(int error) {
System.out.println("Error:" + error);//現状0しかない
}
});
httpConnector.get();
HttpConnector httpConnector = new HttpConnector("http://example.com/"); でホスト指定。 変更する際はsetHostとかでできます。 setOnHttpResponseListenerで成功時のリスナ、setOnHttpErrorListenerで失敗時のリスナを指定。(強制ではないのでエラーのみ未実装とかでもOK。) OnHttpResponseListenerのresponseに受信した文字列が入ります。 そして、最後のhttpConnector.get()で受信を開始します。処理はスレッドで行うようにしてます。
HttpConnector httpConnector = new HttpConnector("http://example.com/","POSTするメッセージ");
//HttpConnector httpConnector = new HttpConnector("http://example.com/");
//httpConnector.setMeesage("POSTするメッセージ");//この2行でも可
httpConnector.setOnHttpResponseListener(new OnHttpResponseListener() {
@Override
public void onResponse(String response) {
System.out.println("Response:" + response);
}
});
httpConnector.setOnHttpErrorListener(new OnHttpErrorListener() {
@Override
public void onError(int error) {
System.out.println("Error:" + error);//現状0しかない
}
});
httpConnector.post();//ここ重要
Getとの違いは、POSTするメッセージを指定すること(コンストラクタでも指定できるしsetMessage()メソッドでも指定可)と、最後のhttpConnector.post()でポストをすることです。
例えば、同じドメインで複数の場所にアクセスするとき
HttpConnector httpConnector = new HttpConnector("get");//実質http://example.com/getと同じ
HttpConnector httpConnector = new HttpConnector("post");//実質http://example.com/postと同じ
っていう使い方ができます。
読みにくい文章を最後まで読んでいただいてありがとうございました! 誤字やソースのミスがあればバシバシ言ってもらえると嬉しいです! 一人でも役に立てれば幸いです!
はじめまして。LiT!ではごっちゃんと名乗っているメンバーです。
今回は Android iOS コースのメンバーで特に そろそろリリースしたいなあ って思っている人向けの記事です。 ...とは言いましたが、リリースする予定が無い自分用のアプリでもかなり便利です。 とりあえず入れておきましょう。
Crashlyticsを活用すれば、リリース後のあんな困った!やこんな困った!を簡単に解決できちゃいます。
また、今回の記事ではAndroidを対象として書いています。 iOSについても後日追記したいとは考えていますが今のところはAndroidのみです。
この記事はQiita版Life is Tech ! Members Advent Calendar 2016及びAdventar版LiT! Members Advent Calendar 2016、6日目の記事です。
簡単に言えばエラーが起きた時 自動的に エラーの情報が開発者に送信されるサービスです。 CrashlyticsはTwitter社が提供しているサービスなので安心です。
Androidだと、エラーが発生した時「問題が発生したため◯◯を終了します」というものが度々表示され、レポートボタンを押せば開発者にエラー情報を送信できます。 しかし、これは任意であるため、殆どの人が押しません。 これでは、開発者が気づかないエラーが紛れ込んでいる可能性もあります。
しかしCrashlyticsは完全に自動で送信されるため、バグがあったときに 素早く 対処することが出来ます。
また、リリースする予定が無いアプリでも、いきなりなんか落ちた!って事、よくあると思います。しかし、そのタイミングでPCに繋いでいないとエラーログが見れなくてもやもやっとすることが僕は沢山あります。
そんな時でも、Crashlyticsを入れておけば落ち着いてからエラーを見返すことが出来ます。 しかもずっと残るので安心です。
https://get.fabric.io/ とりあえずアクセス! このページではFabricと書いてありますが、CrashlyticsはFabricの中の一つのサービスなのでまずはFabricの登録をします。
公式サイト見たら簡単に出来ますが一応手順を簡単に書いておきます。
まずはGet Started with Fabricをクリックしてアカウントを作ります。エラー情報が来た時などにログインするのできちんと覚えておきましょう。
無事、登録/ログインが出来たらダッシュボードが開くと思います。
https://fabric.io/downloads/android
このページの手順に従って準備します。
Android StudioのメニューのWindowsならFile-Settings、MacならAndroid Studio-Preferences を開いて、その中のPluginsを選択します。
そして、Browse repositoriesをクリックし、検索窓にFabricと入力し、"Fabric for Android"をインストールします。
その後Android Studioを再起動するとFabricのアイコンが表示されていると思います。
導入はこれで完了です。
Android Studioの上のバーのFabricボタンを押します。 すると右側に電源ボタンみたいなのが出てくると思うのでそれをクリックしてログインします。 Kit選択画面まで進んだら、Crashlyticsを選択し、Installボタンをクリックします。 ここで、ソースコードの編集部分が表示されるので確認したらApplyボタンをクリックします。
これで導入自体は完了です。 簡単ですね!
一度インストールした状態でFabricのサイトにアクセスするとアプリ名が表示されているはずです。 Crashlyticsの項目を選択すると、エラーの情報などを閲覧することが出来ます。
また、エラーが発生したときには自分宛てにメールが届きます。 これで見逃すことはありませんね!
ライブラリやサービスには、利用者にとって便利なものが沢山あります。 しかし、もちろん開発者の手助けになるものも色々あります。
便利なサービスを活用してより良いソフトウェアを作ることもまた、とても良いことです。
今回はCrashlyticsを紹介しましたが、Crashlytics以外にも様々なサービスがあります。是非色々探して使ってみてください! また、これ凄く便利!というものを見つけたらQiitaなどに投稿していただければまた別の人の役に立つと思います!
長い文章を最後まで読んでいただきありがとうございました。 写真や画像がなく凄く読みづらかったと思います。 きっと探せばもっと分かりやすい説明があると思うので1情報として活用していただければと思います。 申し訳ありませんでしたm(-_-)m
明日は@Windows_Tenさんの"MODのテクスチャを作ろう"です! Moddingは闇に包まれてる気がしますができれば楽しいんでしょうね(遠い目)。 僕も少しは作ってますが...
お楽しみに!