20210906のLinuxに関する記事は6件です。

【Laravel】@sectionと@yieldの関係(初心者向け)

はじめに レイアウトを作成するにあたって必須の@sectionと@yieldについて簡単に説明します。 @sectionと@yieldの関係 @sectionの書き方には、 index.blade.php @section('セクション名', '画面に表示する値') と記述するパターンと、 index.blade.php @section(親テンプレートの@yield名) ~~~画面に表示する内容~~~ @endsection として、親(ベース)となるテンプレートに記述された@yield(名前)部分に、@sectionと@endsectionに囲まれた部分がはめ込まれるというパターンがあります。 具体例 layouts/app.blade.php(親となるテンプレート) <h1>@yield('title')</h1> <div class="container"> @yield('content') </div> menus/index.blade.php(子となるテンプレート) @section('title', '一覧画面') @section('content') <p>一覧画面を表示します</p> @endsection app.blade.phpの@yield('title')部分に、index.blade.phpの@section('title', '一覧画面')に記述した「一覧画面」が入り、同じくapp.blade.phpの@yield('content')部分に、index.blade.phpの@section('content')に記述した<p>一覧画面を表示します</p>がはめ込まれます。 おわりに 一度理解すれば簡単ですね。 ほかにも、@extendsや@includeもあるので、ググってみてください。
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

パーミッション(chmod)について

アルファベットの意味 ※ r w x を覚えて足し算すれば、OK。 アルファベット ビット値 権限 r 4 読み出し可能 w 2 書き込み可能 x 1 実行可能 - 0 権限なし rw 6(4+2) 読み&書き可能 rwx 7(4+2+1) 全て許可 r-x 5(4+1) 読み&実行可能 llコマンド $ ll : : lrwxrwxrwx. 1 root root 14 9月 19 2019 redhat-release -> centos-release -rw-r--r-- 1 root root 269 6月 4 10:50 resolv.conf -rw-r--r--. 1 root root 1634 12月 25 2012 rpc drwxr-xr-x. 2 root root 4096 2月 28 2020 rpm : : 先頭文字 アルファベット 意味 d フォルダ - ファイル l シンボリックリンク 読み解いてみる!!! d rwx r-x r-x . フォルダ d rwx r-x r-x . 所有者 に与えられた権限 全て許可 drwx r-x r-x . 所有グループ に与えられた権限 読み込みと実行のみ許可 d rwx r-x r-x . その他全員 に与えられた権限 読み込みと実行のみ許可 drwxr-xr-x. 2 root root 4096 2月 28 2020 rpm 所有者はroot drwxr-xr-x. 2 root root 4096 2月 28 2020 rpm 所有グループはroot drwxr-xr-x. 2 root root 4096 2月 28 2020 rpm データサイズ(4096バイト) chmodコマンド #chmod モード 対象のファイル名 chmod 755 file.txt -rwxr-xr-x
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

【Linux】ディレクトリごとコピーする

ディレクトリごとコピーをしたいときに使えるLinuxコマンド $ cp -r [コピーしたいディレクトリ] [コピーしたいディレクトリの場所] $ cp -r app /Users/******``` こんな感じでコマンドを実行するとappというディレクトリが/User/******の中にコピーされる。
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

SSH接続でWARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!と表記されて接続できない!

エラー内容 サーバ移行後にSSH接続をしようとすると接続先や鍵ファイルが正しいのに下記メッセージが表示されて接続できない時があった。 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ こちらのメッセージが表示され接続拒否されます。 原因 fingerprint(フィンガープリント)というものが存在する。 fingerprintとは、接続したことあるサーバの情報のこと。 一度接続したサーバーの情報(fingerprint)は、known_hostsに保存されている。 二回目以降のSSH接続では、fingerprintと、接続先のサーバー情報(ホスト名)を比較し、一致した場合、接続が可能となり、不一致だとこのような警告が表示される。 対処方法 対処方法は2つあります。 ①/Users/~/.ssh/known_hostsを開き、接続するIPアドレスについて検索し情報を削除。 vi /Users/~/.ssh/known_hosts  ⇨開いたら接続するIPアドレスについて検索し削除する ②/Users/~/.ssh/known_hostsから、コマンドにて接続するIPアドレスの情報を削除。 ・ssh-keygenコマンド ssh-keygen -R 00.00.00.00 ※00.00.00.00 の部分はホスト名か接続先IPアドレスに置き換える。 ●エラー文の中に下記のような文があるのでそこからファイルのパスとIPアドレスをコピーすると楽 Offending ECDSA key in /Users/〜/.ssh/known_hosts:~~ ECDSA host key for 00.00.00.00 has changed and you have requested strict checking. 参考
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

LDAP コマンドのメモ

無茶振りされたので調査中です。 構築手順については以下の記事が大変参考になります。 確認系 root で実行します。 設定関連 # 1. 全設定 # とりあえずこれで全部の設定が確認できるはず ldapsearch -LLL -Y EXTERNAL -H ldapi:// -b "cn=config" # 2. DB設定だけ確認する # mdb ではない場合があるらしく、その場合は 1. で全量出力して確認すると良い # ディレクトリ管理者 RootDN、Suffix、アクセス権限などの設定が確認できる ldapsearch -LLL -Y EXTERNAL -H ldapi:// -b "olcDatabase={2}mdb,cn=config" # 3. スキーマ定義の確認 # エントリを追加する際に気になることがあるので、確認できるようにしておくと良い # cn=config を見るときに大量に流れていくやつ # ldif-wrap=no しておくと grep できるので良い ldapsearch -LLL -Y EXTERNAL -H ldapi:// -b "cn=schema,cn=config" -o ldif-wrap=no ディレクトリエントリ関連 # ディレクトリのエントリ全体を出力 ldapsearch -LLL -Y EXTERNAL -H ldapi:// -b "dc=example,dc=com" # uid=test のエントリを検索 ldapsearch -LLL -Y EXTERNAL -H ldapi:// -b "dc=example,dc=com" "uid=test" 更新系 # 追加 ldapadd -Y EXTERNAL -H ldapi:// -f hoge.ldif # 削除 # 子エントリがある場合は先に子エントリを削除する必要がある ldapdelete -Y EXTERNAL -H ldapi:// "uid=test,ou=Users,dc=example,dc=com" # 更新 # 基本的に ldapdelete と ldapadd を使うと良い。 # ldapmodify は構築時などdeleteするわけには行かない場合に使用するもの。 # 例えば、以下のような流れだとオペレーションが安定する(気がする) # 更新対象エントリの出力 ldapsearch -LLL -Y EXTERNAL -H ldapi:// -b "dc=example,dc=com" "uid=test" > entry.ldif # エントリの修正(必要に応じてバックアップを作っておく) vi entry.ldif # 削除 ldapdelete -Y EXTERNAL -H ldapi:// "uid=test,ou=Users,dc=example,dc=com" # 追加 ldapadd -Y EXTERNAL -H ldapi:// -f hoge.ldif 外部からアクセスする場合 外部からアクセスする場合は -H に接続先情報と、-D でアクセスユーザー、-W はパスワードを対話入力するオプションです。 ldapsearch -LLL -Y EXTERNAL -H ldap://123.123.123.123:389 -W -D "cn=Manager,dc=example,dc=com" -b "dc=example,dc=com"
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

ZIPファイルのファイル名の問題を修復するツールを作った

ZIPファイルは非互換性の塊 複数のファイルやフォルダを1個にまとめて、更にサイズの削減までできてしまうZIPファイル。さらに、パスワードを使った暗号化にも対応しています。特にWindows環境の人にとっては、ソフトの配布・メールへの書類の添付などに欠かせない存在になっています。(macOS・Linuxだとtarballの方が一般的だと思います) 最近問題になっているPPAPにも欠かせない存在です。 しかしながら、このZIPファイルには、OS・言語・作成ツールによって、日本語等(非ASCII文字)のエンコーディング方法が異なるというとんでもない問題があります。WindowsやmacOSで日本語等を含んだ名前のファイルから普通にZIPファイルを作成した場合、別のOS(Windowsの場合は別の言語でも)で解凍すると、ファイル名が化けます。 それこそPPAPする場合、受信者が非日本人・マカーだと破綻します。 一応、規格上では、特定のフラグを立ててZIPファイルに埋め込めば、解凍・表示時にUTF-8として扱うというようになっていますが、Windows7以前では無視されていました。さらに、Unicode正規化については何も決められていないので、macOSのFinderでは、普通でない正規化形式のファイル名をしれっと紛れ込ませてきます。さらに、Windowsで一般的な方法や、macOSの zip コマンドでは、このUTF-8フラグに対応していません。 詳細 Windowsの「送る」→「圧縮 (zip 形式) フォルダー」を使う場合は、Shift-JISでファイル名が保存されます。(日本語の場合)macOSの場合、ターミナルのzipコマンドは、UTF-8使用フラグが立たないのでWindowsでは正しく取り扱われません。Finderで作成した場合、濁点・半濁点が「付く前の文字」+「濁点or半濁点」のよいうに分解されて保存されます。Windows・Linuxでは再合成されないので、一見何も問題がないように見えても、実際にはファイル選択時等に支障が出ます。 LinuxのZIPコマンドはお行儀がよく、一般的な正規化のUTF-8でファイル名を保存してくれる上、フラグもきちんと立ててくれます。また、PowerShellのCompress-Archiveコマンドレットも、同じくお行儀がよいです。 WindowsのサードパーティZIP作成ソフトも行儀の悪いものだらけです。一昔前に全盛期を誇っていたLhaplusでは当然Shift-JISのみ対応(解凍時にもUTF-8フラグの取扱なし)、7-Zipでも隠しオプション的な扱いをされています。(デフォルトだとShift-JIS、)Windows7への忖度が全ての原因です。 なお、ZIPの規格では、UTF-8使用フラグがついていなければ、ASCII文字以外の使用は認められません。 つくったもの ZIFUという名前のツールです。ZIP File names to UTF-8の略です。 現在ではコマンドラインツールの形態を取っていますが、いずれ本当に実行を習慣化してほしい情弱の人達をターゲットにできるように、GUI版も作りたいなーと思っています。 ライブラリの選定・開発 以下のようなライブラリが必要でしたが、使えるようなものはありませんでした。 ZIPファイル中の構造体をローレベルで扱うライブラリ macOS独自のUnicode正規化を直すライブラリ OEMコードページをUTF-8と相互変換するライブラリ(国際化対応に必要) 現在のロケールに対応するANSI/OEMコードページを取得するライブラリ(macOS・Linux用) それぞれ、以下のようなクレートを作成して公開しました。 ZIPファイルの構造体を作成するライブラリ 既存のライブラリは、ファイル名が指すバイト配列を変更するという要求に応えられませんでした。 最初はプログラム本体のクレートに同梱していましたが、別クレートに分離しました。 公式の仕様書・日本語の解説資料等を参照しつつ、hexylで実際のZIPファイルを解析したりもしました。 macOS独自のUnicode正規化を直すライブラリ このUnicode正規化は非標準のものです。標準のNFDとは一部結果が食い違うため、公式のテーブルを取得して自動でRustコードを生成するスクリプトをPythonで書きました。 OEMコードページをUTF-8と相互変換するライブラリ アジア以外の言語のエンコーディングは、ANSIコードページとOEMコードページの2つに分かれています。 ターミナルやZIPファイルではOEMコードページの方が使われます。ANSIの方はライブラリがりますが、OEMの方はなかったので、仕方なく作りました。 多くのコードページは、https://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/PC/に対応表がありましたが、一部欠落していたため、それらはICUに入っていた対応表を仕方なく使用しました。 ロケール文字列中のトークン(ja・jpなど)をキーとしたハッシュ木を構築して、辿っています。 こちらも自動生成スクリプト使用。 現在のロケールに対応するANSI/OEMコードページを取得するライブラリ WindowsではコードページはWindows APIのGetACP・GetOEMCPで取得できますが、macOS・LinuxではUTF-8が当たり前なので、そうは行きません。 Microsoftが過去に公開していた対応表の魚拓(Wayback Machine)が残っていたので、それからリストを作成しました。 こちらも自動生成スクリプト使用。 実装について ZIPファイルの大半は、「ローカルファイルヘッダ」「中央ディレクトリ」「中央ディレクトリ終端」の3種類の構造体からなります。ファイル名の情報は前者2つに格納されています。この2つには共通して以下のような情報があります。 ファイル名のバイト数 ファイル名がUTF-8で格納されているかどうか ファイル名 「ファイル名がUTF-8で格納されているかどうか」が格納されているのは、「汎用目的フラグ」と呼ばれる2バイトの整数です。これをリトルエンディアンで見て、LSBから11ビット目が1になっていれば、UTF-8で格納されています。これは、リトルエンディアンで取得した数値に1 << 11 = 0x0800をANDして0でない、という条件に置き換えられます。 このフラグが立っているならば、Apple独自のUnicode正規化を行っていないかチェックし、ユーザの同意の元修正します。 立っていない場合、ASCII以外の文字が入っていないかどうかチェックします。入っている場合は、システム言語に対応したエンコーディング(日本語ならShift-JIS)、または与えられたエンコーディングを使用し、UTF-8への変換を試みます。 ファイル名の変更をしたとして、今度はファイルへの保存も一苦労です。変更前後でファイル名の長さが変わり、構造体はファイル名等の分可変長ですので、これらの変更内容だけサクッと書き換え・・・といったことはできません。 構造体の内容は(中身のファイルの内容以外だけでも)保持しておき、新しいファイルを作って逐次書き込まなければなりません。 上書きをする動作の場合は、同じディレクトリに一時ファイルを作る→元のファイルを削除→一時ファイルをリネーム という手段を取りました。 インストール Rustにはcrates.ioという非常にありがたい公式リポジトリが存在します。Rust環境があれば、以下のコマンドでインストール完了です。 cargo install zifu Rustのインストールは、rustup経由を推奨します。 使い方 以下のコマンドで本ツールの適用が必要かどうかがわかります。 zifu -c 【ZIPファイルのパス】 ファイル名一覧は次のコマンドで確認できます。 zifu -l 【ZIPファイルのパス】 Windows 7以前以外の全環境で扱えるように変換するには、以下のコマンドで可能です。 zifu 【ZIPファイルのパス】 【出力先のパス】 上書きする場合は、代わりに以下のコマンドを入力します。 zifu -i 【ZIPファイルのパス】 免責事項 MITライセンスのため、本ツールを適用して再入手不可のZIPファイルが壊れたなどの責任は負いかねます。また、テストコード等である程度の動作の確認して万全を期していますが、完全な動作保証はありません。特に、ZIP64非対応のため、4GB近くのZIPファイルを扱う際には十分注意してください。 問題がありましたら、IssueやPRをお願いします。
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む