サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
衆院選
blog.supersonico.info
最近、本番環境でおかしな現象が発生していたので、書き記します。 対策して今の所、再起動は発生しなくなりましたが、ちょっと納得出来ない感じです。一つの例として、参考になればと思います。 EC2が勝手に再起動をする 2021年5月になってから、どうにも再起動をします。本番サーバがバンバン勝手に再起動します。1日2回~3回くらい。最も酷いときは1日に10回以上、30分~1時間おきに勝手に再起動していました。 2021年3月くらいに構築したサーバで、2021年4月末くらいまでは調子が良かったです。インスタンスはt2.medium。リージョンは東京です。 夜中は再起動は発生しませんでした。 なんだこれ。。。というのを対応しました。 現状を確認する OSとソフトウェアの状況 OSはAmazon Linux2の最新のやつです。2021年3月くらいにyum updateで最新の状態にしています。2021年
zabbixサーバをyumでインストールした時のログです。インストール先のサーバはCentos6.7 の64bitのサーバです。 1.yumのリポジトリを追加 まずはzabbixの公式リポジトリをyumで利用できるようにリポジトリを追加します。スーパーユーザになって以下を実行してください。 rpm -ivh http://repo.zabbix.com/zabbix/2.4/rhel/6/x86_64/zabbix-release-2.4-1.el6.noarch.rpm 2.yumでインストール リポジトリが追加されたので、yumでサーバをインストールします。 yum install zabbix-server-mysql zabbix-web-mysql zabbix-web-japanese 3.DBの初期設定 これで、zabbixサーバのインストールが完了しました。次に、mysq
最近知ったのですが、CakePHPのPaginateには一回の表示件数に上限があるみたいですね。デフォルトでは100件までのようです。ですので、limitで300とか指定しても、100件で表示されてしまいます。以下のようにmaxLimitを指定すると、上限を設定することができます。 // 300件まで表示したい場合 $paginate = [ 'limit' => 200, 'maxLimit' => 300, ]; 参考にしてみてください。では。
開発とかでVirtualBoxを利用することが多いです。VirtualBoxのイメージファイルですが、一度ゲストOS側で容量をたくさん使うと、そのファイルたちを削除してもイメージファイルの容量は減りません。イメージファイルはどんどん大きくなるばかりです。この記事ではイメージファイルの容量を圧縮する方法を紹介します。 対象は以下の環境となります。 ホストOS MacOS ゲストOS Linux ■ゼロ埋めする【ゲストOSでの作業】 まずは、ゲストOSを起動してディスクのゼロ埋め作業を行います。ddコマンドを使って、ゼロ埋めされたファイルを作成します。以下のコマンドはディスク容量いっぱいまで/zeroファイルを作成し、その後/zeroファイルを削除するというものです。これで、ゲストOSが利用していないファイルの断片等も全て削除されます。 dd if=/dev/zero of=/zero bs=
Raspberry Pi3にリモートデスクトップで接続する手順を紹介します。今回は、VNCではなくRDP(リモートデスクトップ)を使って接続するようにします。 正直、SSHが接続できれば、サーバの管理は問題なくできます。しかし、音量の調節などGUIが用意されている場合は、そっちのほうが直感的に設定しやすいと思っています。そのまま閉じればデスクトップのセッションもそのまま続くので、バックグラウンドで何かテスト的にバッチを実行したい時にも、便利に利用できるかと思います。 また、X Window Systemとリモートデスクトップのデーモンを起動する必要があるので、リソースを消費します。 ■環境の説明 以下の様な環境でリモートデスクトップの接続ができるようにします。 ■接続元のパソコン Mac OS X 10.11.4 El Capitan ■接続先のサーバ Raspberry Pi3 Rasp
Zabbixは便利なのですが、いちいち監視対象をzabbixに登録しないといけないので、サーバの台数がふえてくると運用が面倒です。さらに、登録し忘れて監視されていなかった!!というのが発生するかもしれません。AWSなどでもAutoScalingで台数が自動で増えた時に、監視対象をいちいち追加するのも面倒です。 Zabbixサーバの構築と、監視対象のインストールは別の記事で紹介しています。併せて参考にしてみてください。 そこで、今回は監視対象のzabbix_agentが起動した時に自動登録されるように設定したいと思います。 ■自動登録のためのZabbixサーバの設定 1.まずはzabbixにログインして、アクションの設定をします まずはログインをして、【設定】→【アクション】と移動します。その後、【アクションの作成】を押してアクションの新規登録画面を表示します。 2.設定をする 新規登録画面
すっかりNASになってしまいました、Raspberry Pi3です。 今回は、Raspberry Pi3をMacのバックアップ機構であるTimeMachineで利用するまでの手順を解説します。TimeMachineを利用するにはsambaでのディスク共有ではなく、netatalkによるafpでの共有の構築が必要です。手順としては以下のとおりです。 ・コンパイルに必要なパッケージをインストールする ・netatalkをコンパイル、インストール ・共有ディレクトリの設定 ・バックアップの設定 ■コンパイルに必要なパッケージをインストールする まずは、コンパイルに必要なパッケージをインストールします。この辺りをインストールしておくと良いです。 apt-get install libssl-dev libgcrypt11-dev libpam0g-dev libwrap0-dev libdb-de
Rclone syncs your files to cloud storage: Google Drive, S3, Swift, Dropbox, Google Cloud Storage, Azure, Box and many mo... 以下に使うまでの手順を紹介します。 ■インストール rclone.orgから【Linux Arm】のバイナリをダウンロードしました。zipファイルを展開して、rcloneコマンドを実行すれば、そのまま起動します。 ■準備 設定を行う まずは、以下のコマンドを実行して、設定ファイルを作成します。 $ rclone config コマンドを実行すると、対話形式で設定を聞かれます。今回はGoogleDriveを設定しました。 No remotes found - make a new one n) New remote s) Set configura
Stinger7にしてから、半月ぐらい経ちました。このブログでは、大きな変更はしないで、ほぼテンプレート素材のまま利用していこうと思います。今回は、右側サイドバーのスクロール広告を横並びに配置する方法を紹介します。以下のような感じで横並びになります。 ■スクロール広告とは このブログでも利用しています。スクロールすると、ずっとついてくるエリアのところです。Adsenseの配置が禁止されているやつですね。で、この部分に細かい広告を横並びにして配置する方法を紹介します。 ■CSSの変更 以下のCSSをstyle.cssに追記してください。CSSの設定はこれだけです。 .fix-ad-box { display: table-cell; } ■スクロール広告のところに以下のように記述してください。 以下のように設定してください。fix-ad-boxのdivのところに広告の画像やらバナーを設定して
Linuxでサーバを運用していると、メモリ不足でSwapが発生することがあります。で、このSwapなのですが、発生頻度を少しだけ調整できます。デフォルト設定だと、物理メモリに余裕があってもSwapが発生します。これを調整すると、少しだけSwapの発生を抑えることができます。 設定しておくと幸せになると思います。 ■パラメータ 下記のファイルに0〜100の数値が記載されています。 /proc/sys/vm/swappiness この数値を0にすると、物理メモリを使い切るまでSwapを発生させません。100にすると、とにかくSwapするようになります。パフォーマンス激落ちです。デフォルトは60です。この数値を0にしてしまえば、数値を1以上に設定すれば、メモリを最大まで使い切るようになります。 追記 2016/3/25 はてなブックマークのコメントで、swappinessを0にするとOOMKil
■高機能テンプレートは結局使い切れない Webシステムを開発していると、いろいろな管理画面を実装することがあります。私は結構な割合でTwitter Bootstrapを利用して管理画面を実装することが多いです。Bootstrapには管理画面のテンプレートが無料でたくさん提供されていますね。 グラフやカレンダーなど、ひとしきり詰まっている管理が画面のテンプレートが多いように思います。かっこいい管理画面のテンプレートを選択してしまいがちです。 私は一番シンプルなものを選ぶようにしています。その理由は以下のとおりです。 ・高機能テンプレートを選択しても、結局全部使わない いろいろな機能が付いているテンプレートは、複雑に実装されていることが多いです。見た目は良いのですが、ほとんどの機能は利用されることがありません。シンプルでわかりやすいテンプレートを利用するようにすると、開発後期になった時、リリー
■ZabbixのTemplate_App_Mysqlで監視できる項目 まず、このTemplate_App_Mysqlで何が監視できるかを紹介します。だいたいこんな感じのことが監視できるみたいです。 ・一秒間にクエリが何回処理されたか ・送信・受信のデータ量 ・slow-queryの数 ・Mysqlプロセスの起動状態 データの転送量やクエリが一秒間にどれだけ実行されたのか等の情報がわかるので、【Mysqlサーバがどれだけの性能が必要か】目安がわかると思います。 ■設定の手順 まず、.my.cnfというファイルを指定のディレクトリに作成します。これを行わないと、Template_App_Mysqlテンプレートをホストに追加したとき、ZabbixがMysqlにログインできずにデータの取得ができなくなります。 mkdir /var/lib/zabbix vi /var/lib/zabbix/.my
■レーベンシュタイン距離とは このコピペチェックツールで利用しているアルゴリズムです。編集距離とも呼ばれています。2つの文字列を何回変更すると同じ文字列になるかを求めるアルゴリズムです。 レーベンシュタイン距離は数値が小さいほど同じような文字列であると判断できます。レーベンシュタイン距離が0のものが全く同じ文字列となります。 このレーベンシュタイン距離ですが、phpではlevenshteinメソッドとして提供されています。 しかし、このlevenshteinメソッドは2バイト文字列である日本語には対応していません。正しいレーベンシュタイン距離が出ません。 今回は、この関数を2バイト文字列に対応させます。 ■2バイト文字に対応させる Qiitaで2バイト対応させるコードが公開されていました。ありがとうございます。この関数を利用することで、日本語でも正確にレーベンシュタイン距離を取得することが
CakePHPからメールを送信するとき、postfix等のMTAを利用してもいいのですが、いろいろと設定が面倒です。gmail経由でメールを送信することで、設定の手間も省けると思います。 ここでは、CakePHPからgmail経由でメールを送信する手順を紹介します。対象はCakePHP2系となります。 ■gmailへの接続設定を追加 CakePHPの設定ファイルの一つ、app/Config/email.phpを編集します。ここでgmailへの接続設定を追加します。 存在しない場合はapp/Config/email.php.defaultというファイルがあるので、email.phpにファイル名を変更する等の対応をお願いします。そこで、以下の行を追加します。EmailConfig のメンバ変数として追加してください。 // Gmailの設定を追加 public $gmail = array(
このコピペチェックツールですが、サーバが現在7台位になっています。全部Conohaで作っています。mod_proxy_balancerを使って、APIアクセスをそこそこ捌けるようにして処理速度を稼いでいます。 ■サーバが多いと、デプロイがとてもめんどい はじめのうちはサーバが少なかったので、手動でリリースしていたのですが、台数が増えてデプロイがとても大変になってきました。そこで、複数サーバに同時にデプロイできるcapistranoというのが便利!というので使って見ました。 ■構想はこんな感じ 1台デプロイサーバを作って、そこでコマンド一つで全てのサーバに対して同じソースコードをデプロイすることができるようにしていきます。 前提条件として以下が必要です。 ・gitまたはsvn等のソース管理を使っている ・デプロイサーバからデプロイ先にssh接続ができる ・デプロイ先にはssh鍵接続形式のパス
■特徴 SplFileObjectを利用しているため、エクセルで読み込みできる形式のCSVを読み込み可能です。データ内に改行が含まれるCSVも読み込みすることができます。 filePathにファイルが存在するパスを指定すると、CSVの内容が配列として戻ってきます。行数が多い場合は読み込みながらの処理に変更したほうが良いでしょう。 ■以下、サンプルです <?php function readCsv($filePath) { // CSV読み込み $file = new SplFileObject($filePath); $file->setFlags(SplFileObject::READ_CSV); $csvList = array(); foreach ($file as $line) { // 空のレコードは無視 if (!empty($line)) { $csvList[] = $l
当然、Macとは配列が違うので、Ctrl + Cとか、Ctrl + Vとか利用することができません。 しかし、以下のソフトウェアを使うと、WindowsキーボードでWindowsっぽい感じのショートカットを利用することが可能になります。 高機能で安定性も極めて高いOS X用のキーボードカスタマイズツール 【karabiner】 ■karabinerの使い方 karabinerが常駐することで、キーボードのショートカットなどをwindows風にカスタマイズしたり、ということが可能になります。また、外部キーボードを挿していない場合はカスタマイズしない、ということができるので、普段MabBookのキーボード使うときなどにも邪魔になりません。 ■おすすめ設定 設定項目が多いので、私が常用している設定を晒します。以下の設定だけしておけば、普通に利用できるかと思います。 ▼General ・Don’t
JavaScriptのalertやconfirmなどのダイアログ表示をした時、文字列の改行をする方法です。 以下のように【\n】を入れることで文章を改行することができます。以下のように記述します。¥nじゃなくて\nというところに注意です。
CakePHPでの便利なログの出力の仕方をメモしておきます。 この方法を使うと便利にデバッグできるかと思います。 ■ログの出力の記述方法 CakePHPのログ出力はlog関数を使います。以下のように記述をすると、 $this->log(__LINE__ . '::' . __METHOD__ . '::' . 'ほげほげほげ', 'DEBUG'); 以下のようにログが出力されます。 【実行時間】 Debug: 【プログラム上の行数】::【ソースコード名】::【アクション名】::ほげほげほげ どのソースコードの、どの行の、どのメソッドでログが出力されたのかがわかるため、とてもログを追いやすくなります。 ぜひ試してみてください。
右上や左下からにょっきり通知エリアでてきて通知をしてくれる実装を簡単にできるプラグインを紹介します。ajaxと組わせることで、画面をリロードさせることなく通知をすることができます。 ユーザが画面遷移しなくても情報の通知ができるのでユーザビリティの向上に繋がると思います。
対象の文章がインターネット上に存在するかチェックして、表示してくれるアプリケーションを作りました。CopyContentDetectorという名前のツールです。 以前、はじめてクラウドで記事とか発注してみたのですが、コピーなのかコピーじゃないのか全く判断がつかなかったのです。一応チェックされているとは思うのですがなんか心配でした。他社のコピーコンテンツチェックツールも試してみたのですが、どうも回数制限があったりして使いにくかったので、自分で作ってみました。 CopyContentDetector ■ツールの特徴 回数制限なし。今後もつけることはあまりないと思います。 4000文字までチェックすることができます。 ある程度文章を変更しても検知することができます。 ログイン無しでも利用できます。誰でも簡単に利用できます。 どんどんチェックしたい文字列を登録しておけば、順次実行していきます。 ど
CakePHPでlog関数を利用すると、デフォルト設定でdebug.logまたはerror.logにログが出力されます。この状態のままだと、バッチファイルが複数ある時など、どのバッチから呼ばれた結果のログなのか、わからなくなってしまいます。 そこで、バッチごとにログの出力ファイルを切り替えるという方法をよく取っています。この記事では、debug.log、error.log以外のファイルにログファイルを出力する方法を紹介します。 ■bootstrap.phpに定義をする LOG_TEST_FILEという定義を追加します。ここで指定した設定によって出力されるファイルを変更することができます。 define('LOG_TEST_FILE', 'test_log'); CakeLog::config('test_log', array( 'engine' => 'FileLog', 'types'
■仮想化するメリット ▼バックアップが取りやすい 仮想化ファイルをバックアップしておけば、その環境すべてをまるまるバックアップすることができます。仮想化ファイルがバックアップされていれば、ハードウェアを用意してVMWareいれてしまえば、どのサーバでも同じ環境を用意することができます。 ▼物理ハードウェアの入れ替えがし易い 例えば、物理ハードウェアが古くなって、故障のリスクが高まってきた時、仮想化してあれば、そのイメージを新しいサーバに持っていくだけで、環境が構築完了します。ハードウェアのアップグレードがし易いです。 ▼リソースのオーバーコミット 特にメモリ周りが大きいです。物理メモリが仮に8GBしかなくても、「全く同じOSであれば」共有できる部分をVMWareが自動的にまとめてくれて、物理メモリの利用を抑えることができます。 これが、結構優秀で物理メモリの利用量をかなり削減してくれます。
カンマや読点で文字列を分割するときに、preg_splitを使っています。正規表現で一致した部分で文字列を分割してくれる便利な関数です。この関数ですが、文字化けをすることがあります。 ■文字化けする記述 下記のような記述だと、文字化けします。 $splitList = preg_split("/[\s,、]+/", "ほげほへおげほげほげほ ほげほほげ ほげ"); ■文字化けしない記述 以下の様な記述だと文字化けしません。違いはパターンのところの最後にuが入っているか、入っていないかだけです。 $splitList = preg_split("/[\s,、]+/u", "ほげほへおげほげほげほ ほげほほげ ほげ"); 調べてみると、preg_XXXX系の関数はUTF-8で処理したいときは【/パターン/u】のように/uをつけないといけないみたいです。文字化けは、ホント厄介ですね。
私はMac使ってシステム開発しています。IDEやエディタ、仮想環境でサーバを提供してくれるVirtualBox、データベースのクライアントソフトなどいろいろインストールすると思います。 開発している方だったら、もう一ついれておくと便利なソフトウェアを紹介します。 ■それは、クリップボードの履歴をとっておくソフトウェアです コピー&ペースト、またはカット&ペースト時に利用するクリップボードの中身の履歴を持っておいてくれるアプリケーションの紹介です。 システム開発とかしている方は入れておいて損はないと思います。うっかりcommand+xとかで切り取ったうえで、command+cとかして上書きしてしまった時に助けてもらえます。 ■ClipMenuというアプリを使っています。 私は、ClipMenuというアプリケーションを利用しています。 ■利点 クリップボードを監視して、履歴をとっておいてくれま
この記事でmysqlサーバの最低限の設定を書きました。 my.cnfのinnodb_log_file_sizeの値を変更したあと、そのままmysqlを再起動すると起動しなくなったり、起動してもselectやupdateができなくなります。以下の手順を踏むことで正常にもどります。一旦mysqlサーバを停止しないといけないので、場合によっては少し面倒くさい感じになるかもしれません。 ■mysqlサーバの停止 まずは、mysqlサーバを停止します。 /etc/init.d/mysqld stop ■ログファイルの削除 以下の2つのファイルを削除、または移動します。ファイルの場所は、yumでインストールした時は以下の位置にあります。都度読み替えてください。 rm /var/lib/mysql/ib_logfile0 rm /var/lib/mysql/ib_logfile1 ■mysql再起動 m
フォーム入力のシステムを作っていると、郵便番号と住所を入れる場面が多々あると思います。郵便番号入れているのに、住所を入れるの面倒くさいです。 郵便番号からある程度住所を補完してくれると非常にユーザビリティが向上します。そんな機能を簡単に実装することができるjQueryプラグインの紹介です。 ■郵便番号→住所へ変換してくれるjQueryプラグイン【jpostal】 GitHub上にプロジェクトが存在しています。動作デモはこちらです。 利点として、github上で郵便番号と住所の関連情報のjsonを管理してくれているので、サーバ上に大量の郵便番号→住所のjson的な物を持っておかなくても良いです。住所の更新も自動となります。 サンプルスクリプトは以下のとおりです。とても簡単に実装することができます。 <html> <head> <script src="//ajax.aspnetcdn.com
■画面上で文字列の幅を調べる jQueryを利用して対象の文字列が画面上で何ピクセルあるのか、というのを取得するサンプルです。画面上での文字の幅を取得することで、折り返しが発生しないようにフォントサイズに自動調整したり、ということが可能になります。 以下、サンプルコードです。 <!DOCTYPE html> <html lang="ja"> <head> <script src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.11.1.min.js"></script> <script> $(document).ready(function(){ string = 'ほげほげほげほげほげー'; // ここでstringに入っている文字列の幅のピクセル数を取得することができる。 widthPixel = strWidth(string); al
■長いドロップダウンリストのユーザビリティ向上のために たくさんデータが存在するドロップダウンリストは下に長くなってしまい、選択するのが大変になってしまいます。ユーザビリティも低下してしまいがちです。そんな悩みを解決するために、テキストリアに文字を入力するとある程度ドロップダウンリストの項目を動的に絞り込めるサンプルを書きました。 テキストエリアに文字列を入れると、そのテキストが含まれている選択肢のみ表示されるようになります。 以下、サンプルコードです。デモはこちらです。 <html> <head> <script src="//ajax.aspnetcdn.com/ajax/jQuery/jquery-1.11.1.min.js"></script> <script type="text/javascript"> $(document).ready(function(){ // まずは対
次のページ
このページを最初にブックマークしてみませんか?
『怪しい物を開発するブログ』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く