ためすう

curl で post する

2018-05-27

目的

api を作成する機会がありました。

動作確認のためターミナルから api を実行する方法を調べました。

方法

url パラメータを POST する

$ curl http://localhost:9000/hoge -F "url=http://fugafuga.jp"

DELETE メソッドでアクセス

$ curl http://localhost:9000/hoge/1 -X DELETE

PUT メソッドで url パラメータを送る

$ curl http://localhost:9000/hoge/1 -X PUT -F "url=http://fugafuga.com"

(以下 man コマンドより引用)

       -d, --data <data>
              (HTTP)  Sends  the  specified data in a POST request to the HTTP server, in the same way that a browser does when a user has filled in an HTML form and
              presses the submit button. This will cause curl to pass the data to the server using the content-type  application/x-www-form-urlencoded.   Compare  to
              -F, --form.
       -X, --request <command>
              (HTTP)  Specifies  a  custom  request  method to use when communicating with the HTTP server.  The specified request method will be used instead of the
              method otherwise used (which defaults to GET). Read the HTTP 1.1 specification for details and explanations. Common additional  HTTP  requests  include
              PUT and DELETE, but related technologies like WebDAV offers PROPFIND, COPY, MOVE and more.

scp で帯域制限する

2018-05-26

目的

scp コマンドを使って、容量の大きいファイルをダウンロードしたり、アップロードしたりすると

ネットワークが重くなったり、途中で途切れたりすることがありました。

転送速度を帯域制限することにより制御します。

方法

例えば、 毎秒 5MB までを転送したいときは、

5 (MB) = 5 * 1024 * 1024 * 8 = 41943040 (bit) = 41943.040 (Kbit)

scp コマンドの l オプションを利用します。

(以下 man コマンドより引用)


     -l limit
             Limits the used bandwidth, specified in Kbit/s.

全体のコマンドは下記のようになります。

  • 手元の PC から index.html ファイルを domain.com のサーバーの /home/admin ディレクトリへ配置します。
  • identity_file は domain.com のサーバーへ入る秘密鍵です。
$ scp -P 22 -i identity_file -l 41943 index.html admin@domain.com:/home/admin/

参考

Mac のターミナルから Finder を開く

2018-05-21

目的

Mac のターミナルから、 Finder を開く方法を調べました。

方法

open コマンドを利用します。

下記例では、ホームディレクトリを Finder で開きます。

$ open ~

参考URL

Markdown の記法

2018-05-20

目的

マークダウンの記法を忘れてしまうことがあるので

よく使うものをまとめました。

マークダウンの記法

見出しについて

# 見出し1
## 見出し2
### 見出し3
#### 見出し4
##### 見出し5

見出し1

見出し2

見出し3

見出し4

見出し5

箇条書きについて

* 箇条書き1
* 箇条書き2
* 箇条書き3
  • 箇条書き1
  • 箇条書き2
  • 箇条書き3

番号リストについて

1. 番号1
2. 番号2
  1. 番号1
  2. 番号2

ハイパーリンクについて

[Google](https://www.google.co.jp/?gws_rd=ssl)

Google

コードについて

`echo $test`

echo $test

引用について

> 引用1
> 引用2

引用1 引用2

テーブルについて

| 見出し1 | 見出し2 | 見出し3 |
| ------- | :-----: | ------: |
| item1   | center  | right   |
| item2   | abc     | def     |
見出し1 見出し2 見出し3
item1 center right
item2 abc def

参考URL

Markdown記法 チートシート

MySQL のパスワードを忘れてしまった時にすること

2018-04-15

動作確認バージョン

$ mysql --version
mysql  Ver 14.14 Distrib 5.6.25, for Linux (x86_64) using  EditLine wrapper

目的

MySQL でパスワードを忘れてしまい、どうすることもできなくなったのでログインできるようにします。

手順

MySQL を停止する

$ sudo /etc/init.d/mysql stop
Shutting down MySQL.. SUCCESS!

セーフモードで起動

$ sudo mysqld_safe --skip-grant-tables &
[1] xxxxx

root ユーザーで MySQL に接続する

$ mysql -u root
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 1
Server version: 5.6.25 MySQL Community Server (GPL)

Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

root パスワードを設定する

mysql> use mysql
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed

-- root ユーザーに root というパスワードを設定します
mysql> update user set password=PASSWORD("root") where User='root';
mysql> flush privileges;

MySQL を起動する

$ sudo /etc/init.d/mysql stop
Shutting down MySQL..180227 03:29:21 mysqld_safe mysqld from pid file /var/lib/mysql/localhost.localdomain.pid ended
 SUCCESS!

[vagrant@localhost ~]$ sudo /etc/init.d/mysql start
Starting MySQL. SUCCESS!

参考URL

MySQL のカラム追加時に追加場所を指定する

2018-04-08

動作確認バージョン

$ mysql --version
mysql  Ver 14.14 Distrib 5.6.25, for Linux (x86_64) using  EditLine wrapper

目的

MySQL 5.6 のカラム追加時に追加場所を指定します

設定する

仮に下記のテーブルがあるとします。

CREATE TABLE `test_table` (
  `id` int(10) NOT NULL AUTO_INCREMENT,
  `col1` varchar(50) DEFAULT NULL,
  `col3` varchar(50) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1

カラム追加

mysql> ALTER TABLE test_table ADD col2 varchar(50) DEFAULT NULL AFTER col1;
Query OK, 0 rows affected (0.05 sec)
Records: 0  Duplicates: 0  Warnings: 0

確認する

mysql> show create table test_table\G
*************************** 1. row ***************************
       Table: test_table
Create Table: CREATE TABLE `test_table` (
  `id` int(10) NOT NULL AUTO_INCREMENT,
  `col1` varchar(50) DEFAULT NULL,
  `col2` varchar(50) DEFAULT NULL,
  `col3` varchar(50) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1
1 row in set (0.00 sec)

意図したところにカラムが追加されました。

参考URL

MySQL でスロークエリの設定をする

2018-04-01

動作確認バージョン

$ mysql --version
mysql  Ver 14.14 Distrib 5.6.25, for Linux (x86_64) using  EditLine wrapper

目的

MySQL 5.6 で スロークエリを設定します

設定する

mysql> set global slow_query_log=1;
Query OK, 0 rows affected (0.00 sec)

mysql> set global long_query_time=3;
Query OK, 0 rows affected (0.00 sec)

-- 設定が反映されたことを確認するため、1回終了します
mysql> exit
Bye

確認する

mysql> show variables like 'slow_query%';
+---------------------+-----------------------------------+
| Variable_name       | Value                             |
+---------------------+-----------------------------------+
| slow_query_log      | ON                                |
| slow_query_log_file | /var/lib/mysql/localhost-slow.log |
+---------------------+-----------------------------------+
2 rows in set (0.00 sec)

mysql> show variables like 'long_query%';
+-----------------+----------+
| Variable_name   | Value    |
+-----------------+----------+
| long_query_time | 3.000000 |
+-----------------+----------+
1 row in set (0.00 sec)

mysql> show variables like 'log_output%';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| log_output    | FILE  |
+---------------+-------+
1 row in set (0.00 sec)

log のアウトプット先は、log_output で設定します

log ファイルにしたり、table に保存したりできます

参考URL

Python のバージョンが低いと Telnet で timeout が指定できない件

2018-03-25

目的

Python を触っていた時、Telnet の第3引数に値が入れるとエラーが発生しました。

その原因を調べてみました。

原因

tn = telnetlib.Telnet("www.example.com", port, timeout)

↓

tn = telnetlib.Telnet("www.example.com", port)

参考 URL のドキュメントを見ると分かるのですが、Python 2.5 では

第 3 引数 の timeout が対応していないことが原因でした。

参考URL

unix でログインしているマシンの情報を得る

2018-03-19

目的

複数台の Web サーバーから取得したログファイルを整理するためです。

オプションでいろいろ情報を見ることができます。 今回見たのは、 OS が何 bit か、サーバーの ip アドレスになります。

自分の Vagrant 環境で試しました。

コマンド

何 bit かを調べます

$ uname -p

出力

x86_64

hostname を調べます

$ uname -n

出力

localhost.localdomain

ファイル名にする

$ touch $(uname -n)-$(uname -p).log

localhost.localdomain-x86_64.log のファイルが作成されます。

オプションについて

-p, –processor print the processor type or “unknown”

-n, –nodename print the network node hostname

参考URL

Vagrant が起動しなくなった時にすること

2018-03-17

目的

数年ぶりに Vagrant で環境を立ち上げようとしたら、エラーが発生するようになったので

起動できるようにします。

発生しているエラー

$ vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
==> default: Checking if box 'chef/centos-6.5' is up to date...
==> default: There was a problem while downloading the metadata for your box
==> default: to check for updates. This is not an error, since it is usually due
==> default: to temporary network problems. This is just a warning. The problem
==> default: encountered was:
==> default:
==> default: The requested URL returned error: 404 Not Found
==> default:
==> default: If you want to check for box updates, verify your network connection
==> default: is valid and try again.
==> default: Clearing any previously set network interfaces...
There was an error while executing `VBoxManage`, a CLI used by Vagrant
for controlling VirtualBox. The command and stderr is shown below.

Command: ["hostonlyif", "create"]

Stderr: 0%...
Progress state: NS_ERROR_FAILURE
VBoxManage: error: Failed to create the host-only adapter
VBoxManage: error: VBoxNetAdpCtl: Error while adding new interface: failed to open /dev/vboxnetctl: No such file or directory
VBoxManage: error: Details: code NS_ERROR_FAILURE (0x80004005), component HostNetworkInterface, interface IHostNetworkInterface
VBoxManage: error: Context: "int handleCreate(HandlerArg*, int, int*)" at line 66 of file VBoxManageHostonly.cpp

手順

Virtual Box を再インストール

こちらからダウンロードして、インストールし直します。

起動してみます。

$ vagrant up
The provider 'virtualbox' that was requested to back the machine
'default' is reporting that it isn't usable on this system. The
reason is shown below:

Vagrant has detected that you have a version of VirtualBox installed
that is not supported. Please install one of the supported versions
listed below to use Vagrant:

4.0, 4.1, 4.2, 4.3

Vagrant のバージョンが古いと言われました。

Vagrant のバージョンを確認します。

$ vagrant version
Installed Version: 1.7.2
Latest Version: 2.0.2

To upgrade to the latest version, visit the downloads page and
download and install the latest version of Vagrant from the URL
below:

  http://www.vagrantup.com/downloads.html

If you're curious what changed in the latest release, view the
CHANGELOG below:

  https://github.com/mitchellh/vagrant/blob/v2.0.2/CHANGELOG.md

Vagrant が古いみたいなので新しいバージョンを再インストールします。

Vagrant の再インストール

こちらから再インストールします。

また起動してみます。

$ vagrant up
Vagrant failed to initialize at a very early stage:

The plugins failed to initialize correctly. This may be due to manual
modifications made within the Vagrant home directory. Vagrant can
attempt to automatically correct this issue by running:

  vagrant plugin repair

If Vagrant was recently updated, this error may be due to incompatible
versions of dependencies. To fix this problem please remove and re-install
all plugins. Vagrant can attempt to do this automatically by running:

  vagrant plugin expunge --reinstall

Or you may want to try updating the installed plugins to their latest
versions:

  vagrant plugin update

Error message given during initialization: Unable to resolve dependency: user requested 'dotenv (> 0)'

またエラーが発生してしまいました。

vagrant plugin のバージョンがおかしいみたいなので、インストールし直します。

vagrant plugin をインストールし直す

$ vagrant plugin expunge --reinstall

起動してみます。

$ vagrant up

起動することができました。

参考URL