忍者ブログ
Admin / Write / Res
ちゃんとカテゴリ分けされておりませんので、 記事をお探しならブログ内検索が便利です。 ご活用くださいませー+.(≧∀≦)゚+.゚
ブログ内検索
カレンダー
04 2024/05 06
S M T W T F S
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
カウンター
アクセスカウンター
最新コメント
[04/05 Fully Vaccinated Adorable Escort Service in bengaluru 8273600238]
[03/26 Tonaldcet]
[01/16 jilibet]
[10/20 Call Girl in Delhi]
[09/07 לפרטים נוספים]
最新トラックバック
プロフィール
+ハンドル+
y_ayamori(purple)
+職業+
IT系エンジニア
+すまい+
さいたま
バーコード
[1]  [2]  [3]  [4]  [5]  [6]  [7
OSをインストールした直後にとりあえずやっておきたいこと。
それはその時点で最新の状態にしておきたい。
サーバならセキュリティも考慮してなおのこと。
最近はコマンドのオプションも変わって来ているのでざっくりメモです。

下記メッセージにも有効です
0 updates can be installed immediately.
0 of these updates are security updates.


## Ubuntu Server 20.04

sudo apt list --upgradable
sudo apt --allow-downgrades --allow-remove-essential --allow-unauthenticated -y update
sudo apt --allow-downgrades --allow-remove-essential --allow-unauthenticated -y upgrade
sudo apt --allow-downgrades --allow-remove-essential --allow-unauthenticated -y dist-upgrade
sudo apt --allow-downgrades --allow-remove-essential --allow-unauthenticated -y autoremove

sudo reboot

# 検索タグ
UbuntuServer20.04

拍手

PR
fioのコマンドについてすぐ忘れてしまうのでメモ。
といっても他サイトのコピペですけど ←

# インストールされていない場合
sudo apt --allow-unauthenticated -y install fio

# ざっくり計測
fio -filename=/tmp/testr  -direct=1 -rw=read      -bs=4k -size=1G -numjobs=64 -runtime=10 -group_reporting -name=file1
fio -filename=/tmp/testw  -direct=1 -rw=write     -bs=4k -size=1G -numjobs=64 -runtime=10 -group_reporting -name=file2
fio -filename=/tmp/testrr -direct=1 -rw=randread  -bs=4k -size=1G -numjobs=64 -runtime=10 -group_reporting -name=file3
fio -filename=/tmp/testrw -direct=1 -rw=randwrite -bs=4k -size=1G -numjobs=64 -runtime=10 -group_reporting -name=file4

# writeバッファを利かせた計測の場合
fio -filename=/tmp/testr  -rw=read      -bs=4k -size=2G -numjobs=64 -runtime=10 -group_reporting -name=file1
fio -filename=/tmp/testw  -rw=write     -bs=4k -size=2G -numjobs=64 -runtime=10 -group_reporting -name=file2
fio -filename=/tmp/testrr -rw=randread  -bs=4k -size=2G -numjobs=64 -runtime=10 -group_reporting -name=file3
fio -filename=/tmp/testrw -rw=randwrite -bs=4k -size=2G -numjobs=64 -runtime=10 -group_reporting -name=file4


refs: https://qiita.com/toshihirock/items/fa4d310115e6921ab0ac

# 検索タグ
fio
UbuntuServer20.04

拍手


サクッとDjangoを動かしてみるの続きです。

とりあえず動的なページはさておき(とはいえ動的なページ主役ですが)が、静的なページにアクセスできるようにしてみましょう。
CSSやJS、画像など以外にも静的なページも重要です。

とはいえ、諸々端折った結果、ここに記載のやり方はあまりよろしくないやり方です。
それはWEBサーバとAPサーバという構成についてある程度知見があればわかる話ですが、ここでは避けます。
あくまで手段の一つ、中小規模のサイトではまずまずこれでもよいでしょうってところでお願いします。

試すのはこちらの画像を拝借しましょう
一応フリーアイコンと称されております。
https://twitter.com/_toki_s/status/1297399221117542402/photo/3


# 前回の続きを前提としているため、このディレクトリはもう存在しているものとします
cd /tmp/sample/
mkdir -p static/sample

# ダウンロード
curl -c 'https://pbs.twimg.com/media/EgFJtY0UYAEf0EC?format=jpg&name=medium' --output static/sample/icon.jpg




# sample/settings.py

# これは任意だけどgunicornを前提としているのでここでは修正対象
-ALLOWED_HOSTS = []
+ALLOWED_HOSTS = ['*']

# STATIC_URLの下あたりに追加
+STATIC_ROOT = os.path.join(BASE_DIR, 'static')



# sample/urls.py


# 既存import文の近くに記載しておく
+from django.conf import settings
+from django.conf.urls.static import static

# こんな感じで既存の配列に加える感じ
urlpatterns = [
path('admin/', admin.site.urls),
-]
+] + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)




# gunicornを起動

gunicorn sample.wsgi --bind 192.168.3.97:8000




後はブラウザで確認してどうか、って感じでしょうか。
http://192.168.3.97:8000/static/sample/icon.jpg

sample/static の中にあるディレクトリはすべてhttp://192.168.3.97:8000/static/からアクセス可能です。
今回は sample/static/sample/icon.jpg と配備したので http://192.168.3.97:8000/static/sample/icon.jpg となります。

■検索タグ
python3
Django==3.1
django

拍手

1から構築する場合の手順なんてあっという間に忘れてしまうよね(;'∀')
ちょっとメモします。
ただし、本当にDjangoが単体で動くところまでです。
例によってMX Linuxで検証。
たぶんLinuxはそのまま、応用でWindowsも同じだと思います。


# MX Linux はpipがデフォで入っていない
sudo apt install python3-pip
# Django のインストール
sudo pip3 install django
# Django 組み込みサーバ(runserver)でもいいけど、gunicorn入れてみる
sudo pip3 install gunicorn

# sample というプロジェクトを作ってみる
cd /tmp
django-admin startproject sample

# サーバ起動
cd sample
gunicorn sample.wsgi
# サーバとしてならローカルのグローバルIP(状況による)を指定して起動もありです
# -> その場合ALLOWD_HOSTを変える必要があるけど
gunicorn sample.wsgi --bind 192.168.3.97

# curl でアクセス確認
# ブラウザがあるならブラウザでもいいと思います
curl http://localhost:8000/ 2>/dev/null | grep title





# 検索ワード
python3 django==3.1

拍手

MX Linuxというのが最近気になっちゃって…
debianベースということでUbuntuチックかなと、サーバを立ててみたものの、やや癖がありました。
標準リポジトリでも default-mysql-server というMySQLをインストールできるみたいです。
けれど今回はおおもとのMySQLに記載されているやり方でやってみようと思います。


sudo apt -y update
sudo dpkg --configure -a
sudo apt -y upgrade
# DL リンクは下記URLの「No thanks, just start my download.」というアンカーテキストにあります
# https://dev.mysql.com/downloads/file/?id=494003
wget 'https://dev.mysql.com/get/mysql-apt-config_0.8.15-1_all.deb'
sudo dpkg -i mysql-apt-config_0.8.15-1_all.deb
-> インストールするMySQLのバージョンを選択可能
sudo apt -y update
sudo apt -y upgrade
sudo apt -y install mysql-server
-> root パスワードを設定可能
sudo /etc/init.d/mysql start
-> 基本的には起動済みの幡豆
mysql -u root -p

拍手

「Google Wifi買ってみました」の続きです。
我が家のインターネットは一見落ち着きを見せたものの、一部の機器で動画の再生が思うように行かない事象が発生しました。
なぜ(・・∂)

無線/有線問わず、単体では事象を確認できない。
と、なると複合要素で発生するのでしょうけど、ノイズが原因だとするとほぼお手上げ状態。
とりあえず、単体で問題がないから、何らか通信が混雑したときに発生すると仮定。
怪しいのはLANケーブルね。。。

LANケーブルもまぁ、年季入っているからねぇー( ´•ᴗ•ก)
しかし300Mbps出るんだからカテ5eはあるのだと思うんだけど、ケーブルが無地…
劣化も考えられるから、いっそのこと買い替えだぁ!( ´ ▽ ` )

そこで悩んだのがカテ7かカテ6かカテ5eか…
劣化で疑うならカテ5eで十分。
しかし今回は回線の混雑の疑いがありますから伝送帯域を重点的に選んでみたいと思います。
と、言うことでカテ6か7か。
1mで1,000円を超えるか超えないかに差し掛かりました。
カテ6にするだけで伝送帯域は2倍強、しかしカテ7ならば6倍だぁ(ノ≧∀)ノ

しかしどうしても1mのLANケーブルごときに1,000ちょいは高い…(๑•﹏•)
そんな優柔不断な私の前にひょっこりはんのように顔を見せたのがカテ6A。
そこそこ大きな家電量販店に伺いましたからLANケーブルだけでも四方見渡せるようなまさにラインナップでしたが、カテ6Aはウォーリーを探せばりの存在感で数点目に入ってきた。
しかしこれこそ予算と性能のバランスが取れた商品ではないですかぁ(# ̄ー ̄#)

と、いうことでCAT6Aを購入。
1日様子を見てみましたが、調子良さそう゚゚♪゚((○>∀・)ノ

と、いうことでネットワーク周りは総合的に見直そうね、ってお話でした。

拍手

Google Nest WifiではなくGoogle Wifiね(苦笑)

実は自宅のWi-Fiは光回線を通した2010年以来そのままでした。
規格もb/g/nでした。
そのため、Wi-Fiを通すと50Mbps程度しか速度が出ないのですが、でも、まぁ、それくらい出たら十分じゃないの(笑)という感じで気にしていませんでした。
しかし最近非常に不満が出てきました・・・
・画像、動画を含む場合にSNSでの投稿に失敗する
・キャッシュレスチャージに失敗する(泣)
・ChromeでライトモードをONにしていると特定のサイトの表示に5秒以上かかる
 → OFFにすると戻る
・動画(YoutubeとかAbemaとかね)の瞬断が発生する
・動画(Youtubeとかniconicoとかね)で任意のポジションにカーソルを持っていくと再生までに10秒以上かかる
さすがに不満を通り超えてストレスになってきたので、Wi-Fiを変えることにしました。
※有線は全く不満がない上、400Mbps程度でていたので回線そのものに問題はないと判断しました

そこで白羽の矢が立ったのがこれです。
https://www.janpara.co.jp/sale/search/detail/?SRCODE=99044421&SHPCODE=99&TYPE=&gclid=CjwKCAiA8qLvBRAbEiwAE_ZzPbGeFQFKhivSP7Az90cBSytM4P4WDZJEgFF0x4ZX_KTQ89iC1s04qRoC3pMQAvD_BwE
※あたしが買ったので「完売」になりました(笑)

アプリが必要になるので、今のWi-Fiを取り外す前にセットしないとね。
その後はウィザード形式で設定が進んでいくので、口コミ通り設定はめちゃくちゃ簡単でした。
唯一の不満はポートフォワーディングが1ポートずつってとこかな?
できればDMZ設定が欲しかったカナ。

さて、お待ちかね、速度チェーック!!
気になるスループットは・・・80Mbps!
おっっっっそーーーい Σ(; ゚Д゚)ウハッ
まぁ、それでも以前より上がっているので、よしとしましょう。
今回はスループットというよりセッション品質なので・・・

ということで不満だった5項目を試してみると!?
早い!
というより心なしもっさりしていたものがキビキビした感じ。
読み込みのグルグルが1回転から0.75回転くらいになった感じ。
御存知の通り、WEBサイトはHTML1枚で構成されていることは稀ですので、レンダリングに関わる細かなセッションの一つ一つが数%改善されると全体の改善が際立ちます。
もちろん投稿できないとか、コミットできないとか、全くなくなりました。

と、いうことでやっぱり時代に合わせて機器を取り入れないとだめね、ってお話でした。
デスクトップPCもそろそろPhenom II から変えようかしら?
でも全然不満ないのよね ←
ちなみにデスクトップPCは310Mbpsへダウン orz
体感何も問題ないけど。

拍手

テキストをリクエストすると加工して返してくれるみたいな処理をPython3.5*mod_wsgiで組んでみました。
もともとPythonでWEBアプリケーションを組む際はDjangoを使うことが多く、ごくごく普通にWSGIを使っていました。

今回はいろいろなシステムからの結合を考えてAPIでI/Fを整えたバッチシステムです。
システム統合と汎用性を重視した設計だったのですが、一部からもう少しスループットを向上したいと要望が。
単純にCPUコアを載せてみたところ…?

体感でほぼ変わらないとのこと。
うーん、あたしはインフラ屋とは違うんだけどなぁ(-_-;)



見てみたところ、なんと遊んでいるCPUコアがある!
しかも真面目にお仕事しているApacheは1つしかない…
これは驚愕の事実です
※ちなみにデーモンモードでvirtualhostを使用しています

これはすなわちDjangoアプリケーションでスループットを上げるにはエンベデッドモードかサーバをスケールアウトするしかないということです。
実にイケてない。
え?本当に?
おそらくデーモンモードは割り当てたプロセスグループ(WSGIProcessGroup)1つにつき1プロセスなんだと思います。
なので、VirtualHostを複数切って受ければ行ける?

試したところ、想定通りのうごきとなりました~♪
VirtualHostで組み込みモードが使えればいいのですが…
今のところできないんですよね…
※WSGIPythonHomeなどがVirtualHostセクションで使用できない

拍手

業務の都合上プロキシが必要になることがありまして。。。
よく参考にさせていただく、オープンプロキシのサイトを備忘録的に掲載させていただきます。

http://free-proxy.cz/ja/
http://lab.magicvox.net/proxy/
http://proxy.moo.jp/ja/
http://tools.rosinstrument.com/
http://www.cybersyndrome.net/plr6.html
http://www.gatherproxy.com/ja
https://us-proxy.org/
https://www.proxynova.com/proxy-server-list/
https://proxy-stock.ddns.net/

拍手

私がPythonを学び始めた2011年ころはほぼ日本語のドキュメントや記事はありませんでした。
いまはだいぶ豊富になりましたね。
それでもまだ機械学習などバッチ的要素での活躍が多くWEBはなかなか採用が見られません。
そのため、PythonでWEB開発を使用とすると意外に情報収集が困難だったりします。
なので個人的に役にたったよーって一覧を載せておきすね♪


(認証などのシステムで)ユーザの作成や変更など
https://docs.djangoproject.com/en/2.2/topics/auth/default/

formクラスの基本的な使い方
https://eiry.bitbucket.io/tutorials/tutorial/forms.html

formとmodelが対になっている場合のPOSTデータのDB登録
https://djangobrothers.com/tutorials/memo_app/form/

フォームの表示方法まとめ
https://narito.ninja/blog/detail/98/

ラジオボタンを設置
https://qiita.com/xKxAxKx/items/284abc565715f2283fec

inputタグのhidden
https://dot-blog.jp/news/django-modelform-field-hidden/


拍手

Copyright ©  アナログを愛するデジタル生活館 All Rights Reserved.
* material by Pearl Box   * Template by tsukika

忍者ブログ [PR]