ログイン | アカウント作成
イイネで画面がリフレッシュされるのを改善したよ
いいね数:1
ログインするといいねできます。
#アップデート
投稿日:2026年7月25日16:16
動画投稿
いいね数:3
ログインするといいねできます。
タグなし
投稿日:2026年7月24日13:57
動画投稿解禁しましま
いいね数:2
ログインするといいねできます。
タグなし
投稿日:2026年7月24日13:46
『恋は文化的ミームの中で育つ──オタク的連帯と進化心理学から見た婚活戦略』
サピエンスの恋愛は、実は「趣味の共通性」という文化的ミームの中でこそ発芽する。無数の異文化の中から、あなたが属する部族を見つけること。それが婚活という儀礼の第一歩なのだ。
■ ホモ・サピエンスの婚姻行動の特徴とは?
進化人類学・文化人類学の観点から、ホモ・サピエンスには以下のような傾向がある。
1. 長期的なペアボンド形成:一夫一妻的な傾向が強い(ただし多様性あり)
2. 性的二型性の弱さ:外見的な男女差が小さく、行動面でも分業が柔軟
3. 象徴行動・装飾の使用:自分の社会的価値や所属を示すための言語、服装、文化資本の使用
4. 協力的子育て(alloparenting):血縁以外も含む共同育児が重要視される
5. 匂い・顔・対称性などの生理的好みに加え、文化的・象徴的な適合性(言語、価値観、ステータス)を強く重視
■ ホモ・サピエンスの進化的特徴を活かした婚活法
①象徴資本の提示戦略:本を読んでいる姿や、歴史ある趣味をプロフィールに載せる。象徴行動の進化により、人類は見せたい自己像を構築・共有で…
続きを読む
『恋は文化的ミームの中で育つ──オタク的連帯と進化心理学から見た婚活戦略』
サピエンスの恋愛は、実は「趣味の共通性」という文化的ミームの中でこそ発芽する。無数の異文化の中から、あなたが属する部族を見つけること。それが婚活という儀礼の第一歩なのだ。
■ ホモ・サピエンスの婚姻行動の特徴とは?
進化人類学・文化人類学の観点から、ホモ・サピエンスには以下のような傾向がある。
1. 長期的なペアボンド形成:一夫一妻的な傾向が強い(ただし多様性あり)
2. 性的二型性の弱さ:外見的な男女差が小さく、行動面でも分業が柔軟
3. 象徴行動・装飾の使用:自分の社会的価値や所属を示すための言語、服装、文化資本の使用
4. 協力的子育て(alloparenting):血縁以外も含む共同育児が重要視される
5. 匂い・顔・対称性などの生理的好みに加え、文化的・象徴的な適合性(言語、価値観、ステータス)を強く重視
■ ホモ・サピエンスの進化的特徴を活かした婚活法
①象徴資本の提示戦略:本を読んでいる姿や、歴史ある趣味をプロフィールに載せる。象徴行動の進化により、人類は見せたい自己像を構築・共有できる能力を持つ。
②文化的適合性のシグナリング:自分が好む価値観を、婉曲にプロフィール文にちりばめる。言語によって連帯や所属を識別する能力を活かす。
③共同育児可能性の演出:家族や子供との自然な関わりを示す。協力的な子育てパートナーであることは、進化心理学的に高い配偶者価値を持つ。
④ストレス耐性&協力性の実証:共助・協力の経験談を語る。サピエンスの生存戦略は協力であり、その適性が評価される。
⑤視覚・象徴での補完:写真の対称性・清潔感・目線などの細部にこだわる。生理的な匂いなどの評価が婚活市場では機能しないため、視覚的・象徴的シグナルがそれを代替する。
単純接触効果(ザイアンス効果)というものもある。人は繰り返し接触する対象に好感を持ちやすい(ただし不快な第一印象は逆効果)。進化的には「見慣れたもの=危険ではない」と脳が判断して好意を抱く。
好意の返報性も重要だ。好意をほのめかすと、相手も好意を返しやすくなる。人類は所属の兆しを敏感に察知し、無意識的に相互関係を形成しやすい。
■ SNSでこれを最大化する戦略
・投稿は内容よりも頻度と親しみを重視する。月1の豪華な投稿より、週2?3回の軽やかな投稿のほうが接触効果は高い
・偶然性を装った接触(ストーリーズの活用)で、非侵襲的に存在を示す
・好意の返報性サインを、軽いいいねやコメントでやんわり出す
・共通文化・価値の提示で、生得的な仲間意識を発動させる
・DMでの接触は弱い接続から始める。いきなり誘うのではなく、共感から入る
■ なぜ「手当たり次第」ではなく「文化的連帯のある相手」に絞るべきか
進化心理学的には、ヒトは自分に似た者、所属が近い者に対して本能的に親近感と信頼を抱きやすい。共有する文化は同じ部族・集団であるという進化的認識によるものだ。
文化人類学的には、恋愛や婚姻は社会的・象徴的儀礼でもある。共通の文脈(趣味・文化・言語)が関係の持続や深まりの鍵になる。
情報戦略的には、無差別アプローチは相手にとってノイズになる確率が高い。自分の文化圏にいる弱いつながりの相手へのアプローチの方が受容されやすい。
■ 結論:ヒトは「連帯の空気」から恋を始める
手当たり次第のアプローチは部外者の乱入として警戒されやすく、文化的連帯を感じる相手との関係は所属と親和の進化的感覚を刺激する。狭く深く狙うことが、最もホモ・サピエンスらしい恋愛戦略だ。
顔はどうにもならないから体型を変えるのも一つの手だ。筋肉は加点になる。髪型の清潔感も大事にしたい。
■ 追記:最新学説から見る「婚活ハック」
近年の進化心理学・文化進化論・神経科学の研究を踏まえると、いくつかの知見が加わる。
1. 二重システムのハック:遺伝的な健康シグナル(筋肉や清潔感)と、文化的な所属シグナル(趣味や価値観)の両輪が揃ってこそ、サピエンス的な恋愛アプローチが成立する。
2. ワクワクと安心の二重効果:恋愛における脳内システムは、ドーパミン(ワクワク)とオキシトシン(安心)の二重構造で動く。新しい体験のシェアと、共感できる日常の発信の両方が有効。
3. ニッチの力:人は自分が安心できる文化空間を作り、その中でつながりを築く。趣味コミュニティでの出会いは、進化的にも理にかなった婚活ルートだ。
4. 努力の痕跡は最強シグナル:努力を要する行動は信頼性の高いシグナルになる。継続した趣味や習慣は、誠実性を伝える強力な証拠になる。
5. レイヤーの深まり戦略:最初は趣味などの軽いレイヤーで接触し、徐々に人生観や将来像といった重いレイヤーを共有していくことで、関係が自然に深化する。
つまり、婚活とは遺伝と文化の両方を賭ける進化的儀礼だということ。狭い文化的連帯は偶然の産物ではなく、恋愛戦略として理にかなっている。
(元記事: https://note.com/uni_kid/n/n8a2dcc64d2f3 )
閉じる
いいね数:2
ログインするといいねできます。
#婚活
#人類学
#雑談
投稿日:2026年7月23日9:16
ITエンジニアのキャリアについて語られるとき、よく言われるのが「給料を上げたいなら転職するしかない」という言葉である。
実際、多くのエンジニアが数年おきに転職を行い、そのたびに年収を上げている。一方で、同じ会社に長く在籍しているエンジニアは、昇進しても給与の伸びが緩やかであるケースが少なくない。
本稿では、なぜIT業界では「企業内昇進」よりも「転職」によって賃金が上がりやすいのか、その構造を整理してみたい。
■ ITスキルは「持ち運びできる」
労働経済学では、人間のスキルを「人的資本」と呼ぶ。この人的資本には大きく二種類ある。企業固有のスキルと、他社でも通用するスキルだ。
ITエンジニアのスキルは後者の比率が高い。例えばLinux、Python、AWS、Kubernetes、SQLといった技術は、基本的にどの会社でも価値がある。つまり「その会社にいないと価値が出ないスキル」ではない。
このようなスキルは市場価値が外部で評価されやすい。そのため、会社の内部で昇給を待つよりも、転職市場で評価してもらった方が賃金が上がりやすい。
■ 企業の給与テーブルは市場より遅れて動く
…
続きを読む
ITエンジニアのキャリアについて語られるとき、よく言われるのが「給料を上げたいなら転職するしかない」という言葉である。
実際、多くのエンジニアが数年おきに転職を行い、そのたびに年収を上げている。一方で、同じ会社に長く在籍しているエンジニアは、昇進しても給与の伸びが緩やかであるケースが少なくない。
本稿では、なぜIT業界では「企業内昇進」よりも「転職」によって賃金が上がりやすいのか、その構造を整理してみたい。
■ ITスキルは「持ち運びできる」
労働経済学では、人間のスキルを「人的資本」と呼ぶ。この人的資本には大きく二種類ある。企業固有のスキルと、他社でも通用するスキルだ。
ITエンジニアのスキルは後者の比率が高い。例えばLinux、Python、AWS、Kubernetes、SQLといった技術は、基本的にどの会社でも価値がある。つまり「その会社にいないと価値が出ないスキル」ではない。
このようなスキルは市場価値が外部で評価されやすい。そのため、会社の内部で昇給を待つよりも、転職市場で評価してもらった方が賃金が上がりやすい。
■ 企業の給与テーブルは市場より遅れて動く
企業の給与は多くの場合、年功・社内評価制度・昇進などによって決まる。
しかしIT人材の市場価格は、技術トレンドや人材不足によって急激に変化する。例えばクラウド、AI、セキュリティといった分野では、短期間で人材の市場価値が跳ね上がることがある。
企業内部の給与制度はこうした変化にすぐには対応できない。結果として、社内給与<転職市場の給与という状況が生まれる。この差を埋める最も簡単な方法が転職になる。
■ 日本のIT業界特有の構造
日本ではさらに特殊な事情がある。それがSES(客先常駐)多重下請け構造である。
IT業界では、発注企業→一次請け→二次請け→三次請けという商流が珍しくない。この構造では、エンジニアの単価が上がっても、その利益が必ずしも給与に反映されない。
つまり、市場価値が上がっても会社に残ると給料が上がらないという状況が起きやすい。結果として、より単価の高い会社へ移ることが、賃金上昇の主要な手段になってしまう。
■ 転職がキャリア戦略になる
このような構造の中で、多くのエンジニアは次のようなキャリア戦略を取る。1社目で経験を積み、2社目で市場価値で再評価され、3社目でより高単価のポジションへ。
つまり、会社の中で昇進するのではなく、会社を変えることで昇給するというキャリアパターンである。
■ もちろん例外もある
すべてのIT企業がこの構造というわけではない。例えば外資系IT企業、急成長しているプロダクト企業、ストックオプション制度がある企業などでは、社内で大きく年収が上がるケースもある。
しかし、日本のIT業界全体を見ると、依然として転職が賃金上昇の主要ルートであることは否定できないだろう。
■ 結論
IT産業ではスキルの可搬性が高い、市場価値の変動が大きい、日本では多重下請け構造がある、という理由から、企業内昇進よりも転職によって賃金が上昇する傾向が強い。
この構造が続く限り、「エンジニアは転職して給料を上げる」というキャリアモデルは、今後もしばらく続く可能性が高い。
(元記事: https://note.com/uni_kid/n/n2f32dcbbbe03 )
閉じる
いいね数:1
ログインするといいねできます。
#転職
#会社
#エンジニア
#スキル
#構造
投稿日:2026年7月23日9:14
ありがとうございます
いいね数:1
ログインするといいねできます。
#雑談
投稿日:2026年7月23日6:33
このサイトを自宅サーバー(RHEL + Apache httpd)で運用する中で、実際に使ってきたApacheの設定項目(ディレクティブ)を、体系立ててまとめてみます。公式ドキュメントは網羅的すぎて最初はとっつきにくいので、「実際に何のために使うのか」という視点で整理していきます。
■ そもそもディレクティブとは
Apacheの設定ファイル(httpd.confや、conf.d以下の個別ファイル)に書く、1行1行の設定項目のことをディレクティブと呼びます。「このURLパスにはこの権限が必要」「このドメインが来たらこのアプリを表示する」といった、Apacheの振る舞いを決める命令文だと考えると分かりやすいです。
■ VirtualHost:1台のサーバーで複数サイトを扱う
同じサーバー上で、異なるドメインや異なるポートごとに別々のサイトを配信するための仕組みです。
<VirtualHost *:443>
ServerName example.com
ServerAlias www.example.com
SSLEngine on
SSLCert…
続きを読む
このサイトを自宅サーバー(RHEL + Apache httpd)で運用する中で、実際に使ってきたApacheの設定項目(ディレクティブ)を、体系立ててまとめてみます。公式ドキュメントは網羅的すぎて最初はとっつきにくいので、「実際に何のために使うのか」という視点で整理していきます。
■ そもそもディレクティブとは
Apacheの設定ファイル(httpd.confや、conf.d以下の個別ファイル)に書く、1行1行の設定項目のことをディレクティブと呼びます。「このURLパスにはこの権限が必要」「このドメインが来たらこのアプリを表示する」といった、Apacheの振る舞いを決める命令文だと考えると分かりやすいです。
■ VirtualHost:1台のサーバーで複数サイトを扱う
同じサーバー上で、異なるドメインや異なるポートごとに別々のサイトを配信するための仕組みです。
<VirtualHost *:443>
ServerName example.com
ServerAlias www.example.com
SSLEngine on
SSLCertificateFile /etc/httpd/ssl/server.crt
SSLCertificateKeyFile /etc/httpd/ssl/server.key
</VirtualHost>
ServerNameで、このVirtualHostがどのドメインへのリクエストに反応するかを指定します。ServerAliasは、追加で反応させたい別名(wwwありなし等)を指定する際に使います。
■ WSGIDaemonProcess・WSGIScriptAlias:Pythonアプリとの連携
DjangoのようなPython製Webアプリケーションを動かすには、mod_wsgiというモジュールを使います。
WSGIDaemonProcess myapp python-home=/path/to/venv python-path=/path/to/project
WSGIProcessGroup myapp
WSGIScriptAlias / /path/to/project/project/wsgi.py
WSGIDaemonProcessは、Apacheの本体プロセスとは別に、Pythonアプリ専用の子プロセスを立ち上げる設定です。python-homeには仮想環境(venv)のパス、python-pathにはDjangoプロジェクトのパスを指定します。WSGIScriptAliasは、どのURLパスにアクセスされたら、どのwsgi.pyファイルを呼び出すかを紐付けます。
なお、WSGIApplicationGroup %{GLOBAL} という設定を追加しないと、「populate() isn't reentrant」というエラーが出ることがあります。これは、複数のPythonアプリケーションが同じインタプリタ内で衝突しないようにする設定で、Django単体で運用する場合は基本的に付けておくとトラブルを避けられます。
■ Alias:静的ファイルの配信場所を指定する
画像やCSSなど、Pythonを介さずそのまま配信したいファイル群のために使います。
Alias /static/ /data/static/
<Directory /data/static/>
Require all granted
</Directory>
Aliasで「このURLパスへのアクセスは、実際にはこのディレクトリの中身を見せる」という対応関係を作ります。続くDirectiveブロックで、そのディレクトリへのアクセス許可を明示的に与える必要があります。
■ Require:アクセス制御
誰がそのURLパス・ディレクトリにアクセスできるかを制御します。
<Location /admin/>
Require ip 192.168.11.0/24
</Location>
この例では、管理画面へのアクセスを、自宅LAN内のIPアドレス帯だけに制限しています。全世界に公開したくない管理系のパスには、このような制限をかけておくと安心です。全員に許可したい場合はRequire all grantedを使います。
■ SSLEngine・SSLCertificateFile:HTTPS化
<VirtualHost *:443>
SSLEngine on
SSLCertificateFile /etc/httpd/ssl/server.crt
SSLCertificateKeyFile /etc/httpd/ssl/server.key
</VirtualHost>
SSLEngine onで、そのVirtualHostにSSL/TLSによる暗号化通信を有効にします。証明書ファイルと秘密鍵ファイルのパスを、それぞれ指定します。自己署名証明書を使う場合、ブラウザに警告が出ますが、リバースプロキシ(Cloudflareなど)を前段に置いている場合は、オリジンサーバー同士の通信としては許容されることもあります。
■ RewriteEngine・RewriteRule:URLの書き換え
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
httpでのアクセスを、httpsへ自動的にリダイレクトする、よくあるパターンです。RewriteCondで条件(この場合「HTTPSが使われていない場合」)を指定し、RewriteRuleで実際の書き換えルールを定義します。ただし、特定のパス(Zabbixの管理画面など)だけリダイレクトの対象から除外したい場合は、RewriteCondに除外条件を追加する必要があります。
■ ModSecurity関連ディレクティブ:WAF(Webアプリケーションファイアウォール)
SecRuleEngine On
SecAuditLog /data/log/httpd/modsec_audit.log
SecDebugLog /data/log/httpd/modsec_debug.log
SecRuleEngineは、ModSecurityの動作モードを指定します。Onにすると実際に攻撃をブロックし、DetectionOnlyにすると検知だけ行いブロックはしません。運用開始直後は、誤検知が多くないか確認するためDetectionOnlyで様子を見て、問題なければOnに切り替えるという段階的な進め方がおすすめです。個別のルールを除外したい場合は、以下のように書きます。
SecRuleRemoveById 931120
SecRuleRemoveById 942360
長文投稿など、特定の入力パターンで実行時エラー(PCRE limits exceeded)が起きるルールがある場合、こうしてIDを指定して個別に無効化できます。
■ ログ関連ディレクティブ
ErrorLog /data/log/httpd/error_log
CustomLog /data/log/httpd/access_log combined
ErrorLogはApache自体のエラーや、アプリケーション側の例外(Djangoのトレースバックなど)が記録される場所です。CustomLogは、誰がいつどのURLにアクセスしたかというアクセスログを記録します。combinedというのは、記録するログの書式(フォーマット)の名前です。
■ MPM(Multi-Processing Module)関連ディレクティブ
<IfModule mpm_event_module>
StartServers 3
MinSpareThreads 75
MaxSpareThreads 250
ThreadsPerChild 25
MaxRequestWorkers 400
MaxConnectionsPerChild 0
</IfModule>
Apacheが同時にどれだけのリクエストをさばけるかを制御する設定です。StartServersは起動時に立ち上げる子プロセスの数、ThreadsPerChildは1つの子プロセスが持つスレッド数、MaxRequestWorkersは全体で同時に処理できる最大リクエスト数です。サーバーのメモリ・CPUに余裕がある場合は、これらの数値を大きめに設定することで、アクセス集中時の余裕を持たせられます。逆に、小規模なサーバーで数値を大きくしすぎると、メモリ不足でサーバー全体が不安定になることもあるため、搭載メモリとの兼ね合いで調整する必要があります。
■ セキュリティ関連ヘッダーのディレクティブ(Django側での設定が主だが参考として)
Apache単体でも、以下のようなヘッダー付与用ディレクティブがあります。
Header always set X-Frame-Options "DENY"
Header always set X-Content-Type-Options "nosniff"
X-Frame-Optionsは、自分のサイトが他サイトの中にiframeとして埋め込まれることを防ぐ、クリックジャッキング対策の定番設定です。今回はアプリケーション側(Django)で同等の設定をしていますが、Apache側でも二重に設定しておくと、より確実な防御になります。
■ まとめ
Apacheの設定は、最初は項目数の多さに圧倒されますが、「誰に」「何を」「どう見せるか」という3つの軸で整理すると理解しやすくなります。VirtualHostとServerNameで「誰宛のリクエストか」を決め、AliasやWSGIScriptAliasで「何を見せるか」を決め、RequireやModSecurityで「どう制御するか」を決める、という構造を意識すると、設定ファイル全体の見通しが良くなるはずです。
今回紹介したディレクティブは、実際にこのサイトの運用の中で使ってきたものばかりです。設定ファイルをいじる際は、必ずapachectl configtestで文法チェックをしてから再起動する習慣をつけておくと、設定ミスによるサービス停止を防げます。
閉じる
いいね数:1
ログインするといいねできます。
#Linux
#Apache
#セキュリティ
投稿日:2026年7月22日14:24
何かバグがあれば教えてください
いいね数:1
ログインするといいねできます。
タグなし
投稿日:2026年7月22日13:41
自宅サーバーでRHEL(Red Hat Enterprise Linux)を使ってWebサイトを公開したい人向けに、Red Hatデベロッパーアカウントの作成から、Apache httpdでのWebサーバー構築までの手順を、実際に使ったコマンドを交えてまとめます。一般的な環境を想定していますので、細部は自分の環境に合わせて読み替えてください。
■ Red Hatデベロッパーアカウントの作成
まず、以下のサイトにアクセスしてアカウントを作成します。
https://developers.redhat.com/
メールアドレス、氏名などの基本情報を入力し、確認メールのリンクを踏めば登録完了です。法人名の入力欄がありますが、個人利用の場合は「Personal」や自分の名前を入れておけば問題ありません。
このプログラムで利用できるのは、正確には「Red Hat Developer Subscription for Individuals」という個人向けのサブスクリプションです。商用の本番環境での利用は想定されておらず、あくまで開発・学習目的での利用が前提となっている点は理解しておく…
続きを読む
自宅サーバーでRHEL(Red Hat Enterprise Linux)を使ってWebサイトを公開したい人向けに、Red Hatデベロッパーアカウントの作成から、Apache httpdでのWebサーバー構築までの手順を、実際に使ったコマンドを交えてまとめます。一般的な環境を想定していますので、細部は自分の環境に合わせて読み替えてください。
■ Red Hatデベロッパーアカウントの作成
まず、以下のサイトにアクセスしてアカウントを作成します。
https://developers.redhat.com/
メールアドレス、氏名などの基本情報を入力し、確認メールのリンクを踏めば登録完了です。法人名の入力欄がありますが、個人利用の場合は「Personal」や自分の名前を入れておけば問題ありません。
このプログラムで利用できるのは、正確には「Red Hat Developer Subscription for Individuals」という個人向けのサブスクリプションです。商用の本番環境での利用は想定されておらず、あくまで開発・学習目的での利用が前提となっている点は理解しておく必要があります。とはいえ、機能制限なくRHELのすべての機能を使えるため、自宅サーバーでの学習・検証用途には十分すぎるほどの内容です。
■ RHELのインストール
Red Hat公式サイトから、RHELのインストールISOイメージをダウンロードします。ダウンロードには、先ほど作成したデベロッパーアカウントでのログインが必要です。
ダウンロードしたISOイメージを、USBメモリに書き込んで起動ディスクを作成するか、仮想マシンで使う場合はそのままISOを読み込ませてインストーラーを起動します。
インストール中の設定でひとつ重要なのが、インストール完了後にシステムをRed Hatのサブスクリプションに登録することです。インストール完了後、以下のコマンドで登録します。
sudo subscription-manager register --username <デベロッパーアカウントのユーザー名>
パスワードを求められたら入力してください。登録が成功すると、dnfコマンドでのパッケージインストールが可能になります。
登録状況は、以下のコマンドでいつでも確認できます。
subscription-manager status
もし「Overall Status: Current」と表示されていれば、正しく登録が完了しています。逆に「Unknown」や「Invalid」と出る場合は、登録がうまくいっていない可能性があるため、再度登録コマンドを実行してみてください。
■ システムの基本設定
まず、システム全体を最新の状態に更新します。
sudo dnf update -y
タイムゾーンを日本時間に設定します。
sudo timedatectl set-timezone Asia/Tokyo
ホスト名を設定しておくと、後々の管理がしやすくなります。
sudo hostnamectl set-hostname myserver
作業用のユーザーアカウントも、rootとは別に作成しておくことを強くおすすめします。日常的な操作をrootで行うのは、操作ミスによる被害範囲が大きくなるため避けるべきです。
sudo useradd myuser
sudo passwd myuser
sudo usermod -aG wheel myuser
wheelグループに所属させることで、そのユーザーがsudoコマンドを使えるようになります。
■ ファイアウォールの設定
RHELはデフォルトでfirewalldが有効になっています。Webサーバーを公開するには、httpとhttpsのポートを開放する必要があります。
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --reload
現在開放されているサービスを確認するには、次のコマンドを使います。
sudo firewall-cmd --list-services
もし特定のポート番号を直接開放したい場合(Apacheを標準の80番以外のポートで動かす場合など)は、以下のようにします。
sudo firewall-cmd --permanent --add-port=8080/tcp
sudo firewall-cmd --reload
firewalldはゾーンという概念で通信の許可範囲を管理しています。デフォルトでは「public」ゾーンが使われることが多いですが、現在使われているゾーンを確認したい場合は、次のコマンドで見られます。
sudo firewall-cmd --get-active-zones
■ Apache httpdのインストール
いよいよApacheをインストールします。RHELの標準リポジトリからdnfで簡単に導入できます。
sudo dnf install -y httpd
インストール後、サービスを起動し、OS起動時に自動起動するよう設定します。
sudo systemctl start httpd
sudo systemctl enable httpd
正常に起動しているか確認します。
sudo systemctl status httpd
「active (running)」と表示されていれば成功です。
インストールされたApacheのバージョンを確認したい場合は、以下のコマンドを使います。
httpd -v
RHELでは、設定ファイルは主に /etc/httpd/conf/httpd.conf に置かれ、追加の設定は /etc/httpd/conf.d/ 以下に個別のファイルとして置くのが一般的な運用です。設定ファイルを変更したら、必ず文法チェックをしてから再起動する習慣をつけておくと安心です。
sudo apachectl configtest
sudo systemctl restart httpd
「Syntax OK」と表示されれば、設定ファイルの文法に問題はありません。
■ SELinuxとの付き合い方
RHELはデフォルトでSELinuxが有効になっており、Apacheが特定のディレクトリにアクセスする際に制限がかかることがあります。基本的にはSELinuxを無効化せず、正しいコンテキスト(ラベル)を付与して運用するのが望ましい方法です。
例えば、公開したいファイルを標準の場所(/var/www/html)以外に置く場合、以下のようにコンテキストを設定します。
sudo semanage fcontext -a -t httpd_sys_content_t "/data/www(/.*)?"
sudo restorecon -Rv /data/www
もし semanage コマンドが見つからない場合は、以下のパッケージを追加でインストールしてください。
sudo dnf install -y policycoreutils-python-utils
現在のSELinuxの動作モードは、次のコマンドで確認できます。
getenforce
「Enforcing」であれば、ポリシー違反となる操作は実際にブロックされます。「Permissive」であれば、違反は記録されるだけでブロックはされません。学習段階では、まずログを見ながら少しずつ正しいコンテキストを設定していく方が、後々の運用が楽になります。
もし何らかの操作がSELinuxによってブロックされている疑いがある場合は、以下のコマンドで関連するログを確認できます。
sudo ausearch -m avc -ts recent
SELinuxを無効化する選択肢もありますが、本番運用では推奨されません。急場をしのぐ一時的な切り分けの手段として使う程度に留め、原因が分かったら正しいコンテキスト設定に戻すのが望ましい進め方です。
■ 動作確認用のページを作成
Apacheのドキュメントルート(デフォルトでは /var/www/html)に、簡単なテストページを置いて動作確認します。
echo "<h1>Hello from Apache on RHEL</h1>" | sudo tee /var/www/html/index.html
ブラウザで、サーバーのIPアドレスにアクセスして、ページが表示されるか確認します。
http://サーバーのIPアドレス/
もしページが表示されない場合は、ファイアウォールの設定、SELinuxのコンテキスト、Apacheのプロセスが実際に起動しているかを、順番に切り分けて確認していくことになります。特に、公開したいコンテンツを標準以外の場所に置いた場合は、SELinuxのコンテキスト設定を忘れがちなので注意してください。
■ 独自ドメイン・SSL化への道筋
ここまでで、Apacheが正常に動作する状態が整いました。実際に外部公開する場合は、この先に以下のような作業が必要になります。
・ドメインの取得とDNS設定
・Let's EncryptなどによるSSL証明書の取得と設定
・VirtualHostによる複数サイトの設定
・アプリケーションサーバー(Django、Node.jsなど)との連携設定
これらは環境や目的によって大きく変わってくるため、また別の機会に詳しく書きたいと思います。
■ まとめ
Red Hatのデベロッパーアカウントを使えば、個人でも本格的なエンタープライズLinuxディストリビューションを無償で使うことができます。firewalldとSELinuxという、Ubuntu系のディストリビューションにはあまり馴染みのない仕組みに最初は戸惑うかもしれませんが、正しく理解して付き合えば、非常に安定した環境を構築できます。
特にSELinuxは、最初のうちは「エラーの原因が分からず、とりあえず無効化してしまう」という誤った対応をしがちですが、コンテキストという考え方さえ理解してしまえば、むしろ心強い防御レイヤーとして機能してくれます。多少遠回りに感じても、正しいコンテキストを都度設定していく習慣を身につけておくと、後々の運用で大きな安心材料になります。
ここまでの手順で、外部からアクセスできる基本的なWebサーバーの土台は整いました。実際にサービスとして公開していくには、この記事で紹介した基本設定の上に、ドメインの取得、SSL証明書の設定、アプリケーションサーバーとの連携など、さらにいくつかのステップが必要になります。それらについては、また機会を改めて書いていきたいと思います。
閉じる
いいね数:1
ログインするといいねできます。
#Linux
#Apache
#RHEL
投稿日:2026年7月22日13:33
最新版のAndroidに対応し申した
自撮り顔バーン
いいね数:1
ログインするといいねできます。
#雑談
投稿日:2026年7月22日9:36
顔出しバーン💥
いいね数:2
ログインするといいねできます。
#自撮り
投稿日:2026年7月21日15:37
ようやく課金周りが実装できました!
じゃんじゃん投げ銭してくれよな!
いいね数:1
ログインするといいねできます。
#雑談
投稿日:2026年7月21日10:40
祝㊗️累計訪問者数:16390 人
ありがとう〜嬉しい
いいね数:1
ログインするといいねできます。
#雑談
投稿日:2026年7月20日15:46
500円課金すると、このアプリを共同開発する権利と
最新の仕様書をもらえる権利、
最新の機能を先行利用可能です。
電気代にしますw
いいね数:1
ログインするといいねできます。
#雑談
投稿日:2026年7月18日10:38
サポート会員機能で課金した人は機能追加の要望やメッセージ💬機能を利用可能になる予定なのだ
いいね数:1
ログインするといいねできます。
#Python
#Linux
投稿日:2026年7月17日12:04
皆さんにささえられてこのサーバーは生きながらえています
いいね数:1
ログインするといいねできます。
#雑談
投稿日:2026年7月17日11:41
あと14日間アンインストールせずに放置でいいですよー
いいね数:1
ログインするといいねできます。
タグなし
投稿日:2026年7月17日10:06
Zインストール出来ないから
「ホーム画面に追加」で
ショートカットにしてる。
手動で「Z」に名前を変えた!
いいね数:2
ログインするといいねできます。
#Z
投稿日:2026年7月16日7:59
よろしくお願いします!!🙇
いいね数:3
ログインするといいねできます。
タグなし
投稿日:2026年7月15日18:59
投稿画面からバツボタンで抜けられるようになりました
いいね数:1
ログインするといいねできます。
タグなし
投稿日:2026年7月15日18:46
大きすぎず小さめグリルにも入るし
使いやすい~
いいね数:2
ログインするといいねできます。
#IMONOPAN
投稿日:2026年7月15日7:58
いつもZを使ってくださりありがとうございます。
このたび、AndroidアプリをGoogle Playで正式に公開するため、Googleの審査プロセスの一環として「クローズドテスト」を実施する必要があります。
条件は「12人以上のテスターが、14日間以上テストに参加していること」。皆さんのご協力が必要です!
■お願いしたいこと
お使いのGoogleアカウントのメールアドレスを、このスレッドまたはDMで教えてください,
私の方で、テスト参加用の招待リンクを発行します,
リンクからテストに「参加」ボタンを押していただくだけでOKです(実際にアプリをインストールしなくても構いません),
あとは14日間、そのまま置いておいていただければ大丈夫です,
個人情報は審査対応のためだけに使用し、他の目的では使用しません。ご協力いただける方は、ぜひよろしくお願いします
いいね数:2
ログインするといいねできます。
#クローズドβ
投稿日:2026年7月14日8:33
呟きに4件まで写真を載せられるように機能追加しました😊
いいね数:5
ログインするといいねできます。
#Python
#Linux
投稿日:2026年7月13日18:35
@tokeisan4
いいね数:1
ログインするといいねできます。
タグなし
投稿日:2026年7月13日10:36
このサイトを、Androidアプリとしても配布できるようにしました。今回は、PWA(Progressive Web App)として作っていたサイトを、TWA(Trusted Web Activity)という仕組みでAndroidアプリ化した手順を、実際につまずいた点も含めて書いていきます。
■ そもそもTWAとは
TWAは、既存のWebサイトを、ほぼコードを書かずにAndroidアプリとして包める、Google公式の仕組みです。アプリ内でChromeのエンジンをそのまま使い、通常のブラウザのようなアドレスバーを表示せずにサイトを表示できます。ネイティブアプリを1から書く必要がなく、今あるDjangoサイトの資産をそのまま活かせるのが最大の利点です。
前提として、TWA化する前にサイト自体をPWA化しておく必要があります。具体的には、アプリ名やアイコンを定義する「manifest.json」というファイルと、オフライン対応やプッシュ通知を担う「Service Worker」というJavaScriptファイルの2つを用意しました。
■ Bubblewrapでのプロ…
続きを読む
このサイトを、Androidアプリとしても配布できるようにしました。今回は、PWA(Progressive Web App)として作っていたサイトを、TWA(Trusted Web Activity)という仕組みでAndroidアプリ化した手順を、実際につまずいた点も含めて書いていきます。
■ そもそもTWAとは
TWAは、既存のWebサイトを、ほぼコードを書かずにAndroidアプリとして包める、Google公式の仕組みです。アプリ内でChromeのエンジンをそのまま使い、通常のブラウザのようなアドレスバーを表示せずにサイトを表示できます。ネイティブアプリを1から書く必要がなく、今あるDjangoサイトの資産をそのまま活かせるのが最大の利点です。
前提として、TWA化する前にサイト自体をPWA化しておく必要があります。具体的には、アプリ名やアイコンを定義する「manifest.json」というファイルと、オフライン対応やプッシュ通知を担う「Service Worker」というJavaScriptファイルの2つを用意しました。
■ Bubblewrapでのプロジェクト生成
TWA化には、Googleが提供する「Bubblewrap」というコマンドラインツールを使いました。Node.js製のツールで、事前にNode.jsとnpmが入っている環境なら、次のコマンドでインストールできます。
npm install -g @bubblewrap/cli
初期化コマンド(bubblewrap init)を実行すると、対話形式で、サイトのmanifest.jsonを読み込みながら、アプリ名・パッケージ名・テーマカラー・アイコン画像などを順番に質問されます。ここで注意したいのが、JDKとAndroid SDKのダウンロードです。まだ入っていない場合、Bubblewrap自身が自動でダウンロード・インストールしてくれますが、あわせて1GB近い容量とそれなりの時間がかかります。
■ 署名鍵の扱いには要注意
初期化の最後に、アプリの署名に使う鍵(キーストア)を新規作成する場面がありました。ここで設定するパスワードと鍵ファイルは、今後そのアプリを更新するたびにずっと使い続ける、非常に重要なものです。紛失すると、二度と同じアプリとして更新できなくなり、最悪の場合は新しいアプリとして登録し直すしかなくなります。生成直後に、必ず安全な場所へバックアップしておくことを強くおすすめします。
初期化が終わったら、以下のコマンドでビルドします。
bubblewrap build
これで、テスト用のAPKファイルと、Google Play提出用のAABファイルの両方が生成されます。
■ サイトとアプリの信頼関係を証明する
TWAでアドレスバーを完全に非表示にするには、「このアプリとこのサイトは同じ運営者が管理している」ことを証明する必要があります。これには「Digital Asset Links」という仕組みを使います。
bubblewrap fingerprint generateAssetLinks
というコマンドで、署名鍵から自動的に証明用のJSONファイルが作られます。これを、サイトの「/.well-known/assetlinks.json」という決まった場所に設置する必要がありました。Djangoでは、robots.txtやads.txtと同じ要領で、TemplateViewを使って配信するようにしています。
最初、このJSONファイルの中身が空の配列になってしまう不具合に遭遇しました。原因は、鍵のフィンガープリント(証明書の指紋のようなもの)が、プロジェクトの設定ファイルにまだ登録されていなかったためでした。
keytool -list -v -keystore android.keystore -alias android
というコマンドで鍵からフィンガープリントを取得し、
bubblewrap fingerprint add [取得した値]
で明示的に登録し直すことで解決しました。
■ 実機での動作確認
生成したAPKファイルを実際のAndroid端末にインストールしてみると、無事にアドレスバーのない、通常のアプリと同じ見た目で起動できました。Google Play以外からインストールする形になるため、初回だけ「提供元不明のアプリ」という警告が出ますが、設定から許可すればすぐにインストールできます。
■ 今後について
まずはこのAPKファイルを、SNSのフォロワー向けにβ版として直接配布する形にしました。Google Playへの正式リリースには開発者登録(登録料が必要)と審査が必要になるため、身内での反応を見てから、落ち着いて進めていく予定です。
なお、iPhone(iOS)には、AndroidのAPKのような形の自由な野良配布の仕組みが存在しません。iOSでは、Safariの「ホーム画面に追加」機能を使ったPWAとしての利用を案内する形に留めています。
今回、Webサイトとネイティブアプリの境界にある技術に触れてみて、Webの資産をそのままモバイルアプリの入り口として活かせる仕組みの便利さを実感しました。
閉じる
いいね数:1
ログインするといいねできます。
#Python
#Linux
#Android
投稿日:2026年7月13日9:31
Zのコミュニティサイトを、Androidアプリとしても使えるようにしました!
Google Play正式リリース前のβテストとして、まずはフォロワーの皆さんに先行配布します。
📱ダウンロード:
https://community.tokeisanheaven.uk/static/downloads/app-release-signed.apk
※Google Play以外からのインストールになるため、警告出るよ
いいね数:2
ログインするといいねできます。
#Python
#Linux
#Andoroid
投稿日:2026年7月12日16:28
テスト
いいね数:1
ログインするといいねできます。
#テスト
投稿日:2026年7月12日16:01
どう使おうかな(ㆁωㆁ*)
いいね数:3
ログインするといいねできます。
タグなし
投稿日:2026年7月12日14:56
ホームボタンに追加した人は通知を受け取るか選べるように更新
いいね数:1
ログインするといいねできます。
タグなし
投稿日:2026年7月12日14:39
ペチーノのんだ
いいね数:2
ログインするといいねできます。
#雑談
投稿日:2026年7月12日13:06
サンペドロがすくすくと育っています。
いいね数:2
ログインするといいねできます。
#雑談
投稿日:2026年7月11日17:08
内容がないよう…
うす〜い記事になってごめんなさい
だって例えばライブラリのバージョンとか公開すると攻撃されたら落ちそうなので意外と開示できる情報が少ないのよ
いいね数:1
ログインするといいねできます。
#雑談
投稿日:2026年7月11日16:24
これまでの連載の最後に、このサイトをクラウドと自宅サーバーの両方で動かすことにした経緯について書きます。
このサイトは元々クラウドサービス上で動かしていましたが、途中から自宅にあるサーバーでも同時に動かすようになりました。自宅のインターネット回線を使ってサイトを公開しようとしたところ、契約している回線の仕組み上、外部から自宅サーバーに直接アクセスできない制限があることが分かりました。ポートを開放するという、よくある方法が使えなかったのです。
そこで採用したのが、サーバー側から外部に向けて接続を確立するタイプの技術です。ルーターの設定を一切変更せずにサイトを公開できる仕組みで、これを知ったときは目から鱗が落ちる思いでした。固定のアドレスで運用するために、独自ドメインも取得しています。
コードの管理も、クラウド環境用と自宅サーバー環境用でリポジトリを分け、誤って片方の変更がもう片方に影響しないようにしました。画像の保存先も、クラウド環境は外部ストレージサービス、自宅サーバーは大容量の内蔵ディスクと、環境ごとに切り替えられるようにしています。
自宅サーバーは停電やネットワークの一時…
続きを読む
これまでの連載の最後に、このサイトをクラウドと自宅サーバーの両方で動かすことにした経緯について書きます。
このサイトは元々クラウドサービス上で動かしていましたが、途中から自宅にあるサーバーでも同時に動かすようになりました。自宅のインターネット回線を使ってサイトを公開しようとしたところ、契約している回線の仕組み上、外部から自宅サーバーに直接アクセスできない制限があることが分かりました。ポートを開放するという、よくある方法が使えなかったのです。
そこで採用したのが、サーバー側から外部に向けて接続を確立するタイプの技術です。ルーターの設定を一切変更せずにサイトを公開できる仕組みで、これを知ったときは目から鱗が落ちる思いでした。固定のアドレスで運用するために、独自ドメインも取得しています。
コードの管理も、クラウド環境用と自宅サーバー環境用でリポジトリを分け、誤って片方の変更がもう片方に影響しないようにしました。画像の保存先も、クラウド環境は外部ストレージサービス、自宅サーバーは大容量の内蔵ディスクと、環境ごとに切り替えられるようにしています。
自宅サーバーは停電やネットワークの一時的な不調で落ちてしまうことがあるため、監視の仕組みが特に重要になります。実際に運用中、原因不明の接続不良やサーバーの停止に何度か遭遇し、そのたびにログを読み解いて対処してきました。
クラウドと自宅、それぞれに向き不向きがありますが、両方を経験してみることで、Webサービスの裏側の仕組みについて、実感を持って理解できるようになったと感じています。今後も機能追加や改善を続けていく予定なので、また折を見て開発の様子を書いていきたいと思います。これで、このサイトの作り方シリーズは一区切りです。読んでくださってありがとうございました。
閉じる
いいね数:1
ログインするといいねできます。
#Linux
#雑談
投稿日:2026年7月11日14:52
今回は、サイトを24時間見張り、自動で保守してくれる仕組みについて書きます。
サイトの状態を見張るために「Zabbix」という監視ソフトを導入しました。サイトが落ちていないか、サーバーのCPUやメモリ、ディスクの使用率が高すぎないかを常にチェックし、異常があればメールで知らせてくれます。クラウド環境と自宅サーバー環境、両方のサイトを同時に監視できるようにしています。
さらに、週に1回、サーバー全体のセキュリティ設定を自己診断するツールと、ウイルスやルートキットを検知するツールを自動実行するようにしました。これらのツールが検知した異常も、監視ソフトのログ監視機能と連携させて、自動でメール通知が飛ぶようにしています。
パッケージの更新(セキュリティパッチ)も、毎週決まった曜日の深夜に自動で適用され、再起動が必要な場合だけ自動的に再起動する仕組みにしています。ログファイルについても、たまり続けて容量を圧迫しないよう、古いものは自動的に圧縮・アーカイブし、一定期間を過ぎたら削除する仕組みを組み込みました。
こうして、なるべく手間をかけずに、安全な状態を保てる運用体制を整えました。普段…
続きを読む
今回は、サイトを24時間見張り、自動で保守してくれる仕組みについて書きます。
サイトの状態を見張るために「Zabbix」という監視ソフトを導入しました。サイトが落ちていないか、サーバーのCPUやメモリ、ディスクの使用率が高すぎないかを常にチェックし、異常があればメールで知らせてくれます。クラウド環境と自宅サーバー環境、両方のサイトを同時に監視できるようにしています。
さらに、週に1回、サーバー全体のセキュリティ設定を自己診断するツールと、ウイルスやルートキットを検知するツールを自動実行するようにしました。これらのツールが検知した異常も、監視ソフトのログ監視機能と連携させて、自動でメール通知が飛ぶようにしています。
パッケージの更新(セキュリティパッチ)も、毎週決まった曜日の深夜に自動で適用され、再起動が必要な場合だけ自動的に再起動する仕組みにしています。ログファイルについても、たまり続けて容量を圧迫しないよう、古いものは自動的に圧縮・アーカイブし、一定期間を過ぎたら削除する仕組みを組み込みました。
こうして、なるべく手間をかけずに、安全な状態を保てる運用体制を整えました。普段は特に何もせず放っておいて、異常があったときだけ気づける体制になったことで、精神的な負担もかなり減りました。
監視の仕組みを作り込む過程では、権限の設定ミスでログファイルが読み込めず、サーバーが起動しなくなるという冷や汗をかく場面もありました。原因を1つずつ確認していくと、ファイルの権限だけでなく、OSのセキュリティ機構そのものの設定が意図せず変わっていたことが分かり、直すまでに何度もサーバーを行き来しました。
次回は、クラウドと自宅サーバーを併用する運用について書きます。
閉じる
いいね数:1
ログインするといいねできます。
#Linux
#監視
投稿日:2026年7月11日14:52
個人で運営するサイトでも、公開する以上はセキュリティ対策が欠かせません。今回は、このサイトを守るために導入した仕組みについて書きます。
まず入れたのが「fail2ban」というソフトです。ログインを何度も間違えたり、明らかに不審なアクセスを繰り返すIPアドレスを、自動的に一定時間ブロックしてくれます。自分自身の作業用アドレスまで誤ってブロックされないよう、自宅のネットワークだけは対象外にする設定もあわせて行いました。
次に「ModSecurity」というWebアプリケーションファイアウォールを導入しました。SQLインジェクションやXSSといった、Webサイトへのよくある攻撃パターンを検知する仕組みです。まずは検知だけを行うモードで様子を見て、誤検知が少ないことを確認してから、本格的な防御に切り替えていく方針にしています。実際、長文投稿への対応中に、正規のリクエストまで誤検知されてしまう場面もあり、ルールを個別に調整しました。
管理画面についても、自宅のネットワークからしかアクセスできないよう制限をかけるなど、外部に露出させる範囲を最小限にする工夫も加えています。サーバー自体も、…
続きを読む
個人で運営するサイトでも、公開する以上はセキュリティ対策が欠かせません。今回は、このサイトを守るために導入した仕組みについて書きます。
まず入れたのが「fail2ban」というソフトです。ログインを何度も間違えたり、明らかに不審なアクセスを繰り返すIPアドレスを、自動的に一定時間ブロックしてくれます。自分自身の作業用アドレスまで誤ってブロックされないよう、自宅のネットワークだけは対象外にする設定もあわせて行いました。
次に「ModSecurity」というWebアプリケーションファイアウォールを導入しました。SQLインジェクションやXSSといった、Webサイトへのよくある攻撃パターンを検知する仕組みです。まずは検知だけを行うモードで様子を見て、誤検知が少ないことを確認してから、本格的な防御に切り替えていく方針にしています。実際、長文投稿への対応中に、正規のリクエストまで誤検知されてしまう場面もあり、ルールを個別に調整しました。
管理画面についても、自宅のネットワークからしかアクセスできないよう制限をかけるなど、外部に露出させる範囲を最小限にする工夫も加えています。サーバー自体も、外部から直接ポートを開放せず、特殊なトンネル技術を使って必要な通信だけを中継する構成にしました。
セキュリティ対策は「これで完璧」という終わりがない分野です。段階的に対策を積み重ねていくことが、結局は一番の近道だと感じています。
もう一つ意識したのは、対策を入れすぎて正常な利用者まで不便にしてしまわないことです。実際、ファイアウォールの検知ルールが厳しすぎて、正規の投稿フォームが誤って弾かれてしまう場面がありました。安全性と使いやすさは、常に天秤にかけながら調整していく必要があるのだと学びました。
次回は、サイトの状態を見張る監視の仕組みについて書きます。
閉じる
いいね数:1
ログインするといいねできます。
#Linux
#セキュリティ
投稿日:2026年7月11日14:52
どれだけ良いサイトを作っても、検索エンジンに見つけてもらえなければ意味がありません。今回は、このサイトに施したSEO(検索エンジン最適化)対策について書きます。
まず基本として、各ページに「メタディスクリプション」という、検索結果に表示される説明文を設定しました。投稿詳細ページでは、その投稿の本文の冒頭が自動的に説明文として使われる仕組みにしています。
次に、SNSでシェアされたときの見た目を整えるOGPタグを設定しました。これにより、LINEやX(旧Twitter)にリンクを貼ったとき、タイトルや画像がきれいなカード形式で表示されます。この設定を入れる前は、リンクを貼ってもただの文字列にしか見えなかったので、見た目の印象がかなり変わりました。
検索エンジンに正しく認識してもらうために、サイトマップという一覧ファイルも自動生成しています。投稿やタグが増えるたびに、内容も自動で更新される仕組みです。さらに、投稿詳細ページには「構造化データ」という、Googleが記事の内容を理解しやすくするための特別なデータも埋め込みました。画像がない投稿でエラーになるという不具合が一度起きました…
続きを読む
どれだけ良いサイトを作っても、検索エンジンに見つけてもらえなければ意味がありません。今回は、このサイトに施したSEO(検索エンジン最適化)対策について書きます。
まず基本として、各ページに「メタディスクリプション」という、検索結果に表示される説明文を設定しました。投稿詳細ページでは、その投稿の本文の冒頭が自動的に説明文として使われる仕組みにしています。
次に、SNSでシェアされたときの見た目を整えるOGPタグを設定しました。これにより、LINEやX(旧Twitter)にリンクを貼ったとき、タイトルや画像がきれいなカード形式で表示されます。この設定を入れる前は、リンクを貼ってもただの文字列にしか見えなかったので、見た目の印象がかなり変わりました。
検索エンジンに正しく認識してもらうために、サイトマップという一覧ファイルも自動生成しています。投稿やタグが増えるたびに、内容も自動で更新される仕組みです。さらに、投稿詳細ページには「構造化データ」という、Googleが記事の内容を理解しやすくするための特別なデータも埋め込みました。画像がない投稿でエラーになるという不具合が一度起きましたが、条件分岐を見直して解消しています。
こうした対策を一通り終えたあと、Google Search ConsoleとBingウェブマスターツールにサイトを登録し、サイトマップを送信しました。ドメインを独自のものに切り替えた際は、この登録情報もあわせて更新する必要があり、地味に見落としやすいポイントでした。
さらに、更新の頻度を検索エンジンに伝えるためのRSS配信も用意しました。SNSでの告知だけに頼らず、興味を持ってくれた人が自分の好きな方法で更新をチェックできる導線を増やすことも、地道ですが大切な取り組みだと感じています。
次回は、サイトを安全に保つためのセキュリティ対策について書きます。
閉じる
いいね数:0
ログインするといいねできます。
#Django
#SEO
投稿日:2026年7月11日14:52
個人サイトを長く続けるには、多少なりとも運営費をまかなえる仕組みがあると助かります。今回は、このサイトに組み込んだ収益化の工夫について書きます。
まず取り入れたのは、Amazonアソシエイトともしもアフィリエイトという、アフィリエイト広告の仕組みです。紹介した商品がリンク経由で購入されると、紹介料の一部を受け取れます。Amazonアソシエイトは、登録してすぐに正式参加になるわけではなく、一定期間内に第三者による購入実績が必要という審査の仕組みがあることも、実際に申し込んでみて初めて知りました。
サイト内には「おすすめ商品」という管理用の仕組みを作りました。商品名・リンク・画像に加えて、提携先が発行するバナーコードをそのまま貼り付けられる欄も用意し、柔軟に広告を差し込めるようにしています。もしもアフィリエイトのように、広告ごとに掲載条件が細かく決まっているケースもあるため、規約を都度確認しながら組み込みました。
表示場所は2箇所です。1つはサイドバーで、タグページを見ているときはそのタグに関連する商品を表示します。もう1つは投稿の一覧で、10件ごとに「広告」と明記した形で自然に挟…
続きを読む
個人サイトを長く続けるには、多少なりとも運営費をまかなえる仕組みがあると助かります。今回は、このサイトに組み込んだ収益化の工夫について書きます。
まず取り入れたのは、Amazonアソシエイトともしもアフィリエイトという、アフィリエイト広告の仕組みです。紹介した商品がリンク経由で購入されると、紹介料の一部を受け取れます。Amazonアソシエイトは、登録してすぐに正式参加になるわけではなく、一定期間内に第三者による購入実績が必要という審査の仕組みがあることも、実際に申し込んでみて初めて知りました。
サイト内には「おすすめ商品」という管理用の仕組みを作りました。商品名・リンク・画像に加えて、提携先が発行するバナーコードをそのまま貼り付けられる欄も用意し、柔軟に広告を差し込めるようにしています。もしもアフィリエイトのように、広告ごとに掲載条件が細かく決まっているケースもあるため、規約を都度確認しながら組み込みました。
表示場所は2箇所です。1つはサイドバーで、タグページを見ているときはそのタグに関連する商品を表示します。もう1つは投稿の一覧で、10件ごとに「広告」と明記した形で自然に挟み込む仕組みにしました。広告だと分からないような紛らわしい表示は避け、必ずラベルを付けています。
収益化にあたっては、プライバシーポリシーと広告についてのページも作成し、どんな情報を集めているか、アフィリエイトプログラムに参加している事実をきちんと開示するようにしました。
広告を導入すると、どうしても「読者の体験を損なわないか」という点が気になります。表示位置や頻度を調整しながら、投稿本来の内容が埋もれてしまわないよう、控えめな見せ方を意識しました。今後は、投稿してくれたユーザー自身が、自分の投稿におすすめの商品リンクを添えられるような仕組みも育てていきたいと考えています。
次回は、検索エンジンに見つけてもらうためのSEO対策について書きます。
閉じる
いいね数:0
ログインするといいねできます。
#Django
#雑談
投稿日:2026年7月11日14:52
今回は、サイトの訪問者数や、投稿ごとの閲覧数を記録する仕組みについて書きます。
このサイトには、投稿ごとの閲覧数を記録する機能と、サイト全体のユニーク訪問者数を記録する機能の2つがあります。ログインしている人はユーザーIDで、していない人はブラウザに保存したCookieで、重複してカウントされないようにしています。
サイト全体の訪問者数は「同じ人が同じ日に何度訪れても1カウント」という数え方にしています。実装の初期段階では、ログイン済みかどうかで検索の条件を変えてしまっていたため、未ログインで訪れた人が後からログインした瞬間にエラーになるという不具合がありました。原因を調べたところ、データベースの一意性制約に違反していたことが分かり、常に同じ条件で検索するよう修正しました。
集計したデータは、サイドバーの「新着記事」「アクセス数順」「いいね順」や、フッターの「累計訪問者数」として活用しています。数字が伸びていくのを見るのは、運営者としても素直に励みになります。
こうした指標は、単に眺めて満足するためのものではなく、どの機能が実際に使われているかを把握し、次に何を改善すべきかを…
続きを読む
今回は、サイトの訪問者数や、投稿ごとの閲覧数を記録する仕組みについて書きます。
このサイトには、投稿ごとの閲覧数を記録する機能と、サイト全体のユニーク訪問者数を記録する機能の2つがあります。ログインしている人はユーザーIDで、していない人はブラウザに保存したCookieで、重複してカウントされないようにしています。
サイト全体の訪問者数は「同じ人が同じ日に何度訪れても1カウント」という数え方にしています。実装の初期段階では、ログイン済みかどうかで検索の条件を変えてしまっていたため、未ログインで訪れた人が後からログインした瞬間にエラーになるという不具合がありました。原因を調べたところ、データベースの一意性制約に違反していたことが分かり、常に同じ条件で検索するよう修正しました。
集計したデータは、サイドバーの「新着記事」「アクセス数順」「いいね順」や、フッターの「累計訪問者数」として活用しています。数字が伸びていくのを見るのは、運営者としても素直に励みになります。
こうした指標は、単に眺めて満足するためのものではなく、どの機能が実際に使われているかを把握し、次に何を改善すべきかを考えるための材料としても活用しています。
なお、こうした記録の仕組みを作る際は、個人を特定できる情報をむやみに集めすぎないよう注意を払いました。IPアドレスなどの情報は不正対策のために最小限記録していますが、それが何のために使われるのかを、プライバシーポリシーのページできちんと説明するようにしています。数字を集めることと、利用者の信頼を保つことは、両方とも欠かせない要素だと考えています。
次回は、このサイトの収益化の仕組みについて書きます。
閉じる
いいね数:0
ログインするといいねできます。
#Django
#分析
投稿日:2026年7月11日14:52
今回は、GitHub・Google・Discord・X(旧Twitter)・LINEでログインできる仕組みについて書きます。
パスワードを別途覚えてもらう必要がないよう、普段使っているSNSアカウントでそのままログインできる仕組みを用意しました。django-allauthというライブラリを使うと、複数のSNS認証を比較的簡単に組み込めます。
苦労したのは、各SNSごとにプロフィール情報の形式がまったく違う点でした。アイコン画像ひとつとっても、GitHubは直接URLを返しますが、Discordは画像のハッシュ値からURLを組み立てる必要があり、LINEは長い署名付きのURLを返してきます。それぞれに合わせて、ログイン時にアイコンを自動取得して保存する処理を書きました。
LINEログインを追加したときは、権限の指定が足りずにエラーになったり、返ってきたアイコンURLが長すぎてデータベースに保存できなかったりと、いくつもの壁にぶつかりました。ひとつずつエラーメッセージを読み解きながら直していく作業は根気が要りますが、直った瞬間の達成感は大きいです。
複数の環境(クラウドと自宅サ…
続きを読む
今回は、GitHub・Google・Discord・X(旧Twitter)・LINEでログインできる仕組みについて書きます。
パスワードを別途覚えてもらう必要がないよう、普段使っているSNSアカウントでそのままログインできる仕組みを用意しました。django-allauthというライブラリを使うと、複数のSNS認証を比較的簡単に組み込めます。
苦労したのは、各SNSごとにプロフィール情報の形式がまったく違う点でした。アイコン画像ひとつとっても、GitHubは直接URLを返しますが、Discordは画像のハッシュ値からURLを組み立てる必要があり、LINEは長い署名付きのURLを返してきます。それぞれに合わせて、ログイン時にアイコンを自動取得して保存する処理を書きました。
LINEログインを追加したときは、権限の指定が足りずにエラーになったり、返ってきたアイコンURLが長すぎてデータベースに保存できなかったりと、いくつもの壁にぶつかりました。ひとつずつエラーメッセージを読み解きながら直していく作業は根気が要りますが、直った瞬間の達成感は大きいです。
複数の環境(クラウドと自宅サーバー)でサイトを同時に動かしている都合上、各SNSの管理画面に登録するコールバックURLも、環境の数だけ用意する必要がありました。プロバイダーによっては、1つのアプリに登録できるコールバックURLが1つに制限されているものもあり、環境を増やすたびに設定を見直す必要があることも分かりました。
こうして地道に対応を重ねた結果、今ではGitHub・Google・Discord・X・LINEの5種類のアカウントで、それぞれ気軽にログインできるようになっています。選択肢が多いほど、初めて訪れた人にとって「わざわざ新しいアカウントを作らなくていい」という安心感につながると感じています。
次回は、サイトの訪問者数やアクセス状況を記録する仕組みについて書きます。
閉じる
いいね数:0
ログインするといいねできます。
#Django
#認証
投稿日:2026年7月11日14:52
今回は、匿名でも書き込める掲示板機能について書きます。
掲示板は、2ちゃんねる風の匿名投稿ができる仕組みにしました。名前を入力しなければ「名無し」として投稿でき、「名前#秘密の文字列」の形式で入力すると、その文字列をもとにした「トリップ」という短い符号が名前の後ろに付きます。同じ文字列を使い続ける限り、名乗らなくても同一人物だと分かる、昔ながらの仕組みです。
この掲示板機能は、もともと投稿機能と同じアプリの中に間借りする形で作っていたのですが、役割が大きく異なるため、途中で独立したアプリとして切り出しました。切り出す際には、データベースのテーブルを新しく作り直す形をとり、幸い当時はまだ利用者がいなかったため、データ移行の心配なく進めることができました。
また、同じ人が連続で投稿しすぎないように、投稿後30秒間は再投稿できない制限も入れています。荒らし対策として、匿名投稿者のIPアドレスも記録するようにしました。
掲示板を独立させる作業の中で、テンプレート内のリンク先の指定がひとつだけ古いままになっていて、レス投稿ボタンを押すとエラーになる不具合も起きました。こうした「移行時の…
続きを読む
今回は、匿名でも書き込める掲示板機能について書きます。
掲示板は、2ちゃんねる風の匿名投稿ができる仕組みにしました。名前を入力しなければ「名無し」として投稿でき、「名前#秘密の文字列」の形式で入力すると、その文字列をもとにした「トリップ」という短い符号が名前の後ろに付きます。同じ文字列を使い続ける限り、名乗らなくても同一人物だと分かる、昔ながらの仕組みです。
この掲示板機能は、もともと投稿機能と同じアプリの中に間借りする形で作っていたのですが、役割が大きく異なるため、途中で独立したアプリとして切り出しました。切り出す際には、データベースのテーブルを新しく作り直す形をとり、幸い当時はまだ利用者がいなかったため、データ移行の心配なく進めることができました。
また、同じ人が連続で投稿しすぎないように、投稿後30秒間は再投稿できない制限も入れています。荒らし対策として、匿名投稿者のIPアドレスも記録するようにしました。
掲示板を独立させる作業の中で、テンプレート内のリンク先の指定がひとつだけ古いままになっていて、レス投稿ボタンを押すとエラーになる不具合も起きました。こうした「移行時のうっかり漏れ」は、実際に手を動かしてみないと気づきにくいものだと実感しました。
トリップの仕組みは、入力された秘密の文字列をそのまま保存するのではなく、ハッシュ関数という一方向の変換をかけてから短く切り出して保存しています。これにより、元の文字列が漏れる心配をせずに「同じ人らしさ」だけを示せるようになっています。昔からある掲示板文化の知恵を、実際に自分で実装してみると、その巧妙さに感心させられます。
次回は、SNSアカウントでログインできる仕組みについて書きます。
閉じる
いいね数:0
ログインするといいねできます。
#Python
#Django
投稿日:2026年7月11日14:52
今回は、サイトの中心的な機能である「投稿」と「タグ」について書きます。
投稿機能では、タイトル・本文・画像・タグをまとめて登録できます。画像のファイル名は、そのまま保存すると日本語や特殊文字が原因でエラーになることがあったため、ランダムな文字列に変換してから保存する仕組みにしました。実際、開発の途中で特定の画像だけアップロードに失敗する不具合が起きて、原因を探ったところ、日本語混じりのファイル名がストレージ側で受け付けられていなかったことが分かり、この対策を入れることになりました。
タグは投稿作成時にカンマ区切りで入力するだけで、自動的に新しいタグとして登録されます。日本語のタグ名にも対応していて、タグごとの一覧ページも自動で生成されます。ここでも一度、日本語タグのページだけ表示されないという不具合があり、URLの設定を見直して直しました。
タグの入力欄については、テンプレート側で参照している項目名がずれていたせいで、しばらくの間タグが正しく保存されないという不具合が続いていたこともありました。地道に原因を切り分けていく作業も、開発の醍醐味のひとつだと感じています。
さらに、…
続きを読む
今回は、サイトの中心的な機能である「投稿」と「タグ」について書きます。
投稿機能では、タイトル・本文・画像・タグをまとめて登録できます。画像のファイル名は、そのまま保存すると日本語や特殊文字が原因でエラーになることがあったため、ランダムな文字列に変換してから保存する仕組みにしました。実際、開発の途中で特定の画像だけアップロードに失敗する不具合が起きて、原因を探ったところ、日本語混じりのファイル名がストレージ側で受け付けられていなかったことが分かり、この対策を入れることになりました。
タグは投稿作成時にカンマ区切りで入力するだけで、自動的に新しいタグとして登録されます。日本語のタグ名にも対応していて、タグごとの一覧ページも自動で生成されます。ここでも一度、日本語タグのページだけ表示されないという不具合があり、URLの設定を見直して直しました。
タグの入力欄については、テンプレート側で参照している項目名がずれていたせいで、しばらくの間タグが正しく保存されないという不具合が続いていたこともありました。地道に原因を切り分けていく作業も、開発の醍醐味のひとつだと感じています。
さらに、投稿の一覧では、長い投稿を最初から全文表示すると画面が間延びしてしまうため、500文字を超える投稿は自動的に途中で折りたたみ、「続きを読む」ボタンで全文を展開できるようにしました。タイムライン全体の見やすさを保ちながら、長文もしっかり書けるようにする、両立が難しいポイントでした。
次回は、匿名投稿もできる掲示板機能について書きます。
閉じる
いいね数:0
ログインするといいねできます。
#Python
#Django
投稿日:2026年7月11日14:52
このコミュニティサイトは、Djangoというフレームワークを使って1から作りました。今回から10回に分けて、その開発の記録を書いていきます。
まず最初に決めたのは「どんな見た目のサイトにするか」でした。ただの掲示板ではなく、投稿・タグ・いいねがある、Twitterのタイムラインに近い見た目を目指しました。文字だけがずらっと並ぶ無機質なページではなく、誰かの日常が流れているような、温かみのある画面にしたいと考えていました。
配色は、サイト名の「Heaven Portal」に合わせて、ラベンダーがかった白背景に、空色と後光のような金色をアクセントカラーにしています。見出しには明朝体、本文にはゴシック体を使い分けて、柔らかい雰囲気を意識しました。フォントの組み合わせひとつで、サイト全体の印象がかなり変わるので、ここは何度か試行錯誤しました。
投稿一覧のカードデザインは、影を薄くつけて浮かび上がるようにし、投稿者のアイコン・本文・タグ・いいねボタンを1つのカードにまとめています。長い投稿は500文字を超えると自動で折りたたまれ、「続きを読む」で全文表示できるようにしました。
サイドバ…
続きを読む
このコミュニティサイトは、Djangoというフレームワークを使って1から作りました。今回から10回に分けて、その開発の記録を書いていきます。
まず最初に決めたのは「どんな見た目のサイトにするか」でした。ただの掲示板ではなく、投稿・タグ・いいねがある、Twitterのタイムラインに近い見た目を目指しました。文字だけがずらっと並ぶ無機質なページではなく、誰かの日常が流れているような、温かみのある画面にしたいと考えていました。
配色は、サイト名の「Heaven Portal」に合わせて、ラベンダーがかった白背景に、空色と後光のような金色をアクセントカラーにしています。見出しには明朝体、本文にはゴシック体を使い分けて、柔らかい雰囲気を意識しました。フォントの組み合わせひとつで、サイト全体の印象がかなり変わるので、ここは何度か試行錯誤しました。
投稿一覧のカードデザインは、影を薄くつけて浮かび上がるようにし、投稿者のアイコン・本文・タグ・いいねボタンを1つのカードにまとめています。長い投稿は500文字を超えると自動で折りたたまれ、「続きを読む」で全文表示できるようにしました。
サイドバーには「新着記事」「アクセス数順」「いいね順」を表示し、どのページからでも人気の投稿にたどり着けるようにしています。こうしたデザインの細部は、一度作って終わりではなく、実際に使ってみて感じた「なんとなく使いにくいな」を、都度直していく繰り返しでした。
投稿作成画面についても、最初は文字数の上限をかなり短く設定していたのですが、実際に運用してみると窮屈に感じることが多く、後から思い切って上限を広げました。見た目の美しさと使いやすさは、頭の中で考えているだけでは分からず、実際に自分で触ってみて初めて気づくことが多いというのが、ここまでの一番の学びです。
次回は、投稿とタグの仕組みについて書きます。
閉じる
いいね数:1
ログインするといいねできます。
#Python
#Django
#デザイン
投稿日:2026年7月11日14:52
WEBフックとかね
みんなもおいで
https://discord.gg/fH7EWnzEJ
いいね数:0
ログインするといいねできます。
#Pyton.Discord
投稿日:2026年7月11日8:44
掲示板機能の分離
├─ Thread/Reply → 独立したboardアプリへ移行
├─ 匿名投稿の「名前#トリップ」機能を実装
└─ URL・テンプレート参照を全て更新
収益化の仕組み
├─ AffiliateProductにcustom_html対応(バナー広告の直接埋め込み)
├─ show_in_feedフラグで、フィード内広告の対象を制御
└─ 10投稿ごとに自動で広告を挿入
いいね数:0
ログインするといいねできます。
#Python
#Linux
投稿日:2026年7月11日7:43
セキュリティもパッチ適用もログ管理も監視もぜーんぶ自動化し終わった
飽きた…
いいね数:0
ログインするといいねできます。
#Linux
投稿日:2026年7月10日18:19
本当このサイトに影響されてここ作ったからね
https://taittsuu.com/home
ガチのツイ廃というかタイッツー廃
いいね数:1
ログインするといいねできます。
#Python
#タイッツー
投稿日:2026年7月10日17:34
おすすめから買われるとこのサイトの維持費とアップグレード費用が稼げるのだ!
みんなどしどし買うのだ!
おすすめするだけでもいいよ
いいね数:0
ログインするといいねできます。
タグなし
投稿日:2026年7月10日15:05
・広告をちょびっと
・タグに応じた物販もしたい
・アクセス元の管理(違反者をBAN)
あと何かあるか?
いいね数:0
ログインするといいねできます。
タグなし
投稿日:2026年7月10日14:16
セキュリティ
├─ fail2ban(SSH・Apache不正アクセス自動ブロック)
├─ ModSecurity + OWASP CRS(WAF、現在はDetectionOnly)
└─ Cloudflare Tunnel(自宅サーバーを直接公開しない)
監視
└─ Zabbix(Web監視・CPU/メモリ/ディスク監視・メール通知)
運用自動化
├─ ログ管理(/data/log/archive、90日保持、自動圧縮・削除)
├─ カーネル整理(installonly_limit=3)
└─ 自動パッチ適用+必要時のみ自動再起動(毎週日曜AM2:00)
いいね数:1
ログインするといいねできます。
タグなし
投稿日:2026年7月10日11:22
自分のサーバに攻撃を仕掛けてブロックされるを繰り返してる
虚無
いいね数:1
ログインするといいねできます。
タグなし
投稿日:2026年7月10日10:48