Node.jsで簡単にwebページを建てる

centOSにNode.jsをインストール

下記サイト参照 qiita.com


test.js

var http = require('http');
var port = 80

// Webサーバーの作成
var server = http.createServer();

// イベントハンドラを登録する
server.on('request',doRequest);

// ファイルモジュールを読み込む
var fs = require('fs');

// リクエストの処理
function doRequest(req,res) {

    fs.readFile('./test.html', 'utf-8' , doReard );
    
    function doReard(err, data) {
        res.writeHead(200, {'Content-Type': 'text/html'});
        res.write(data);
        res.end();
    }
}

// イベントの待機(listen port)
server.listen(port);


test.html

<html>
    <head>
        <meta charset="utf-8">
        <title>テストです</title>
    </head>

    <body>
    本文
    </body>
</html>


参考サイト

qiita.com

【Node.js】 htmlファイルを読み込んで画面を表示しよう。 – web入門

コンソールで実行 

>node test.js


表示結果
f:id:da-machi:20180816010513p:plain   

DropBoxのバックアップ用シェルスクリプト.sh

CentOS上でDropboxのバックアップを行うバッチを書いたので書き置き

(コメント多め)  

DropBoxの連携済が前提

#!/bin/bash

#bk、Dropbox、Latest の3ディレクトリがある前提

f_Drop="Dropbox/"
f_Lat="Latest/"

#diffで更新判定
if [ `diff -r $f_Drop $f_Lat$f_Drop |wc -l` -ge 1 ]; then
    echo "backup開始"
    
    f_bk=bk/`date "+%Y%m%d-%H%M"`
    
    #以下ディレクトリ生成とファイルコピー
    set -x
    
    #Latest中身削除
    rm -d -r $f_Lat$f_Drop
    
    #bk/(日付ディレクトリ)生成
    mkdir -p $f_bk
    
    #Latestへコピー
    cp -r -f $f_Drop $f_Lat
    #bkへコピー
    cp -r $f_Drop $f_bk
    
    set +x
    
    echo "backup終了:${f_bk}に出力しました。"
else
    echo "最新のためbackupしません。"
fi

 

※Tips

[エラー]
予期しないトークン then' 周辺に構文エラーがあります if

[コード]
if△[ `diff -r $f_Drop $f_Lat$f_Drop |wc -l` -ge 1 ]; then

スペースが入ってないとエラーがでます。
△:スペース

 

Djangoでmodelsを使う時の流れ

最近、Djangoを触っているので覚書としてぼちぼち書きたいと思います。

継続は力…

現在作成しているアプリケーション環境は

django version 2.0.5

postgresql

modelsの触り方(※myappは今回作成したテスト用ディレクトリ)

1)myapp/models.py内で

from django.db import models

# Create your models here.
class testlogin(models.Model):
    username=models.CharField(max_length=10)
    password=models.CharField(max_length=10)

コンソール上で

 >python manage.py makemigrations myapp

 f:id:da-machi:20180810004050p:plain

 →この時点でマイグレーションファイルが作成される。

こういう階層関係↓↓(黒塗りはまた別のテーブル)

f:id:da-machi:20180810003743p:plain

 >python manage.py sqlmigrate myapp 0001

f:id:da-machi:20180810004731p:plain

 →フレームワーク側からテーブルが作成される

以下DBに接続し確認したもの f:id:da-machi:20180810005014p:plain

以上。

pythonやろうやん?

まずは環境構築から

 

VBoxにCentOSを入れます。

 

Pythonインストールしま~

下記参考サイト

Python 3.4.3のインストール

 

Pythonを対話モードで動かしま~

下記参考サイト

Pythonの対話モードを使ってみよう!【超初心者向け】 | ハジプロ!

 

とりあえず

f:id:da-machi:20180530235658p:plain

 

動いたんで今日は終わり寝zzz

エクセルマクロ クラスの使い方覚書

自分用覚書記事です

エクセルでの検索系マクロを書く上での
カスタムを意識した設計のものをひとつ

標準モジュール

'ループしながら検索した単語の含まれる
'座標と内容を返す。
Public Function search(ByVal searchStr As String) As Variant

Dim c As Range
Dim first As String
' 最初の検索
Set c = Cells.Find(searchStr)
If c Is Nothing Then
    Exit Function
End If

'1回めの検索ヒット処理
first = c.address
Debug.Print (c.address)

'型宣言と代入
Dim ret As cellData
Set ret = New cellData

ret.address = c.address


Dim retList(2) As Variant
Set retList(1) = ret

'以下2回目以降ループ処理
Do
    ' c に対する処理

    ' 次を検索
    Set c = Cells.FindNext(c)
    If c Is Nothing Then
        Exit Do
    End If
    If c.address = first Then
        Exit Do
    End If
    
    'インスタンス生成による初期化(上書き)
    Set ret = New cellData
    
    'アドレスの代入
    ret.address = c.address
    Set retList(2) = ret
    
Loop

'戻り値に結果を代入
search = retList

End Function


Sub main()
    Dim mainList() As Variant
    
    Debug.Print ("--search開始--")
    mainList = search("特許")
    Debug.Print ("--searchおわり--")
    
    Debug.Print ("-----------------")
    Debug.Print (mainList(1).address)
    Debug.Print (mainList(2).address)
    Debug.Print ("-----------------")

End Sub

クラスモジュール(cellData)

'検索セルのデータ
'検索でヒットしたアドレス
Public address As String
'検索でヒットした文の内容
Public contents As String


スタイルシートで高さを合わせるコツ

うまく高さを合わせるには border: none; で高さを消すのがコツ

css

*{
    width: 100%;
    height: 100%;
    margin: 0;
    padding: 0;
}

#header{
    height: 100px;
    background-color: rebeccapurple;
    border: none;
}

#out_box{
    height:100%;
    width: 100%;
    border: none;
}

#in_box{
    height: calc(100% - 200px);
    background-color: skyblue;
    border: none;
}

#footer{
    height: 100px;
    background-color: rebeccapurple;
    border: none;
}

index.html

<html>

<head>
    <meta charset="UTF-8">
    <link rel="stylesheet" type="text/css" href="css/common.css" />
    <title>トップページ</title>
</head>

<body>
    <div id="out_box">
        <div id="header"></div>

        <div id="in_box"></div>

        <div id="footer"></div>
    </div>
</body>

</html>


見た目こんな感じ
f:id:da-machi:20171203042354p:plain


高さを合計100%になるよう計算するスクロールバーも出ずに きれいに収まった。

ssh設定覚書

ssh設定覚書

サービスの起動
systemctl start sshd.service

サービスの確認
systemctl status sshd.service

ファイアウォールの設定
一時的な追加
firewall-cmd --zone=public --add-service=ssh
恒久的な追加
firewall-cmd --zone=public --add-service=ssh --permanent
設定の反映
firewall-cmd –reload
設定の確認
firewall-cmd --list-all

ポートの直接開放
firewall-cmd --zone=public --add-port=番号/tcp
firewall-cmd --zone=public --add-port=番号/tcp --permanent

※Tera Termからの接続が遅い時
/etc/ssh/sshd_config

UseDNS no
を追記

P.S. System.getProperty("user.home")+File.separatorは偉大