WEBサイトの製作、管理、とかの日記ブログです。

<<   2018年02月   >>
SunMonTueWedThuFriSat
    123
45678910
11121314151617
18192021222324
25262728   
新着記事
カテゴリ
過去ログ
コメント
掲示板
検索
久しぶりにVPS(Ubuntu 16.04LTS)のパッケージをアップデートしたのだが、Webminから2台やって1台、間違えてWebminのタブ閉じちゃった。

で、プロセスからapt-getが終わったぽいの確認して、Webminのシステム情報のところにrebootしろとメッセージ出たのでrebootした。
起動しなくなった・・・

SSLの期限確認したのだが、今はSSL BOXのCoreSSLを使ってるのだが、Let's Encryptなる無料のSSLサービスがあることを知った。
無料なので何か制約があるのかと思ったが、90日更新が必要ということ以外見当たらなかった。

「Let's Encrypt」で調べてみると、元は再販業者通さずに非営利組織が提供してるサービスで直接利用可能ぽい。
直接利用した場合も90日更新なのだが、Certbotというコマンドを利用して自動更新することを前提にしたサービスで、
このコマンドはArch Linuxの公式リポジトリで配信されてた。Ubuntu 16.04にもあるらしい。

次からはこれ使うな。
というわけなのだが、今の契約の期限は2019年までだったのでまだまだ先。

去年から期限の来るドメインは維持するドメインに飛ばす感じに設定して廃止しているが、
株手放しちゃったんで お名前.com の株主優待が使えず、ドメインの維持が厳しいので5個に集約することにした。

作業は、
集約先として維持するドメインを第一階層のディレクトリを alias で元のサイトのディレクトリに向ける。
元々ルートディレクトリで運用していたサイトが階層がずれるので、問題が生じる箇所を修正。
元のサイトにRedirect 301を設定して新しい場所に飛ばす。
って感じ。

5ドメインを廃止で、VPSでないさくらのレンタルサーバー使ってるサイトとかもあったが一応作業完了した。
以前は優待でサイト専用にドメイン取得したり、専用にドメイン取らない場合でもサブドメイン使うことがほとんどだったが、
ドメインが割れちゃうとアフィの登録がめんどい。
適当にサイト作るときはドメインはわけずにディレクトリだけ分けた方が後々楽。

ここ数日楽天のAPI触ってるんだが、楽天トラベル地区コードAPIの出力が意味不明すぎる。
{
  "areaClasses": {
    "largeClasses": [
      {
        "largeClass": [
          {
            "largeClassCode": "japan",
            "largeClassName": "日本"
          },
          {
            "middleClasses": [
              {
                "middleClass": [
                  {
                    "middleClassCode": "hokkaido",
                    "middleClassName": "北海道"
                  },
                  {
                    "smallClasses": [
                      {
                        "smallClass": [
                          {
                            "smallClassCode": "sapporo",
                            "smallClassName": "札幌市内"
                          },
                          {
                            "detailClasses": [
                              {
                                "detailClass": {
                                  "detailClassCode": "A",
                                  "detailClassName": "JR札幌駅周辺・新札幌駅"
                                }
                              },
一番奥まででこんな感じになってる。
areaClasses.largeClassesが配列になってて、その下のareaClasses.largeClasses[0].largeClassも配列になってて、largeClassesとlargeClassは重複なのでlargeClasses[0]しか存在しないと思われる。
ここはリクエスト時にformatVersion=2とすれば重複が削除でき、ここ数日使ってる他APIではformatVersion=2が扱いやすいのだが、地区コードAPIでformatVersion=2するとareaClasses.largeClassesが2重配列になってる上に、middleClasses以下の重複が除外できていない。

middleClasses以下も重複配列になっているのだが、detailClasses[0].detailClassは配列ではなくハッシュになってる。

detailClassは1重配列で取って、smallClass以上は2番目以降の要素が存在しないと思われるClassesを[0]で決め打ちしちゃえば良いのかな?

不特定のサイト上で、マウスオーバーで広告の入った<iframe>をポップアップしようとしたんだけど結構めんどかった。

テキストにマウスカーソルが重なると広告の<iframe>をポップアップで表示するので、まず座標系がめんどいのだが、
テキストは<a>で作ってmouseenterで position:absolute の<iframe>をポップアップしてmouseleaveで閉じる。
マウスカーソルの無いタッチパネルも考慮してonclickでオン・オフできるようにした。
座標は最初、イベント対象の<a>を display:inline-block;position:relative にして、<a>からの相対座標でやった。
display:inline-block にするのは、<a>の大きさを取得して隣接位置にポップアップさせるため。

まず、ポップアップ座標に重なる要素がある場合に、重なるものによっては下に表示されちゃったので、z-indexつけた。


この状態で一回公開したのだが、
対象が不特定のサイト上で、テキストの親要素がどうなってるのかわからない状況。
一発目の確認に使用したサイトで、テキストが右サイドバーに表示されて、サイドバーが overflow:hidden になってた。
overflow:hidden だとはみ出してポップアップできないよね・・・

それで苦労したのだが、
まず、テキストのoffset座標をbodyから全部計算してbodyの子要素でabsoluteして解決しようとした。
そしたら、ポップアップ領域は手木ストの子要素じゃないからmouseenter/mouseleaveができないよね・・・
ポップアップをfixedにしてマウス座標にポップアップをするのも考えたが、mouseenter/mouseleaveほど確実に行かないよね・・・

mouseenter/mouseleaveによるイベント駆動が可能な方法を考えたが、
overflow:hiddenのサイドバーであっても、ポップアップするabsolute要素のoffsetParent要素以上の位置にoverflow:hiddenが設定されてなければはみ出し可能だった。
当初イベント対象のテキストを position:relative にしてテキストの高さ分だけ座標を調整していたが、
テキストを position:relativeにせずに子要素をabsoluteした場合、テキストのoffsetParentの表示可能範囲になら表示可能。
つまり、サイドバー上に設置が想定され、サイドバーにoverflow:hiddenが設定されている可能性は結構考えられるのだが、
サイドバーがfloatで実装されている場合はoffsetParentにはならないので、サイドバーより上の要素基本的に<body>の表示可能範囲にポップアップが可能。


サイドバー自体がfloatではなくabsoluteかfixedでレイアウトされていて、かつoverflow:hiddenになっている場合は隠れちゃうことが想定されるのだが、
それを解決する方法は思いつかないんで、そこは諦めることにした。

  次のページ  
whblog 1.5