2017年9月30日土曜日

[未解決]gcc, c++のフォーマットWarning

warning: format not a string literal and no format arguments [-Wformat-security]

こういうWarningが出るのだけれど、解決できない。ロベール1-52部のファイル読み込みのところ。

#include <stdio.h>

int main()
{
    FILE* pFile;
    char  buffer[128];

    pFile = fopen("test.txt", "r");
    fgets(buffer, 128, pFile);
    printf(buffer);
    fclose(pFile);

    return 0;
}

2017年9月29日金曜日

warning: deprecated conversion from string constant to ‘char*’ を回避

ロベールC++の1部40章で、strを代入するとエラーが出ます。

hello.cpp:21:36: warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings]
     DispLength("ホメホメール");
string constantの部分に問題があるようで。

int strlen(const char *str)
// int strlen(char* str)
{
  int i;
  for(i = 0; str[i]; i++);
  return i;
}
void DispLength(const char *str)
// void DispLength(char* str)
{
    printf("文字列「%s」の長さは %d バイトです。\n", str, strlen(str));
}

と変えれば良いようです。

参考:

https://stackoverflow.com/questions/59670/how-to-get-rid-of-deprecated-conversion-from-string-constant-to-char-warnin


2017年9月28日木曜日

PHPローカルホストのビルトインサーバ起動

かなり初歩的なのだがメモしないと忘れてしまうので。

やりたいこと


PHPローカルホストのビルトインサーバ起動

どうやるか 

 表示したい  YYY.php  ファイルを

~/home/XXX/ (htmlファイルなどのルートディレクトリ)に入れて、カレントディレクトリにする。

ターミナルで下記コマンドでビルトインサーバ起動

$ php -S 127.0.0.1:8080

結果の確認

ターミナルにこんなのが出る
PHP 7.0.22-0ubuntu0.16.04.1 Development Server started at Thu Sep 28 06:25:31 2017
Listening on http://127.0.0.1:8080
Document root is /home/XXX/
Press Ctrl-C to quit.

ブラウザのアドレスに

127.0.0.1:8080/YYY.php

などと入力すれば、そのページが表示される。


ipアドレスの確認方法


ターミナルで

$ ip address

と打てば

inet 127.0.0.1 .....と出てくるこれを使えば良い


2017年9月26日火曜日

日誌2017年9月

2017/09/26

少しずつ書き足していけば良いのでは、と気づく。
 ・Python+JSの本少し。はっきり言ってわかりにくい本ですね。翻訳も校正がぬるい。
・matplotlibを少し。histgramにしたときの横軸のことなど。
・100本ノックを少し。dataframeでやってしまうと早いけど、readlineとかを使った方が良いのかしらん。
・C++できず。
・スクレイピングを少し。2ch.scならやって良いのかな?

2017/09/27

・Py+JS本を20pほど。Pandasのところ。
・100本ノック少し。

2017/09/28

・前にやったことのメモが残っていなくて困る。PHPwebサイトの立ち上げからできない・・・
・いろいろ少しずつ進めたロベールC++39章まで

2017/09/29

・ロベール少し1部-40章

2017/09/30

・ロベール54章まで





2017年9月23日土曜日

ubuntu環境変数を変更して、パスワードを格納する

ubuntuの環境変数にパスワードを入れました。

目的はGithub上のハードコードを避けるため。いずれにしても何かに記述しなくてはいけないのですが・・・。

PATHなどの変更も同様にできます。


システム全体で変更するとき

 

$ /etc/environment に、このように書き込みます。
PASSWORD="hogehoge"

と書き込む。ログインし直すと有効になる。

セッション(ユーザー限定)で変更するとき

 

$~/.profile に、このように書き込みます。
export PASSWORD="hogehoge"
~/.bash_profile を変更しても良いですが、シェルから起動しなかったプログラム(デスクトップGUI)では効果がないです。

確認方法

ターミナル上では以下のコマンドで確認できる。何もなかったら空白。
echo $PASSWORD

Pythonでの読み出し

import os
os.environ['PASSWORD']
でOK。

ここここでも話題になっています。

参考になる公式ヘルプ
https://help.ubuntu.com/community/EnvironmentVariables

2017年9月18日月曜日

ubuntuにtimeshiftを入れてバックアップのメモ

Ubuntuデータのバックアップ用にtimeshiftを使っています。細かい説明は技術評論社の解説がよいです。

作者の解説


https://teejeetech.in/timeshift/

GUIで起動するには


$ sudo timeshift-gtk
-gtkがないとCLIになります。

入れたらappstreamcliの更新エラー

http://gihyo.jp/admin/serial/01/ubuntu-recipe/0399

$ sudo apt-get update

とやると、

*** Error in `appstreamcli': double free or corruption (fasttop):

となって更新が止まる。こことかここによるとappstreamcliのバグとのこと。

対策がありました。

一回killすれば良いそうです。
$ sudo kill -KILL $(pgrep appstreamcli)
または
$ sudo pkill -KILL appstreamcli
のあと、
$ wget -P /tmp  https://launchpad.net/ubuntu/+archive/primary/+files/appstream_0.9.4-1ubuntu1_amd64.deb   https://launchpad.net/ubuntu/+archive/primary/+files/libappstream3_0.9.4-1ubuntu1_amd64.deb 
$ sudo dpkg -i /tmp/appstream_0.9.4-1ubuntu1_amd64.deb /tmp/libappstream3_0.9.4-1ubuntu1_amd64.deb
$ sudo apt-get update

snapshotのリスト



timeshift --list でsnapshotのリストが見られるのですが、

8 snapshots, 708.4 GB free
Num     Name                 Tags  Description  
------------------------------------------------------------------------------
0    >  2017-09-27_21-00-01  B                  
1    >  2018-06-06_11-59-51  B                  
2    >  2018-06-12_07-17-56  B                  
3    >  2018-07-07_21-00-01  D                  
4    >  2018-07-08_21-00-01  D                  
5    >  2018-07-09_21-00-02  D                  
6    >  2018-07-10_21-00-01  D                  
7    >  2018-07-11_21-00-01  D

TagのBはbootのときのバックアップ、DはDailyバックアップです。バックアップには10分くらいかかっているとのこと。

[日誌]C++ポインタアドレスを64bitで表示する。

ロベールC++教室をやっていたら、ポインタアドレスを表示させるところでこんなエラー
error: cast from ‘char*’ to ‘unsigned int’ loses precision [-fpermissive]
こちらと同じ症状だった。
http://d.hatena.ne.jp/taksei/20140208/1391834451


#include <stdint.h>

を付け加えて、

(uint64_t)

に置き換えて完了。"原因:64bit環境のアドレスを32bitにキャストしている"ということらしい。
#include <iostream>
#include <stdint.h> // インクルード必要
using namespace std;
int main()
{
    char a;
    char* p;
    p = &a;
    cout << " p = " << (uint64_t) p << endl
         << "&a = " << (uint64_t)&a << endl;
    return 0;
}

2017年9月13日水曜日

[日誌]OpenCV3をpython3.6 で

OpenCV3をpython3.6 で入れた。linuxだと対応しているらしいが、OSX,WINは未対応のようです。(2017/09/04現在)

https://anaconda.org/menpo/opencv3/files
conda install -c menpo opencv3
でおしまい。anacondaをバージョンアップすることを問われたくらい。

他のブログ情報などによると3.6で入れられなくて困っている人が多いようです。3.5の環境を作るのが手っ取り早いのかな。

[日誌]OpenCVに入門する。

OpenCVを使い始めました。

Ubuntu+Pythonではすごく簡単なのですが、 ドキュメントはC++の方が多いような気がします。やってみたいテクニックが載っている教科書もC++だったりして、、Windows、VisualStudio、C++という組み合わせをやっています。。スクリプト型からプログラムを始めたので、けっこうつらいです。

いちおう、includeとかの話は理解したつもり。。

Visual Studioの使い方、C++のやり方も知らないといけないのでちょっと先は長そうですが、ぼちぼちやりましょう。

2017年9月4日月曜日

[日誌]いろいろ続き

DjangoはTutorial5まで。テストが通っているとかいまいち分からない。英語が読めているようで読めていないようです。

DjangoGirlsというサイトの日本語版は非常によくできている気がします。そちらをチラチラやっています。