メーリングリスト(Mailman)のゴミを削除する

Mailmanのディスク使用量が大きくなっていることがあります。\r\n設定で保存書庫を利用していたり、まとめ読み機能を使うとこれまでのデータがサーバー上の保存されて使用量が大きくなる場合があります。\r\n以前のデータを残さないでも良い場合やまとめ読み機能を利用しないのであれば、メーリングリストの設定画面から修正しましょう。\r\nこちらは管理画面を見れば設定箇所は一目瞭然。またググれば分かりますので設定方法などは割愛します。\r\n\r\n\r\nさて本題へ設定を変更しても、これまで保存されたデータは削除されないまま残ります。\r\nデータが保存されている場所は以下です。\r\n\r\n\r\nRed Hat Enterprise Linux 4 / 5 / 6 / 7 , CentOS 4 / 5 / 6 / 7の場合\r\n\r\n/var/lib/mailman/archives/private/メーリングリスト名/配下のアーカイブファイル\r\n/var/lib/mailman/archives/private/メーリングリスト名.mbox/メーリングリスト名.mbox\r\n\r\nRed Hat Enterprise Linux 3 , CentOS 3 の場合\r\n\r\n/var/mailman/archives/private/メーリングリスト名/配下のアーカイブファイル\r\n/var/mailman/archives/private/メーリングリスト名.mbox/メーリングリスト名.mbox\r\n\r\n\r\n様々な記事を読んでいくと、上記を削除するだけで良いということが記載されていました。\r\n気をつけることはメーリングリスト名のフォルダは削除してはいけないということです。\r\n\r\nしかし以前にもQmailかPostfixで痛い目に遭っていますので、今回は以下の方法で対応。\r\n\r\n\r\n1.SSHでログイン後、mboxファイルを空にする\r\n\r\necho "" > /var/lib/mailman/archives/private/メーリングリスト名.mbox/メーリングリスト名.mbox\r\n\r\n2. アーカイブファイルを削除する為、以下のコマンドを実行 \r\n\r\n/usr/lib/mailman/bin/arch --wipe メーリングリスト名\r\n\r\nMailman の 「–wipe」は書庫を再構築するそうです。\r\nとりあえずこれで、保存されていたファイルは削除されました。\r\n問題ないかはこれから様子を見ることにします。\r\n\r\n

時間の表示形式に変換するにはDateComponentsFormatterが便利

DateComponentsFormatterのメモ\r\n\r\nこちらただのサンプルコードです。\r\n試した時のコードの一部で、本当に自分が忘れないためのメモです。\r\n\r\n\r\ncount = count + 1\r\nlet time:TimeInterval = count\r\nlet formatter = DateComponentsFormatter()\r\nformatter.unitsStyle = .positional\r\nformatter.zeroFormattingBehavior = [ .pad ]\r\nformatter.allowedUnits = [.hour, .minute, .second]\r\ntimeLabel.text = String( formatter.string(from: time)! )\r\n\r\nDateComponentsFormatterはTimeInterval型を使う

[ Swift ] Bundle.main.pathとBundle.main.urlではAssets.xcassets内にアクセス出来ない

こちら気になって色々実行してみましたが、そのように結論が出ました。\r\n\r\nBundle.main.path と Bundle.main.url メソットでは Assets.xcassets内にアクセス出来ませんでした。\r\n\r\nAssets.xcassets内のデータにアクセスするには NSImage() や NSDataAsset() メソットを利用しないといけないようです。\r\n\r\nややこしい..

[ Swift ] Bundle.main.pathとBundle.main.urlの違いは何?

こちらのメモは調査中ですが、とりあえず調べたものだけメモしておきます。\r\nBundle.main.url のメソットを調べているとどうも Bundle.main.path という似たものがあるようです。\r\n\r\nprint で見る限りでは、どちらも同じくビルドされた後にアプリ内のファイルを見ることが出来そうです\r\nググると大体は Bundle.main.path の説明がされていて、 Bundle.main.url についてはあまりヒットしない\r\nキーワードがかなり類似していることなどがありそうですが…\r\n\r\nただ純粋に同じようには記述出来ないです。\r\n※ 確認したのは AVFoundation での場合\r\n

test.mp3 を再生する際のコード\r\nBundle.main.url 使用時

\r\n\r\nif let url = Bundle.main.url(forResource: "test", withExtension: "mp3") {\r\ndo {\r\naudioPlayer = try AVAudioPlayer(contentsOf: url)\r\naudioPlayer?.play()\r\n} catch {\r\naudioPlayer = nil\r\n}\r\n} else {\r\nfatalError("URL is nil.")\r\n}\r\n\r\n>> エラーなく実行される\r\n\r\n \r\n

test.mp3 を再生する際のコード\r\nBundle.main.path 使用時

\r\n\r\nif let url = Bundle.main.path(forResource: "test", ofType: "mp3") {\r\ndo {\r\naudioPlayer = try AVAudioPlayer(contentsOf: url) ← ここがエラー表示\r\naudioPlayer?.play()\r\n} catch {\r\naudioPlayer = nil\r\n}\r\n} else {\r\nfatalError("URL is nil.")\r\n}\r\n\r\n\r\n>> エラーになる\r\n\r\nprint(type(of: url));\r\nで確認すると、エラー文を確認する感じは型の違いがありそうです。\r\n\r\nBundle.main.urlで取得した値は「URL」\r\nBundle.main.pathで取得した値は「String」\r\n\r\nでした。\r\n\r\nAVAudioPlayerの引数はURL型にしないといけないようです。\r\n試しに Bundle.main.path で取得した値(String型)をURL型に変換して実行するとエラー無く実行出来ました。\r\n\r\n扱いやすい型によって使い分けるという認識で大丈夫でしょうか。\r\n\r\nまた詳しくわかったら追記。\r\n\r\nアドバイスやコメントいただける方がいましたらお願いします。

[ Swift ] Bundle.main.path(forResource:ofType:)のメモ

[ Swift ] Bundle.main.path(forResource:ofType:)のメモです。\r\n\r\nプロジェクト内のファイルを取得する場合に、\r\nBundle.main.path(forResource:ofType:)のメソットを利用します。\r\n\r\nよく「nil」が返ってきてうまく、パスを取得出来ていない現象が発生する場合があります。\r\nそもそもBundle.main.path(forResource:ofType:)はどこを見ているのか。\r\nprint を利用してシュミレーターで確認してみましょう。\r\n\r\nコンソールを確認するとパスはビルドされたアプリ内を見ていました。\r\nつまりそこにファイルがあるかどうかが「nil」が返ってくる一つ確認のポイントです。\r\n

\r\n

ファイルをXcode内にファイルを読み込む際に気をつける

\r\n\r\n\r\n \r\n\r\nファイルをXcode内に読み込む際に、\r\nDestination: Copy items if needed やAdd to targetsにチェックを入れるようにする。\r\n\r\n \r\n\r\n \r\n

すでに読み込み済みの場合

\r\n\r\n\r\n \r\n\r\nすでに読み込み済みの場合は、プロジェクトの「Build Phases」 「Copy Bundle Resources」の項目などで確認する\r\n\r\n \r\n\r\n\r\n\r\n \r\n\r\nターゲットの確認も!

PleskでサブミッションポートのSMTP AUTH接続ができない場合

PleskでサブミッションポートのSMTP AUTH接続ができない場合と題しましたが、\r\n実際はサブミッションポートで必須のTLS通信を解除する設定です。\r\n\r\n\r\n受信は出来るのになぜか送信が出来ないという状況に色々とググりましたが、なかなか解決の糸口が見つかりませんでした。\r\nところがふと調べたら、自分が過去のブログで投稿しておりました 汗…\r\n\r\n—–\r\n前置きはここまでとして、早速設定していきます。\r\n\r\nPleskでサブミッションを有効化する。\r\nまずは手順通りに。\r\n\r\nツールと設定 > メールサーバー設定\r\nすべてのIPアドレスに対してポート587でSMTPサービスを有効化するにチェックを入れて保存します。\r\nこれで完了です。\r\n\r\nしかしPleskではセキュリティーの観点からサブミッションポート(587番ポート)を使用した送信では、 TLSを使用した通信(STARTTLS)が必須となりました。\r\nメーラーでは証明書の警告が出だり、送信がはじかれることが起きます。\r\nTLS接続が望ましいですが、どうしても難しい場合はセキュリティーレベルを下げることで、TLS通信なしでも接続できるように設定を変更します。\r\n\r\n\r\n\r\n/etc/postfix/master.cf\r\n\r\n\r\n■ 変更前\r\n\r\nsubmission inet n – n – – smtpd -o smtpd_enforce_tls=yes -o smtpd_tls_security_level=encrypt -o smtpd_sasl_auth_enable=yes -o smtpd_client_restrictions=permit_sasl_authenticated,reject -o smtpd_sender_restrictions=\r\n\r\n■ 変更後\r\n\r\nsubmission inet n – n – – smtpd -o smtpd_enforce_tls=yes -o smtpd_tls_security_level=may -o smtpd_sasl_auth_enable=yes -o smtpd_client_restrictions=permit_sasl_authenticated,reject -o smtpd_sender_restrictions=\r\n\r\n\r\n「smtpd_tls_security_level=encrypt」部分を「smtpd_tls_security_level=may」に変更します。\r\n

WordPress Gutenberg(グーテンベルク)の無効化

\n

話題のGutenberg(グーテンベルク)、WordPress5系より導入されたビジュアルエディタです。
\nWordPress5系では、「投稿」「固定ページ」のエディタがTinyMCEからGutenbergに変更されました。
\nカスタム投稿タイプはGutenberg適用範囲外で、これまでのTinyMCEがデフォルトエディタです。

\n\n\n\n

固定ページは、がっつりCSSでレイアウトを作成している場合もあります。
\nということでGutenberg(グーテンベルク)の無効化についてメモ。

\n\n\n\n

ひとつ注意することは、WordPress5系以前のバージョン(プラグインでGutenbergを導入した)方とWordPress5系ではフィルターイベントが違いますので注意!
プラグインを利用することも出来ますが、functions.phpにコードを記述することで無効化も出来ます。

\n\n\n\n

\n\n\n\n

完全にGutenbergを無効化

\n\n\n\n

< functions.php >

\n\n\n\n

[ WordPress5系 ]

\n\n\n\n

add_filter( ‘use_block_editor_for_post’, ‘__return_false’ );

\n\n\n\n
\n\n\n\n

[ WordPress5系以前 ]

\n\n\n\n

add_filter(‘gutenberg_can_edit_post_type’, ‘__return_false’);

\n\n\n\n

\n\n\n\n
\n\n\n\n

\n\n\n\n

特定の投稿タイプで無効化

\n\n\n\n

< functions.php >

\n\n\n\n

[ WordPress5系 ]

\n\n\n\n

function disable_block_editor( $is_enable, $post_type ) {
\n if ( $post_type === ‘CUSTOM POST TYPE NAME’ ) return false;
\n return $is_enable;
\n}

\n\n\n\n

add_filter( ‘use_block_editor_for_post_type’, ‘disable_block_editor’, 10, 2 );

\n\n\n\n
\n\n\n\n

[ WordPress5系以前 ]

\n\n\n\n

function disable_block_editor( $is_enable, $post_type ) {
\n if ( $post_type === ‘CUSTOM POST TYPE NAME’ ) return false;
\n return $is_enable;
\n}

\n\n\n\n

add_filter( ‘gutenberg_can_edit_post_type’, ‘disable_block_editor’, 10, 2 );

\n\n\n\n

条件分岐部分も目新しいものではないので、特定投稿IDや特定ユーザーで無効化なども簡単に出来そうですね。

\n

Lighthouse Chrome 拡張機能を入れておく

Google ウェブマスター向けの公式ブログで「Lighthouse Chrome 拡張機能に追加された SEO カテゴリのご紹介」が公開されていたのでメモ\r\n\r\nLighthouse は、ウェブページの品質向上に役立つよう開発された、オープンソースの自動化されたツールです。サイトのパフォーマンス、アクセシビリティ、プログレッシブ ウェブアプリ(PWA)対応状況などについての確認でき、サイトの品質を向上させるための具体的な対策を提示します。デベロッパーの皆様が「暗礁に乗り上げないようにする」ことを目的としているため、「Lighthouse(灯台)」と名付けられました。\r\n\r\nhttps://webmaster-ja.googleblog.com/2018/02/seo-audit-category-in-lighthouse.html\r\nより引用\r\n\r\nこれまで Lighthouse はサイトのパフォーマンス、アクセシビリティ、プログレッシブ ウェブアプリ(PWA)対応状況の確認が出来るGoogle Chromeの拡張機能 プラグイン。\r\nそれにSEOのチェック項目が追加されたようです。\r\n現時点でのチェックは10項目ですが、以下のように今後拡張、強化していく予定だそうです。\r\n\r\n \r\n\r\n\r\n\r\n \r\n\r\n現在の Lighthouse Chrome 拡張機能に含まれる SEO 監査項目は、今後拡張、強化していく予定です。確実に機能することが確認でき次第、Chrome デベロッパー ツールでもデフォルトで SEO 監査をご利用いただけるようにいたします。\r\n\r\nhttps://webmaster-ja.googleblog.com/2018/02/seo-audit-category-in-lighthouse.html\r\nより引用\r\n\r\n業務では積極的に SEO のサービスを前に押し出していませんが、日頃から制作の際には SEO を意識しています。\r\n\r\nSEO業者ではないので、あくまで感覚的なことですが、\r\n昔は SEO といえば被リンクを獲得することが最優先だったように思います。\r\nまた被リンクを自ら作り 被リンクを獲得するというよりは、被リンクを作るというイメージ。\r\nその頃からGoogleさんは、良質のコンテンツを作ることが SEO最適化 であると謳っていましが、検索結果はそれに伴っていない印象でした。\r\n\r\nここ数年では徐々にその流れが来ているように感じます。\r\nまとめサイト的なコンテンツが上位に来るようになったのは、制作側としては少し不満ですが… 笑\r\n制作側も作るだけではなく、クライアントと協力して、\r\n日々 良質のコンテンツを作り、サイト運営していくかが重要です。\r\n\r\nと、だいぶ脱線しました。\r\n\r\nLighthouse にこれからも注目ですね。

find コマンドをおさらい

find コマンドをおさらい\r\n\r\nfind コマンドはファイルやディレクトリを検索するコマンド\r\nサーバーチェックを行うにあたり、良く利用するのでよく使うものをメモしておく\r\n\r\n基本のコマンドはこんな感じ\r\n\r\n# find ファイル名\r\n\r\n# find /var/www/html/index.html\r\n\r\nという感じですね\r\nなければ「そのようなファイルやディレクトリはありません」とメッセージが表示されます\r\n\r\nさてオプションなどを利用すれば条件を入れた検索が可能です\r\n自分が良く使うのは以下のような感じ\r\n\r\n————-\r\n

オプション「-type f / -type d」

\r\nオプション -type f\r\n\r\nファイルのみを対象として検索\r\n\r\n基本: # find 検索先 -type f\r\n\r\n# find /var/www/html/search.html -type f\r\n\r\nオプション -type d\r\n\r\nディレクトリのみを対象として検索\r\n\r\n基本: # find 検索先 -type d\r\n\r\n# find /var/www/html/search -type d\r\n\r\n※検索にはワイルドカードが使える\r\n\r\n# find /var/www/html/*001* -type d\r\n\r\n————-\r\n

オプション -name

\r\nファイル名やディレクトリ名が一部しかわからなくても上記同様ワイルドカードと「name」オプションで検索できる\r\n\r\n基本: # find 検索先 -name ファイル名\r\n\r\n# find /var/www/html/ -name \*-index.php\r\n\r\n————-\r\n

オプション -mtime

\r\n指定した日に変更を行ったファイルやディレクトリを検索\r\n\r\n基本: # find 検索先 -mtime 日数\r\n\r\n# find /var/www/html/ -mtime 0\r\n\r\n上記が本日更新を行ったファイルを検索\r\n以下のようにすれば1週間以内に変更されたファイルを検索できる\r\n\r\nfind /var/www/html/ -mtime -7\r\n\r\n他にも複数の条件を合わせたり、その他の条件オプションもあるので、サーバーチェックの際に色々試してみたい。