Go言語 正規表現を使って文字数制限をかけてみる。

Go言語で文字数の制限をかけてみたサンプル。

19文字以上の文字数がある場合は、先頭から19文字までを抜き取ってみる。

もっとシンプルにできたりするのか?

package main

import (
    "fmt"
    "regexp"
)


func main() {

    str :="Lorem Ipsum is simply dummy text of the printing and typesetting industry."
    if(len(str)>20){
    
        r := regexp.MustCompile(`^(.){19}`)
        result := r.FindAllStringSubmatch(str, -1)
        fmt.Println(result[0][0])   
        
    }   
}

結果

Lorem Ipsum is simp

実際の動作はこちらから、

The Go Playground

Linuxユーザーの追加 SSH公開鍵で接続する。

sshの設定、必須な割には度々忘れるのでメモをしておく。

Userの追加

sudo -s

root ユーザーになっておく。

useradd new_user
passwd new_user
su new_user

Keyの設置

~/.ssh/authorized_keys

ユーザーフォルダの配下にauthorized_keysを設置する。

パスワードログインの禁止

/etc/ssh/sshd_config
PasswordAuthentication no

noに変更。

# service sshd restart

serviceを再起動する。

Permission denied のエラーが発生する。

Permission denied (publickey,gssapi-keyex,gssapi-with-mic).
/home/user/.ssh は 0700
/home/user/.ssh/authorized_keys は 0600

エラーが発生した場合は上記のパーミションと所有者を確認する。

chmod -R 700 <user>/.ssh/
chmod 600 <user>/.ssh/authorized_keys
chown -R  new_user <user>/.ssh/

Dockerのコンテナに割り振られているIP情報を確認する

Dockerに割り振られている、IP情報を確認したいときのコマンド。

docker inspect <コンテナID>

IP意外にも設定情報が確認できる。

"IPAddress": "172.17.0.5",

IPはこの部分。

"Memory": 0,
"MemorySwap": 0,

みたいな情報もあって、この値をなにかに利用することもできそうだ。

"Args": [],

は何の値が入るのだろうか、?気になる。

[
{
    "Id": "cf067df275fb76b595d8b5fa700d4f672c5d7e6d3bf6a7ea2ace940a247aade3",
    "Created": "2016-11-09T06:21:13.362604567Z",
    "Path": "/bin/bash",
    "Args": [],
    "State": {
        "Running": true,
        "Paused": false,
        "Restarting": false,
        "OOMKilled": false,
        "Dead": false,
        "Pid": 19858,
        "ExitCode": 0,
        "Error": "",
        "StartedAt": "2016-11-09T06:21:18.454354979Z",
        "FinishedAt": "0001-01-01T00:00:00Z"
    },
    "Image": "77ef9a48cbcd426222db33780cde2594bd9a1f72a8c48baf737dfeaf531a90d7",
    "NetworkSettings": {
        "Bridge": "",
        "EndpointID": "fb5b7617aa6e12ddb0e93958a8d753a06e410d01a3ba896f507dc75f6e6a5a6c",
        "Gateway": "172.17.42.1",
        "GlobalIPv6Address": "",
        "GlobalIPv6PrefixLen": 0,
        "HairpinMode": false,
        "IPAddress": "172.17.0.5",
        "IPPrefixLen": 16,
        "IPv6Gateway": "",
        "LinkLocalIPv6Address": "",
        "LinkLocalIPv6PrefixLen": 0,
        "MacAddress": "02:42:ac:11:00:05",
        "NetworkID": "fce7ae5ca5414255cdde4c64956f841d82d8b3bcfd1328df209b1979741fe7d4",
        "PortMapping": null,
        "Ports": {
            "80/tcp": [
                {
                    "HostIp": "0.0.0.0",
                    "HostPort": "80"
                }
            ]
        },
        "SandboxKey": "/var/run/docker/netns/cf067df275fb",
        "SecondaryIPAddresses": null,
        "SecondaryIPv6Addresses": null
    },
    "ResolvConfPath": "/var/lib/docker/containers/cf067df275fb76b595d8b5fa700d4f672c5d7e6d3bf6a7ea2ace940a247aade3/resolv.conf",
    "HostnamePath": "/var/lib/docker/containers/cf067df275fb76b595d8b5fa700d4f672c5d7e6d3bf6a7ea2ace940a247aade3/hostname",
    "HostsPath": "/var/lib/docker/containers/cf067df275fb76b595d8b5fa700d4f672c5d7e6d3bf6a7ea2ace940a247aade3/hosts",
    "LogPath": "/var/lib/docker/containers/cf067df275fb76b595d8b5fa700d4f672c5d7e6d3bf6a7ea2ace940a247aade3/cf067df275fb76b595d8b5fa700d4f672c5d7e6d3bf6a7ea2ace940a247aade3-json.log",
    "Name": "/web",
    "RestartCount": 0,
    "Driver": "devicemapper",
    "ExecDriver": "native-0.2",
    "MountLabel": "",
    "ProcessLabel": "",
    "Volumes": {
        "/var/www/html": "/var/www/html"
    },
    "VolumesRW": {
        "/var/www/html": true
    },
    "AppArmorProfile": "",
    "ExecIDs": null,
    "HostConfig": {
        "Binds": [
            "/var/www/html:/var/www/html"
        ],
        "ContainerIDFile": "",
        "LxcConf": [],
        "Memory": 0,
        "MemorySwap": 0,
        "CpuShares": 0,
        "CpuPeriod": 0,
        "CpusetCpus": "",
        "CpusetMems": "",
        "CpuQuota": 0,
        "BlkioWeight": 0,
        "OomKillDisable": false,
        "Privileged": false,
        "PortBindings": {
            "80/tcp": [
                {
                    "HostIp": "",
                    "HostPort": "80"
                }
            ]
        },
        "Links": null,
        "PublishAllPorts": false,
        "Dns": null,
        "DnsSearch": null,
        "ExtraHosts": null,
        "VolumesFrom": null,
        "Devices": [],
        "NetworkMode": "bridge",
        "IpcMode": "",
        "PidMode": "",
        "UTSMode": "",
        "CapAdd": null,
        "CapDrop": null,
        "RestartPolicy": {
            "Name": "no",
            "MaximumRetryCount": 0
        },
        "SecurityOpt": null,
        "ReadonlyRootfs": false,
        "Ulimits": null,
        "LogConfig": {
            "Type": "json-file",
            "Config": {}
        },
        "CgroupParent": ""
    },
    "Config": {
        "Hostname": "cf067df275fb",
        "Domainname": "",
        "User": "",
        "AttachStdin": false,
        "AttachStdout": false,
        "AttachStderr": false,
        "PortSpecs": null,
        "ExposedPorts": {
            "80/tcp": {}
        },
        "Tty": true,
        "OpenStdin": true,
        "StdinOnce": false,
        "Env": [
            "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
        ],
        "Cmd": null,
        "Image": "tkcdocker/centos6-mt6-2016-11-08-update",
        "Volumes": null,
        "VolumeDriver": "",
        "WorkingDir": "",
        "Entrypoint": [
            "/bin/bash"
        ],
        "NetworkDisabled": false,
        "MacAddress": "",
        "OnBuild": null,
        "Labels": {}
    }
}
]

パーセプトロン

パーセプトロン、DeepLearningの基礎となるアルゴリズム。

このアルゴリズムをプログラムに落とし込んでみると簡単な計算式でしかない。

ここでは、ANDゲートというものを作ってみる。 2つの値を入力し敷居値より大きい値か否かを判断して、0 or 1 を返す。

本来この計算式にはバイアスがかからなければ、それは人間でいったら感情というべきものなのだろうか、 この式ではそのようなバイアスは存在していない値を入れれば、素直に数値そのものが返ってくる。

gist.github.com

ゼロから作るDeep Learning

ゼロから作るDeep Learning

f:id:loosefingers:20161107092330j:plain

Deep learnig そろそろやってみたいと思い、

Oreily本を買ってみる。少しずつ進めていこう。いやー、久しぶりに楽しみ。思えば、web開発やアプリ開発は、表現手段をネットワーク経由で変換し続ける方法のように思う。基本的に打てばかならず決まった何かがどこからか帰ってくる。そこに曖昧さは入り込む余地はないのだけれどディープラーニングではどのような解釈になるのであるのか、まだまだ何もわかっていない。

www.amazon.co.jp

予定

パーセプトロン

ニューラルネットワーク

誤差逆転伝播法

畳み込みニューラルネットワーク

ディープラーニング

windows7のupdateが終わらない時に為に、

訳あって、windows7を使わなければいけない必要があったのだが、 windows updateが延々に終わらなかったので、メモ。。

web上にはこのUpdate一連の流れを地獄と表現した箇所があったがまさにそのとうりだと思う。しっくりきた。 この情報が少しでも地獄の道先案内になってもらえればと思い記す。

手順

まずwindows updateを停止する。

出だしからまず躓く、なぜこの作業が必要かといえば、個別のupdateファイルをインストールするしなければいけないのだが、

windows updateを有効にしている場合は、個別ファイルをインストールするタイミングで更新ファイル全体の確認を実行する。そして終わらない。。無限地獄が始まるのである。

素直に、windows updateは停止する。そこに理由などはないのだ。

Just do it.

f:id:loosefingers:20161101223529p:plain

IE11をインストールする。

IE11をinstall

Download Internet Explorer 11 for Windows 7 from Official Microsoft Download Center

Windows 7 SP1を適用する。

まずは、ここからsp1を適用する。

Download Windows 7 and Windows Server 2008 R2 Service Pack 1 (KB976932) from Official Microsoft Download Center

f:id:loosefingers:20161101223706p:plain

この時、ダウンロードボタンが表示されない現象が発生した。 ダウンロードセンターでダウンロードボタンが表示されない場合の対処方法 oshiete.goo.ne.jp

KB3138612

KB3138612といわれる、更新ファイルをインストールする。

個別ファイルには、32bit用と64bit用などに分かれており、自分の環境に適合したファイルをダウンロードする必要があるようだ。

Download Windows 7 for x64-Based Systems 用更新プログラム (KB3138612) from Official Microsoft Download Center (このリンクは64bit版用である為、お使いのwindowsの環境にあわせてください。)

windows update を実行する。

この状態でやっと、windows updateを実行する。

ネット上には、この KB3138612をインストールした後に、劇的に確認時間が短縮されるとの情報もあるがそのような事はなかった、20-30分まったと思う。

しかし、地獄はまだまだ続く、 Windows Updateで80072f8fのエラーが発生した。 どうも、時間を正確に設定しておく必要があるらしい。 tuberculin.blog102.fc2.com

所感

windows7のupdateは、素直に、windowsの操作に従うだけでは一向に解決する気配はなかった。 またマイクロソフトによる公式的な対応方法のアナウンスも見つけることはできなかった。 なかなかに興味深い問題であって、ネット上に膨大にある情報を寄せ集めて対応するしかないようだ。 しかし、まだ、業務ではwindows7に依存したシステムが多く存在すると思う。ベストプラクティス的な情報はどこかにあってしかるべきだとおもうが、githubにそのようなレポジトリもみつけることもできなかった。数年ぶりに必要があってwindowsを触ったのがなかなかの作業であった。

この記事が参考になりました。感謝。 www.ikt-s.com

Dockerを使って、CentOS7にMysqlをインストールしてみる

Dockerを使って、CentOS7にMysqlをインストールしたところ、 systemdが動作しなかったのでメモ。

systemdをdocker内で動かす為に、以下のコマンドでCentOS7を起動。

docker run -d -it --privileged -p 80:80 -v /Users/tkc/git/Docker-MT/Code/web0:/var/www --name web0 centos:7 /sbin/init

それ以外は通常の作業でいけました。

作業ログ gist.github.com