interprism's blog

インタープリズム株式会社の開発者ブログです。

名前ベースのVirtualHostで運用しているサーバーのSSL証明書の有効期限をコマンドで取得する方法

hiranoです。

弊社ではそこそこの数のサイトを運営しているのですが、それぞれのSSL証明書の有効期限がバラバラに切れるため、突如

f:id:interprism:20170818183248p:plain

と表示されることがしばしばあります。

サーバー一覧と証明書の有効期限を管理しておいて、毎週見ればいいのですがもっと楽がしたいのでスクリプトを書いてデイリーで有効期限をチェックしようとした際にちょっとハマって解決したので記録です。

続きを読む

MySQLで一部のテーブルが破損して起動しなくなった時の対処

hiranoです。

あるサービスで使用しているMySQLが突然起動しなくなった時の対処方法を記す。

背景

何もしてないのに突然MySQLが起動しなくなった!

調査

MySQLのログを見ると以下のように表示されている。

170412 10:52:01 mysqld_safe Starting mysqld daemon with databases from /path/to/mysql
2017-04-12 10:52:01 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
2017-04-12 10:52:01 0 [Note] /usr/sbin/mysqld (mysqld 5.6.27) starting as process 2716 ...

中略

2017-04-12 10:52:01 2716 [Note] InnoDB: Log scan progressed past the checkpoint lsn 86908734689
2017-04-12 10:52:01 2716 [Note] InnoDB: Database was not shutdown normally!
2017-04-12 10:52:01 2716 [Note] InnoDB: Starting crash recovery.
2017-04-12 10:52:01 2716 [Note] InnoDB: Reading tablespace information from the .ibd files...
2017-04-12 10:52:01 2716 [ERROR] InnoDB: space header page consists of zero bytes in tablespace ./dbname/table_name.ibd (table dbname/table_name)
2017-04-12 10:52:01 2716 [Note] InnoDB: Page size:1024 Pages to analyze:64
2017-04-12 10:52:01 2716 [Note] InnoDB: Page size: 1024, Possible space_id count:0
2017-04-12 10:52:01 2716 [Note] InnoDB: Page size:2048 Pages to analyze:32
2017-04-12 10:52:01 2716 [Note] InnoDB: Page size: 2048, Possible space_id count:0
2017-04-12 10:52:01 2716 [Note] InnoDB: Page size:4096 Pages to analyze:16
2017-04-12 10:52:01 2716 [Note] InnoDB: Page size: 4096, Possible space_id count:0
2017-04-12 10:52:01 2716 [Note] InnoDB: Page size:8192 Pages to analyze:8
2017-04-12 10:52:01 2716 [Note] InnoDB: Page size: 8192, Possible space_id count:0
2017-04-12 10:52:01 2716 [Note] InnoDB: Page size:16384 Pages to analyze:4
2017-04-12 10:52:01 2716 [Note] InnoDB: Page size: 16384, Possible space_id count:0
2017-04-12 10:52:01 7fb422a60720  InnoDB: Operating system error number 2 in a file operation.
InnoDB: The error means the system cannot find the path specified.
InnoDB: If you are installing InnoDB, remember that you must create
InnoDB: directories yourself, InnoDB does not create them.
InnoDB: Error: could not open single-table tablespace file ./dbname/table_name.ibd
InnoDB: We do not continue the crash recovery, because the table may become
InnoDB: corrupt if we cannot apply the log records in the InnoDB log to it.
InnoDB: To fix the problem and start mysqld:
InnoDB: 1) If there is a permission problem in the file and mysqld cannot
InnoDB: open the file, you should modify the permissions.
InnoDB: 2) If the table is not needed, or you can restore it from a backup,
InnoDB: then you can remove the .ibd file, and InnoDB will do a normal
InnoDB: crash recovery and ignore that table.
InnoDB: 3) If the file system or the disk is broken, and you cannot remove
InnoDB: the .ibd file, you can set innodb_force_recovery > 0 in my.cnf
InnoDB: and force InnoDB to continue crash recovery here.
続きを読む

bashで変数に格納された文字列(path)を加工する色々な方法(妥協あり)

hiranoです。桜が綺麗です。

シェルスクリプトで変数に格納されている文字列の部分文字列を取得する方法がどうしても憶えられなくていつも何度もググって試してみることになるので備忘で記録しておきます。

未来のおれ、ここに書いたことを忘れるな!

記録したこと一覧

  • 基本編
    • 先頭1文字を取得
    • 先頭2文字を取得
    • 末尾1文字を取得
    • 末尾2文字を取得
    • 先頭1文字を削除して、残りを取得
    • 先頭2文字を削除して、残りを取得
    • 末尾1文字を削除して、残りを取得
    • 末尾2文字を削除して、残りを取得
  • 応用編
    • 先頭が / で始まっていたら削除して、残りを取得
    • 末尾が / で終わっていたら削除して、残りを取得
  • 諦め編
続きを読む

自社で勉強会を実施してみた。

はじめに

自社で勉強会を実施してみたので、その記録を簡単にまとめてみたいと思います。 自社で行われる勉強会はいろいろあるのですが、今回お話する勉強会は、

  • 業務時間中
  • 必須参加
  • 社内組織単位

という特徴があるもので、2015年から行っているものです。

勉強会の概要

流れとしては、

  1. プレゼンターを決める
  2. プレゼンテーションの日を決める
  3. プレゼン資料の作成・準備をする
  4. プレゼンテーションをする
  5. プレゼンが終わると反省会を兼ねて(任意参加の)飲み会を行う

という流れで行います。

このうち、1.と2.は年初に機会的に決められます。 社員一人が必ず1回プレゼンターとして勉強会に参加しなければなりません。

続きを読む

TABLOCKでデータ移行を高速化してみた

この投稿は インタープリズムの面々が、普段の業務に役立つ記事を丹精込めて書き上げる! Advent Calendar 2016 - Qiitaの16日目 の記事です。

ssといいます。

1月から新しい現場で働くことになったので、 前の現場でやったことの一つを備忘録として書きたいと思います。

データ移行の差分SQL高速化

開発ツールがバージョンアップしたときにお客様のデータを移行する差分SQLを作成していました。 移行は下記手順の通りでした。 (データベースは SQL Serverです)

  1. バージョンアップ後のテーブルを作成し、tmpテーブルとする
  2. tmpテーブルにデータ移行
  3. 移行前のテーブルを削除し、tmpテーブルの名前を修正する

今までは問題なくお客様のデータを移行できていましたが、 お客様のデータ量が多いとデータ移行に時間がかかっていました。 そのため、差分SQLの実行時間を短縮できないかと依頼されました。

続きを読む

Concrete5にMathjaxを入れてみた

この投稿は インタープリズムの面々が、普段の業務に役立つ記事を丹精込めて書き上げる! Advent Calendar 2016 - Qiitaの18日目 の記事です。

はじめに

ここ数年、当社( https://www.interprism.co.jp/ )の社員のうち、数学科出身の社員の割合が年々増えてきたため、数学を趣味で続けたいという人向けに、純粋数学に関するサイトを構築することにしました。だれでも気軽に編集できるようにCMSとしてConcrete5(5.8)を採用し、数式表現用にMathjaxを使うためMathjaxのアドオンを導入しました。この構成でサイトを構築するのは、実はこれが2回目で、前回も同じようなところでハマった記憶があるのですが、遠い昔のことで忘れてしまっていたので、今回は作業記録を残すことにしました。

続きを読む

Sozi でぐいぐい動くプレゼンテーション(後編)

この投稿は インタープリズムの面々が、普段の業務に役立つ記事を丹精込めて書き上げる! Advent Calendar 2016 - Qiitaの19日目 の記事です。

寒さと怠惰は例年通り
週3はコタツに埋もれて朝日を拝むようになりました.
ニシヤマです.

引き続きプレゼン資料作成ツールSoziのチュートリアルです.
interprism.hatenablog.com

今回の内容

前編では主要な機能を紹介しながら
簡単なプレゼン資料を作成するところまでいきました.
後編ではより詳細な設定や便利な編集機能を紹介します.

続きを読む

PAGE TOP