2023年11月19日日曜日

githubめも

GITHUB

要点
・レポジトリの作成
・レポジトリ作成はサーバー側とPC側で必要

・github.comでレポジトリ作成
・サーバー側のリポジトリの作成方法
 (ダッシュボードページの中心にある「Start a new repository for …」を使う)


・giti initでローカルのリポジトリを作成

git init
git add .
git commit -m "初回のコミット"
git remote add origin https://github.com/ユーザー名/リポジトリ名.git
git push -u origin main


# 新しいローカルリポジトリを作成
# ファイルを追加
# 変更をコミット(メッセージ必ず指定する)
# リモートリポジトリを追加(自分のID/リポジトリ名)
# 'main' ブランチをリモートリポジトリにプッシュ


git add ファイル名
(git add .)を使てフォルダ全体を対象にする

git commit -m "コメント"
git remote add origin [自分のgitのリポジトリ]

注意点
・git commit -m "コメント"では、コメントを書かないとeditorが立ち上がる
・「git branch -M main」は不要、最近のgitはブランチは「main」になっている
    (ブランチ名を 'master' から 'main' に変更は不要)
・ローカルのデフォルトのブランチ名を確認には「git branch」で確認する。


その他
エラー発生した場合は、削除する
git remote rm origin



2023年10月6日金曜日

Django の基本

 日本語化


作成したプロジェクト内の「settings.py」の次の2箇所を変更する

LANGUAGE_CODE = 'ja' 

TIME_ZONE = 'Asia/Tokyo' 


settings.py


# Internationalizatio
# https://docs.djangoproject.com/en/4.2/topics/i18n/

LANGUAGE_CODE = 'en-us'

TIME_ZONE = 'UTC'



アプリ作成後には、アプリ名(自分の場合は、classApp)を登録


# Application definition

INSTALLED_APPS = [
    'classApp',
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
]


urls.pyを編集

作成したプロジェクトとアプリ ディレクトリの urls.pyを編集する

アプリ ディレクトリは新規作成します。


path('アプリ名/', include)



from django.contrib import admin
from django.urls import path

urlpatterns = [
    path('admin/', admin.site.urls),
]


モデルを作成後には(models.pyの編集後)以下を実行!

python manage.py makemigrations アプリ名
python manage.py migrate

アプリ名を間違えたか、「settings.py」のINSTALLED_APPSにアプリ名が追加されていない。

アプリ名を間違えると

python manage.py makemigrations clasApp

No installed app with label 'clasApp'.


正常の場合

python manage.py makemigrations classApp

Migrations for 'classApp':

  classApp\migrations\0001_initial.py

    - Create model MemoModel


再度、実行するとファイル変更されていないので…

python manage.py makemigrations classApp

No changes detected in app 'classApp'


以上で準備が完了!



2023年8月20日日曜日

FlaskでSocket.IOでなくWebSocketを使うには

 ソースだけです


サーバー側

from flask import Flask

from flask_sockets import Sockets

from flask import render_template


from gevent import pywsgi

from geventwebsocket.handler import WebSocketHandler

from werkzeug.routing import Rule



app = Flask(__name__)

sockets = Sockets(app)



# @sockets.route('/c2', websocket= True )

def echo_socket(ws):


    #breakpoint()

    print("kimasita")

    while not ws.closed:

        message = ws.receive()

        if message != None:

            ws.send(message)



sockets.url_map.add(Rule('/c2', endpoint=echo_socket, websocket=True))




@app.route('/')

def hello():

    #return 'Hello World!'

    return render_template("index.html")



if __name__ == "__main__":

    server = pywsgi.WSGIServer(('', 8001), app, handler_class=WebSocketHandler)

    server.serve_forever()


ブラウザ側

<html>

<head>

  <title>gevent websocket test</title>

</head>

<body>

  <h1>test</h1>

  <div>

    <input name="send_input" id="send_input" />

    <input type="button" value="push" onclick="send_data()" />

  </div>

  <div>

    <textarea id="view"></textarea>

  </div>

  <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>

  <script type="text/javascript">

var ws = new WebSocket("ws://ik1-446-55369.vs.sakura.ne.jp:8001/c2");

ws.onmessage = function(e) {

  $("#view").html($("#view").val() + e.data + "\n");

};

function send_data() {

  //ws.send( "abcdefg");

        ws.send($("#send_input").val());

};

</script>

</body>

</html>



2023年2月26日日曜日

HPでソースコードのファイルをクリックして表示

 ホームページディレクトリを作成

その中にソースファイルを複数おいて、クリックして閲覧できるようにする。


HPでは、フォルダにindex.htmlが無いとフォルダのファイル一覧を表示します。

今回は、一覧を見やすく事と、正しくエンコードされて見れることに挑戦しましたよ!


通常は次のように表示されます

Index of ~とか、最後のApache/2.4.7~はいらないし
ParentDirectoryに戻るは、危ないしと色々表示してほしくないものがあります。
ので、それを改善します。









それを次のような表示に改善します!!!










ファルダに「.htaccess」を作成してカスタマイズするとかなり便利なことが判明しました。

設定したファイル内容

removeHandler cgi-script .cgi .pl .py .rb

IndexIgnore .. __* *.html *.txt

HeaderName  ./autoindex_head.html

ReadmeName  ./autoindex_end.txt

IndexOptions SuppressHTMLPreamble

#IndexOptions FancyIndexing HTMLTable

IndexOptions FancyIndexing

IndexOptions NameWidth=*


autoindex_head.html

<html>

<head>

  <title>abcdefg</title>

</head>

<body>

<h1>ファイル一覧</h1>

<p>ファイル内容の表示は、

ファイルをクリックして下さい

</p>

<script></script>


autoindex__end.txt
2023/02 更新



フォルダの内容は次のような感じで、HPで「src」をクリックすると「src」フォルダにはindex.htmlがないのでファイル一覧をApacheは表示してくれますね





.htaccessに次の設定を書くだけでも問題はないけね

このフォルダの上位「/book以下」では、CGIが起動できる設定にしまったので

最初の一行「removeHandler 」は必要になってしまいました。

removeHandler cgi-script .cgi .pl .py .rb

AddCharset UTF-8           .py

IndexIgnore .. __* *.html *.txt




mydbg.pyをクリックすると文字化しなく表示されました






ubuntu CGI でエラーの対応(UnicodeEncodeError:ascii' codec can't encode character)


次のソースコード(UTF-8で保存済み)でエラー発生

#!/usr/bin/python3

print("Content-Type: text/html; charset=utf-8\n")

print("あ")

 

 Traceback (most recent call last):

File "/var/www/~ loginMain2.py", line 68, in <module>

     print("\\u3042")

UnicodeEncodeError: 'ascii' codec can't encode character '\\u3042' in position 0: ordinal not in range(128)



修正方法

# micro   /etc/apache2/apache2.conf


環境変数「LC_CTYPE 」をUTF-8にします。

<Directory /var/www/>

Options Indexes FollowSymLinks

AllowOverride All

Require all granted

        SetEnv LC_CTYPE C.UTF-8

</Directory>



解決策まとめ

/etc/apache2/apache2.confファイルに、
SetEnv LC_CTYPE C.UTF-8
を追加します

ubuntu起動方法 version( /etc/issue), service apache2 start

# cat /etc/issue

Ubuntu 14.04.6 LTS

 

# service apache2 stop

 * Stopping web server apache2                                                                                                                                                                                                      

# service apache2 start

 * Starting web server apache2