技術関連

    なぜGmailはPOP受信を拒むのか?

    2026年現在、私たちのビジネスインフラは大きな転換点を迎えています。長年、電子メールの標準として親しまれてきた「POP受信」が、Googleをはじめとする主要プラットフォーマーによって事実上の「終焉」へと導かれています。

    Jan 10, 2026
    技術関連

    Hugoのマークダウン記法

    ここではhugoのマークダウン記法を確認していきます。

    シンタックスハイライト

    バックスラッシュでコードを記載することで対応してもらえる

    function myhugodemo(int $a, text $b, array $c):void {
        print $a;
        print $b;
        print $c;
    }
    

    ポイント注釈

    Jan 10, 2026
    技術関連

    パスワード付き圧縮ファイル作成

    最近はパスワード付きのZipファイル作成を行うこと自体が無くなってきましたが、今日はそんな相談を頂いて、普通にWindowsから右クリックして…と伝えようとしたら、すぐに出て来なくて困りました。

    Dec 25, 2025
    技術関連
    パスワード付き圧縮ファイル作成

    Hugoテーマの学習

    ここではhugoのテーマの一つ一つがどう動いているのか?確認していきたいと思います。

    Dec 18, 2025
    技術関連

    画像や音声処理にffmpegがかなり便利なのでまとめ

    ffmpegは動画から音声だけを取り除く だけでなく、svgファイルをpngに変換もできます

    Dec 13, 2025
    技術関連

    エンジニアのためのデザイン学習

    いろんな可能性を見出して機能を追加して、詳細まで分かりやすく… するととんでもなく使えない画面デザインが完成するという悲劇。 使われないシステムはこうして作られる…

    Dec 3, 2025
    技術関連

    Wordpressからhugoへ

    長い間、wordpressを用いてブログを運用していました。といっても思いつきで書いて、しばらく放置を繰り返しておりました。 しかしセキュリティの脆弱性が見つかったり、そもそも管理画面の乗っ取りなど不安を感じておりました。

    今回、思い立ったようにhugoという仕組みに乗り換えてみました。 エンジニアな人でないとちょっと扱いが難しいかもしれません。

    自分のパソコンで記事を作成、コミット、プッシュすると自動的にサイトも更新されるという仕組みです。 静的ページなので表示も早く、しかも安全です。

    Nov 27, 2025
    技術関連
    Wordpressからhugoへ

    なぜ今pnpmなのか? 主要パッケージマネージャー徹底比較で見えた、その圧倒的実力

    Web開発の世界では、npmYarnが長らくパッケージマネージャーのデファクトスタンダードとして君臨してきました。しかし近年、「第3の選択肢」としてpnpmが急速に存在感を増しています。

    また新しいツールか…」と感じるかもしれません。しかし、pnpmは単なる代替品ではなく、node_modulesが抱える根本的な問題にアプローチし、ディスク効率インストール速度依存関係の堅牢性において、他のツールを凌駕する可能性を秘めています。

    この記事では、pnpmがなぜこれほどまでに注目されているのか、その核心的な仕組みから、npm、Yarn、そして超新星Bunとの比較まで、約2000字で徹底的に解説します。あなたの開発体験を次のレベルへ引き上げるヒントが、きっとここにあるはずです。

    pnpmの核心:効率性を生む「コンテンツアドレス可能ストア」

    pnpmの魔法の根源は、そのユニークなnode_modulesの管理方法にあります。npmやYarn Classicがプロジェクトごとにパッケージのコピーを作成するのに対し、pnpmは全く異なるアプローチを取ります。

    1. グローバルストアへの一元管理 : pnpmは、インストールした全てのパッケージを、コンピュータ上の単一の場所(コンテンツアドレス可能ストア)に保存します。パッケージの内容に基づいて一意なハッシュが生成され、そのハッシュをキーとして保存されます。これにより、同じバージョンのパッケージは、PC上にただ一つしか存在しない状態が実現します。
    2. シンボリックリンクによる参照 : プロジェクトでパッケージをインストールすると、pnpmはグローバルストアから実際のファイルをコピーするのではなく、そこへのシンボリックリンク(またはハードリンク)をnode_modules内に作成します。

    この仕組みにより、pnpmは他のパッケージマネージャーにはない、3つの大きなメリットを提供します。

    🚀 メリット1:驚異的なディスクスペース効率

    複数のプロジェクトで同じバージョンのReactやLodashを使っていても、ディスク上に物理的に存在するファイルは1つだけです。プロジェクトが増えれば増えるほど、その節約効果は絶大になります。ローカル環境のストレージを圧迫しがちなnode_modules問題から、私たちを解放してくれます。

    ⚡ メリット2:超高速なインストール

    2回目以降のインストールでは、pnpmはグローバルストアに必要なパッケージが既に存在するかをチェックします。もし存在すれば、ネットワークからダウンロードする必要はなく、ディスク上のリンクを作成するだけで済みます。これにより、特にキャッシュが効いている状態でのインストールは、npmやYarnを大幅に上回る速度を発揮します。

    🛡️ メリット3:厳格で信頼性の高い依存関係

    npmやYarnは、依存関係を「フラット化」してnode_modulesのトップレベルに配置します。これにより、package.jsonに直接記述していないパッケージ(依存関係の依存関係、いわゆる孫パッケージ)にもコードからアクセスできてしまう「幽霊依存(Phantom Dependencies)」という問題が発生します。

    これは、意図しないライブラリへの依存を生み、依存関係を更新した際に予期せぬエラーを引き起こす原因となります。

    pnpmのnode_modules構造はフラットではなく、package.jsonで宣言されたパッケージへのシンボリックリンクのみが直下に配置されます。これにより、幽霊依存が構造的に発生しなくなり、プロジェクトの信頼性と堅牢性が大幅に向上します。

    主要パッケージマネージャーとの徹底比較

    pnpmの良さをより深く理解するために、他の主要なツールと比較してみましょう。

    機能/特徴 pnpm npm Yarn (Berry v4+) Bun
    インストール速度 速い 普通 速い (PnP) 最速
    ディスク効率 非常に良い 普通 良い (Zero-Installs) 良い
    依存関係の厳格さ 非常に厳格 緩い 厳格 (PnP) npm互換
    node_modules シンボリックリンク フラット 無し (PnP) npm互換
    安定性/実績 高い 非常に高い 高い 発展途上
    モノレポ対応 強力 対応 強力 対応
    互換性 高い 非常に高い PnP利用時に注意 発展途上

    vs npm

    npm はNode.jsの公式パッケージマネージャーであり、そのエコシステムと安定性は他の追随を許しません。しかし、pnpmと比較すると、ディスク効率とインストール速度、そして依存関係の厳格さで見劣りします。特に幽霊依存の問題は、npmが抱える構造的な課題です。pnpmは、npmの使い慣れたコマンド体系(pnpm installnpm install と同じように機能します)を維持しつつ、これらの問題をアーキテクチャレベルで解決しています。

    Nov 17, 2025
    技術関連
    なぜ今pnpmなのか? 主要パッケージマネージャー徹底比較で見えた、その圧倒的実力

    ディレクトリーのツリー表示あれこれ

    ファイルサーバーのディレクトリーは定期的に検証して使いやすくする必要があってコマンド整理

    Ubuntu

    フォルダのみ・2階層まで

    $ tree -d -L 2
    

    隠しフォルダも含む

    $ tree -da -L 2
    

    ASCII 罫線

    $ tree -d -L 2 -A
    

    出力をファイルに保存

    $ tree -d -L 2 > tree.txt
    

    find版(スクリプト用)

    $ find . -maxdepth 2 -type d
    

    windows PowerShell

    インストール

    winget install eza-community.eza
    

    3階層まで表示

    > eza -T --icons -L 3
    

    隠しファイルも含む

    > eza -T --icons -a -L 3
    

    更新日時・サイズも表示

    > eza -T --icons -l -L 3
    

    フォルダのみ表示

    > eza -T --icons -D -L 3
    
    Oct 31, 2025
    技術関連

    OBSで録画するときはmkv形式がオススメ!!

    🔹 MKV形式とMP4形式の違い

    MKV形式

    • 録画中にPCが落ちてもファイルが壊れにくい
    • 複数音声トラックや字幕に柔軟対応
    • ただし、そのままでは一部ソフトやYouTubeで非対応の場合あり

    MP4形式

    • 互換性が高く、どこでも使いやすい
    • YouTubeに直接アップロード可能
    • ただし、録画中にクラッシュするとファイルが破損するリスクあり

    [!tip] 結論: 録画はMKVで保存し、必要に応じてOBSの「リマックス機能」でMP4に変換するのがおすすめ!

    🔹 OBSで自動的にMP4へ変換する方法

    1. OBS「設定」 → 「出力」 → 録画フォーマットを MKV に設定
    2. 「詳細設定」 → 「録画を自動的にMP4へリマックスする」にチェック
    3. 保存して完了

    🔹 ffmpegで音声だけを抽出する方法

    LinuxでMKVから音声のみを取り出す場合、ffmpegコマンドを利用します。

    そのまま無劣化で抜き出す(AACなど)

    ffmpeg -i input.mkv -vn -acodec copy output.aac
    

    MP3に変換して保存

    ffmpeg -i input.mkv -vn -acodec libmp3lame output.mp3
    
    • -vn : 映像を無視
    • -acodec copy : 音声を変換せずコピー
    • libmp3lame : MP3エンコーダー

    [!note] 複数の音声トラックがある場合は、専用ツール mkvextract を使う方法もあります。

    Oct 3, 2025
    技術関連
    OBSで録画するときはmkv形式がオススメ!!

    新しいPCをローカルアカウントでセットアップする方法

    ローカルアカウントを作成する

    Windows11において初期アカウント作成の際にマイクロソフトアカウントの作成を求められます。
    これを回避してローカルアカウントを作成する方法を記載いたします。

    手順

    1. OS初期起動のユーザー作成時にインターネットを切断しておきます。
    2. Shift+F10を押してコマンドプロントを開きます。(Fnキーを同時に押す必要がある場合があります。DELLやHPのマシンの場合等)
    3. コマンドプロントにcd oobeと入れてエンターキーを押します。
    4. 続けてコマンドプロントにBypassNRO.cmdと入れてエンターキーを押します。
    5. これで再起動されるので、引き続きユーザー設定を進めていく。
    6. インターネット接続を要求される時があるので、その時にインターネット回線を切断します。
    7. その後 インターネットに接続していません を選択します
    8. さらに 制限された環境で設定する を選択します

    するとローカルアカウントに必要な情報(ユーザー名、パスワード等)を求められるので入力します。
    これでローカルアカウントを作成することができます。

    設定続き

    1. ローカルユーザー、パスワードを設定します
    2. 秘密の質問の答えを設定します
    3. プリファレンスの設定(名前やメール)は空欄のまま、次へをクリック
    4. McAfeeのサービスには登録し…のチェックを外します

    以上でOSの初期設定完了です

    セットアップ

    1. McAfee削除 設定⇒アプリから削除します
    2. OneDrive削除 設定⇒アプリから削除します
    3. メーカー固有のアップデートの仕組みを設定(後述)

    利用者としてのセットアップ

    https://learn.microsoft.com/ja-jp/windows/package-manager/winget/
    から“`アプリ インストーラーは Microsoft Store から取得“` をクリックします

    ※これをやらないとwingetが使えません

    管理者モードでwindows terminalを開きます

    winget install google.chrome
    winget install google.japaneseime
    winget install neovim.neovim
    winget install microsoft.visualstudiocode
    winget install sharex.sharex
    winget install acrobatreader
    winget install google.googledrive
    
    wsl --install
    wsl --set-default-version 2
    wsl --install -d Ubuntu
    
    
    Mar 5, 2024
    技術関連

    Emmet:タブキーで自動入力

    vscodeで、HTMLタグなどを入力するときに、覚えておくとタイプする文字数をかなり省略できる。たびたび、忘れるのでここでメモする。

    html:5
    

    とすると、HTMLの雛形が出てきます。

    .row|c

    とすると、なんと、

    <div class="row">
    </div>
    <!-- /.row -->
    

    とどのクラスを閉じたのか明白となります。

    div+h1

    などと、[+]を使うと、並列にタグを記載します

    <div></div>
    <h1></h1>
    

    さらに、ネストさせるには、

    div>h1

    とすればOK。以下のようになります

    <div>
    <h1></h1>
    </div>
    

    繰り返しは、[*]を使います

    div*5

    とすると、

    <div></div>
    <div></div>
    <div></div>
    <div></div>
    <div></div>
    

    他にもいろいろとあるけれど、よく使うのはこんなあたり。

    Nov 20, 2023
    技術関連
    Emmet:タブキーで自動入力

    WSL2でのローカルSSL

    本番環境とは別のところでいろいろと試すために、ローカル環境を用意。
    いつもはhttp://localhostでやっていましたが、毎回ローカルを起動させるのも大変なため、きちんと?設定してみました

    以下のカタチでやることのメリットは、3ヶ月ごとのアップデートではなく、1.5年いけますしローカル環境であれば十分かな?

    $ aptitude install mkcert
    $ mkcert --version // ⇒ バージョン表示されればOK
    $ mkcert -install  // ⇒ ローカルCAの生成
    $ mkcert -CAROOT   // ⇒ パスの確認。おそらく以下のようになる
    /home/(name)/.local/share/mkcert
    

    で、ここから変換が必要のようですので、以下のようにします

    $ openssl pkcs12 -export -inkey rootCA-key.pem  -in rootCA.pem -out rootCA.pfx
    Enter Export Password:
    Verifying - Enter Export Password:
    $ ls
    rootCA-key.pem  rootCA.pem  rootCA.pfx
    

    ここで生成するrootCA.pfxをwindows上で、右クリックして、インストールします。
    生成した時のパスワードを入力
    「証明書をすべてのストアに配置する」
    証明書ストアを「信頼されたルート証明機関」とすることをお忘れなく。

    続いて個別のサイトの設定。

    $ mkdir ~/ssl
    $ cd ~/ssl
    $ mkcert example.com.local  //ここは正しいドメインを。私はローカル開発は.localにするようにしています
    
    Created a new certificate valid for the following names 📜
    - "example.com.local"
    
    The certificate is at "./example.com.local.pem" and the key at "./example.com.local-key.pem" ✅
    
    It will expire on 9 October 2025 🗓
    
    $ ls
    example.com.local-key.pem example.com.local.pem
    

    pemファイルを移動

    Jul 10, 2023
    技術関連

    EXCELでふりがなを表示させたいのに出て来ない場合の対処

    久しぶりに焦った経験。

    通常、エクセルでは名前だとか、住所とか入力して、別のセルに =PHONETIC(参照セル) とすると、ふりがなが自動的に入ります。今回、これが漢字のまま表示されてしまいました。

    久しぶりに、未知のバグを発見した喜び!かと思いつつも、まさかそんなはずはないだろうと、色々と調べると、なんとコピペした場合はこれが使えないようです。

    数件なら手で入力すればOKですが、今回は600行程度あります。これは無理ですね。ということで、プログラムで対処しました。

    まず、エクセルの上のメニューに「開発」がない場合は、予め、「ファイル」⇒「オプション」⇒「リボンのユーザー設定」とクリックして、「開発」というところのチェックを入れます。

    続いて、プログラムを入力します。メニューの「開発」をクリックすると、「VisualBasic」というのが出てきますので、こちらをクリックして、以下のように入力します。

    Sub setFurigana()
        Selection.SetPhonetic
    End Sub

    続いて、ふりがなを得たかった漢字が書かれている部分を全体的に選択して、開発メニューから、マクロをクリック。すると、先程作成した、setFuriganaというのが出てきますので、これをクリックします。

    もうこれで、出来たも同然。手で入力した状態になりました。

    あとは、=PHONETIC(参照セル) とすればフリガナが表示されます。お疲れ様でした。

    Sep 10, 2022
    技術関連

    AtcoderをWSL2環境で楽しむ方法

    休みといえども中々ゆっくりすることが難しかったのですが、本日久しぶりに、ゆっくりできる日を得て、windowsマシンに切り替えてからAtcoder環境を整えることができたのでまとめておきます。

    May 3, 2022
    技術関連

    wsl2でphpenvを入れてphp7.4をインストール

    phpもどうなんだろうと思いつつもwordpressなど抜けられないとこも多い。そこでローカルにはphpenvを入れてバージョンを管理してみる

    Apr 16, 2022
    技術関連

    WSL2のUbuntu20.04にmysql5.7をインストールする

    先日より、macからwindowsにベースを移行しています。
    まずは、昔から引きずっているサイトなどをローカル環境で動かせるようにしてみたいと思います。
    新しいマシン自体のトラブルもあって、購入していきなりOSごとインストールし直すという中々スリリングな体験中。しっかりとしたメーカーだから変なことはないのでしょうが、いろいろ起きますね

    WSL2ベースのubuntu20.04のインストール

    これはそれほど、難しい話ではなく、コンソールを開いて以下のように入力

    wsl --install

    mysqlインストール

    普通にやると、mysql8.0がインストールされます。ubuntu20.04ではそれが普通です。ただ、いろいろ過去のものを弄りたくない、そこまで冒険したくない思いもあって、mysql5.7を入れます。

    $sudo apt-get update
    $sudo apt-get install wget
    $wget https://dev.mysql.com/get/mysql-apt-config_0.8.12-1_all.deb
    $sudo dpkg -i mysql-apt-config_0.8.12-1_all.deb

    ここまでやると設定画面が出てきます。

    レポジトリの選択 ⇒ Ubuntu bionic
    Which server? ⇒ mysql5.7
    確認画面 ⇒ OK

    これで終了です。間違えたら設定ごと削除します。

    sudo dpkg -P mysql-apt-config    # 間違えて削除したい場合です

    あとは、インストールを進めます

    $sudo apt-get update
    $sudo apt-cache policy mysql-server
    hashimoto@HP091:~$ sudo apt-cache policy mysql-server
    mysql-server:
      Installed: (none)
      Candidate: 8.0.28-0ubuntu0.20.04.3
      Version table:
         8.0.28-0ubuntu0.20.04.3 500
            500 http://archive.ubuntu.com/ubuntu focal-updates/main amd64 Packages
            500 http://security.ubuntu.com/ubuntu focal-security/main amd64 Packages
         8.0.19-0ubuntu5 500
            500 http://archive.ubuntu.com/ubuntu focal/main amd64 Packages
         5.7.37-1ubuntu18.04 500
            500 http://repo.mysql.com/apt/ubuntu bionic/mysql-5.7 amd64 Packages

    インストール可能なバージョンが表示されるので、5.7.37-1ubuntu18.04を覚えておきます
    まずは、-sをつけてインストールのシュミレーション

    Apr 16, 2022
    技術関連

    タブ切り替え時にJavaScriptを実行させる方法

    Bootstrapを使うとプログラムなしでタブ切り替えのWEBページが作れます。以下参照。ですが、タブを切り替えた時に何かをやりたい!と思ったのです。React等をつかっておけばよかったのですが、すでにあるサイトでしたので、どうしたら良いものか?と検索して実装した時のメモです。

    普通にやる場合

    <ul class="nav nav-tabs" id="myTab">
      <li><a href="#overview" data-toggle="tab" aria-selected="true">Overview</a></li>
      <li><a href="#profile" data-toggle="tab" aria-selected="false">Profile</a></li>
      <li><a href="#timeline" data-toggle="tab" aria-selected="false">Timeline</a></li>
      <li><a href="#activity" data-toggle="tab" aria-selected="false">Activities</a></li>
    </ul>
    
    <div class="tab-content">
      <div class="tab-pane active" id="overview">...</div>
      <div class="tab-pane" id="profile">...</div>
      <div class="tab-pane" id="timeline">...</div>
      <div class="tab-pane" id="activyty">...</div>
    </div>

    ここで、タブをクリックした時点でサーバーから何かを読み込ませるためには

    $('a[data-toggle="tab"]').on('shown.bs.tab', function (e) {
      var activated_tab = e.target // activated tab
      var previous_tab = e.relatedTarget // previous tab
    
      alert(activated_tab);
    })

    こんな感じでできるようです。便利!

    参考サイト:
    https://qiita.com/imai/items/3e0e4c2fe004cede4037

    Feb 18, 2021
    技術関連

    見たことのない太さを発見。LANケーブルの種類を調べてみた

    先日、KSP(かながわサイエンスパーク)西棟の2Fに新しく出来たTech-Pot見てきました。
    さすがに、綺麗で落ち着いて仕事ができそうです。家の近くにこんな施設があったら絶対利用したくなるようなワクワクするスペースです。これで1ヶ月1万で利用できたら安いですよね。

    トップページ - Tech-Pot|溝の口のコワーキングスペース&シェアオフィス
    <div class="blogcard-snippet external-blogcard-snippet">
      コワーキングスペース シェアオフィス テレワーク 川崎 溝の口
    </div>
    

    さて、この中には、個室も用意されており見せて頂くと、なんと各机に見たこともない太いLANケーブルを発見。よくよく確認するとカテゴリー6Aという10Gまで対応しているケーブルのようです。
    ちょっと期待できそうです。

    ちなみに、こんな感じのようです。

    <td>
      CAT5
    </td>
    
    <td>
      CAT5E
    </td>
    
    <td>
      CAT6
    </td>
    
    <td>
      CAT6A/E
    </td>
    
    <td>
      CAT7
    </td>
    
    <td>
      CAT7A
    </td>
    
    <td>
      CAT8
    </td>
    
    <td>
      100M
    </td>
    
    <td>
      1G
    </td>
    
    <td>
      1G
    </td>
    
    <td>
      10G
    </td>
    
    <td>
      10G
    </td>
    
    <td>
      10G
    </td>
    
    <td>
      40G
    </td>
    
    <td>
      100M
    </td>
    
    <td>
      100M
    </td>
    
    <td>
      250M
    </td>
    
    <td>
      500M
    </td>
    
    <td>
      600M
    </td>
    
    <td>
      1000M
    </td>
    
    <td>
      2000M
    </td>
    
    規格
    通信速度(bps)
    伝送帯域(Hz)

    今は、ほとんどがwifi利用であんまり、LANケーブルを見ることが少なくなりましたが、やっぱり安定した接続をするならケーブルに越したことはありませんね。

    Nov 7, 2020
    ライフハック技術関連

    mongodbの使い方(ユーザー管理)

    mongodbは、RDBではないので、その特性を理解しつつ状況に合わせて利用することが大切です。nodeとの相性は抜群ですのでnode + mongo + expressなどで利用するパターンが多くあります

    ユーザー管理方法

    rootのパスワードが、rootとして設定されているmongodbでユーザー管理を行う方法です。今回はtestデータベースへのユーザー管理とします

    > use admin
    > db.auth("root", "root")
    1
    > use test
    switched to db test
    

    ユーザーを追加します

    > db.createUser({
    ... user: "sato",
    ... pwd: "sato",
    ... roles: &#91;{role: "readWrite", db: "test"}]
    ... })
    Successfully added user: {
            "user" : "sato",
            "roles" : &#91;
                    {
                            "role" : "readWrite",
                            "db" : "test"
                    }
            ]
    }
    

    権限を追加してみます

    > db.grantRolesToUser("sato", &#91;"userAdmin"])
    > db.getUsers()
            {
                    "_id" : "test.sato",
                    "userId" : UUID("20bb2d33-da13-4e87-bfca-4b7b61f3d84c"),
                    "user" : "sato",
                    "db" : "test",
                    "roles" : &#91;
                            {
                                    "role" : "readWrite",
                                    "db" : "test"
                            },
                            {
                                    "role" : "userAdmin",
                                    "db" : "test"
                            }
                    ],
                    "mechanisms" : &#91;
                            "SCRAM-SHA-1",
                            "SCRAM-SHA-256"
                    ]
            }
    ]
    

    権限削除します

    May 6, 2020
    技術関連

    ESLintを使うとnode開発はとっても便利

    これまでvimメインでやってきたものの最近のVSC(Visual Studio Code)はとっても便利な環境が整えられており、しかも無料ですから使わない手はありません。
    インデントは2文字か、4文字なのか?、改行コードは、LF、CRLF?、文字列はシングルクォートで囲むのか、ダブルクオートで囲むのか?行末のセミコロンは必要か、不要か?など、コーディングスタイルのこだわりなどもあって、これを共通化させるために少々の設定が必要です。以下、設定手順です。

    まず、必要となるのは、以下の3点です。順に見ていきましょう

    1. VSCに、ESLINTをインストールすること
    2. プロジェクトにeslintをインストールすること
    3. ルールファイル .eslintrc.jsを設定すること

    VSCにESLintをインストール

    左側の拡張機能ボタンをクリック、eslintを検索し、インストールします。インストールを済ませたら、再読み込み(リロード)を行います。

    プロジェクトにeslintをインストールします

    VSCのコンソールもしくは、別のコンソールからインストールします。

    npm install eslint --save-dev
    

    ルールファイル.eslintrc.jsを設定します

    初回ですので、ウィザード形式で設定してみます。コンソールにて

    # ./node_modules/.bin/eslint --init
    ? How would you like to use ESLint?
      To check syntax only
      To check syntax and find problems
    ❯ To check syntax, find problems, and enforce code style
    

    このような形で問われてきますので、カーソルキーで上下させて希望の形を選びます。なお間違えても、再度実行するだけですので心配ありません。また作成された設定ファイルは後ほど編集できますので、まずは雛形を作るくらいの気持ちで問題ないかと思われます。

    今回、私が設定した内容は以下のようにしてみました。質問? 設定値の順に表示されています

    May 6, 2020
    技術関連

    DockerでSSLを使う

    普段はSSLで使うサーバーのみとなりつつありますので、Dockerでの開発環境も今更ながらSSL化させたのでメモ

    Jan 25, 2020
    技術関連

    VSCでPHPプログラミングするときの決定版、phpcs, phpcbf, phpdocblocker

    普段はdockerを使った開発に移行したためwindowsの機能をつかって動かすことはほぼ無くなったのですが、MicrosoftのVisual Studio Codeなどを使っているときに、どうしてもphpが動かせると便利に使えたりすることがあり、windowsマシンに改めて、PHPをインストールしてみました。

    基本的には、ダウンロードしてきて解凍するだけなのですが、一部改修したので以下にメモ。

    ダウンロード先:
    https://windows.php.net/download
    ここから、zip版をダウンロードして、c:\php に解凍します

    php.iniの編集

    - ;extension=php_mbstring.dll
    + extension=php_mbstring.dll
    - ;extension=php_openssl.dll
    + extension=php_openssl.dll
    

    composerのインストール

    > php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
    > php composer-setup.php
    > php -r "unlink('composer-setup.php');"
    > echo @php "%~dp0composer.phar" %*>composer.bat
    

    これで “`composer“`だけで動かせるようになります。
    もしくは、webからインストールファイルをダウンロードして実行することでここまでは達成。

    PHP_CodeSniffer のインストール

    CakePHP Code Snifferもあわせてインストールする方法をまとめておきます。

    composer global require "squizlabs/php_codesniffer=*"
    composer global require "cakephp/cakephp-codesniffer=2.*"
    phpcs --config-set installed_paths %USERPROFILE%\AppData\Roaming\Composer\vendor\cakephp\cakephp-codesniffer
    

    Visucal Studio Codeで使えるようにする

    VSCのExtensionをインストールします。
    PHPCS: https://marketplace.visualstudio.com/items?itemName=ikappas.phpcs
    PHPCBF: https://marketplace.visualstudio.com/items?itemName=persoderlind.vscode-phpcbf
    ついでに、
    PHP DocBlocker: https://marketplace.visualstudio.com/items?itemName=neilbrayfield.php-docblocker

    設定は、VSCの設定jsonファイルに以下を追加しました。

    {
      "phpcs.executablePath": "C:\\Users\\{---user name ---}\\AppData\\Roaming\\Composer\\vendor\\bin\\phpcs.bat" ,
      "phpcbf.enable": true,
      "phpcbf.executablePath": "C:\\Users\\{---user name ---}\\AppData\\Roaming\\Composer\\vendor\\bin\\phpcbf.bat" ,
      "phpcbf.documentFormattingProvider": true,
      "phpcbf.onsave": false,
      "phpcbf.standard": null
    }
    

    使い方

    [SHIFT] + [ALT] + [F] でソースコードの自動修正
    phpdocの入力では、/**まで打ち込んで、[TAB]で自動入力されます

    Oct 17, 2019
    技術関連

    タブレット受付のまとめ

    会社の受付にタブレットを用いている会社が増えてきました。導入に向けて調べるといろいろと出てきました。

    Sep 11, 2019
    技術関連

    Babel、webpack、ES6でReactを動かすために

    WEBや書籍など、いろいろなところでReactの記事が記載されていますが古い情報だったりして初学者には辛いところです。動作確認できた情報をまとめています。
    情報は以下のバージョンで確認している内容です

    $ node -v
    v10.16.0
    $ npm -v
    6.9.0

    まずはフォルダを作成しパッケージをインストールします

    $mkdir react-es6 && cd $_
    $npm init
    $ npm i -D @babel/core babel-loader @babel/preset-env @babel/preset-react @babel/register
    $ npm i -D webpack webpack-cli
    $ npm i -S react react-dom
    

    雑誌などだとwebpack.config.jsに以下の記述があったりしますが、その場合options以下を削除し、.babelrcに記載します。

    options: {
      presets: ['es2015', 'react']
    }

    babelの設定ファイルを作成します
    file: .babelrc

    {
      "presets": [
        "@babel/preset-env", "@babel/preset-react"
      ]
    }

    なお、babel_core, babel-preset-es2015, babel-preset-reactなどをインストール済みの場合は使いませんので削除できます

    $ npm rm babel_core babel-preset-es2015 babel-preset-react

    その他は、webpackやら、httpなどを使うと思いますが、ほぼ触らずに大丈夫です

    Aug 18, 2019
    技術関連

    ZOHO APIv2攻略の続編です

    ZOHO CRMのAPIv2があまりに分からずに苦労した話 の続編です

    phpにて、composerでインストールしたファイルを直接いじるというのはどう考えてもおかしいため、方法があるのではないかと探ってみました。

    前回チャレンジした内容を真っ向から否定して実施です。

    • ZOHO専用のDBは使わない
    • composerには触れない

    実は簡単にできましたが、気づきに時間がかかってしまいました。
    実際に使えたコードをメモしておきます。

    $configuration = [
                "client_id"              => "1000.example.example.example",
                "client_secret"          => "1234567890.example.example.example",
                "redirect_uri"           => "http://example.com",
                "currentUserEmail"       => "info@example.com",
                "applicationLogFilePath" => ROOT . DS . "logs", 
                "token_persistence_path" => ROOT . DS . 'data',
            ];
            \ZCRMRestClient::initialize($configuration);
    		set_include_path(\ZCRMConfigUtil::getConfigValue('applicationLogFilePath'));
            $oAuthClient = \ZohoOAuth::getClientInstance();
            $grantToken  ="1000.example.example.example.example.example";
            $oAuthTokens = $oAuthClient-&gt;generateAccessToken($grantToken);
            var_dump($oAuthTokens);
            
    

    上記のtoken_persistence_pathで指定することで、これまでZOHO専用DBに格納した内容をテキストに書き出して利用することができるようにするものです。
    パス指定は、最後のスラッシュはつけても付けなくても補完してくれます。

    予め、上記のtoken_persistence_pathにzcrm_oauthtokens.txtというファイルを作って置く必要があります

    また、上記のgrantTokenについても注意が必要です。
    https://accounts.zoho.com/developerconsole にて

    こちらの3ドットのところから、「セルフクライアント」をクリックします。

    スコープは全権限を与えて良ければ以下とします

    ZohoCRM.users.ALL,ZohoCRM.org.ALL,ZohoCRM.settings.all,ZohoCRM.settings.roles.ALL,ZohoCRM.settings.profiles.ALL,ZohoCRM.modules.all,ZohoCRM.settings.variables.ALL,ZohoCRM.modules.notes.ALL,ZohoCRM.bulk.ALL,ZohoCRM.settings.modules.ALL,ZohoCRM.notifications.ALL,ZohoCRM.coql.READ

    10分を指定して、上記プログラムにアクセスします

    終わり。

    Dec 13, 2018
    技術関連

    ZOHO CRMのAPIv2があまりに分からずに苦労した話

    ふだんZOHO CRMというとても安く使えるCRMサービスを使っています。
    このたび現在のZOHO CRM APIの仕様がv1からv2への移行というタイミングでシステムの入れ替え作業に取り掛かっていたところ、ドキュメントがあまりに無くて苦労しました。
    以下、備忘録的に載せておきます。

    実践編

    https://www.zoho.com/crm/help/api/v2/ ⇒お勧め
    https://www.zoho.com/crm/help/developer/server-side-sdks/php.html

    これを読んでもわからないことが多く、動かしてみると帰納法的に理解できる点が多数ありました。
    順にまとめていきます。

    STEP.1 ZOHO Clientの登録

    zohoに普通にログインした状態にて、
    https://accounts.zoho.com/developerconsole
    を表示します

    「クライアントIDの追加」というボタンをクリックし、入力します

    <td>
      有効なクライアント名を入力してください
    </td>
    
    <td>
      例:yourdomain.com
    </td>
    
    <td>
      http://www.example.com/oauth2callback
    </td>
    
    <td>
      Web basedを選びます
    </td>
    
    クライアント名
    クライアントのドメイン
    認証済みのリダイレクトURI
    Client Type

    これで、作成をクリックします。
    そうすると、クライアントIDと、クライアントシークレットが表示されます。

    STEP.2 PHPプログラムの設定

    zohooauthというDBを作成し、更に以下のようにテーブルを作成します

    CREATE TABLE `oauthtokens` (
      `useridentifier` varchar(100) COLLATE utf8mb4_bin NOT NULL,
      `accesstoken`    varchar(100) COLLATE utf8mb4_bin NOT NULL,
      `refreshtoken`   varchar(100) COLLATE utf8mb4_bin NOT NULL,
      `expirytime`     bigint(20)                       NOT NULL
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin;
    

    vendor\zohocrm\php-sdk\src\resources\oauth_configuration.properties に以下の内容を記述

    Nov 8, 2018
    技術関連

    CPIサーバーで外部サーバーとの間でscpやrsyncする方法

    KDDIが提供しているレンタルサーバーCPIのACE01。
    これまでずっと、scpやrsyncは出来ないと思っておりましたが、このサイトのこのページ

    CPI のレンタルサーバで SCP を使う方法 - メモ用紙
    <div class="blogcard-snippet external-blogcard-snippet">
      CPI のレンタルサーバのプランのひとつ「共用レンタルサーバー ACE01」では SSH は使用できるが、SCP は使用できない。 共用レンタルサーバー ACE01 - CPI SSH でログインして scp コマンドを実行してみると、どう...
    </div>
    

    これを見たら、やらない理由がありません。
    さっそく、別のFreeBSDが稼働しているサーバーから、バイナリーをそのまま持ってきてみます。
    いくつか試してみましたが、依存関係があるため、当然うまく動かないものもあります。

    まずは、rsync。こちらは、FreeBSD9系のものをもってくることで、外から中へはうまく動かすことができました。
    つまり、外部サーバーでrsyncを動かせば、接続できました。
    ただし、内から外へのrsyncを動かそうとすると、

    Undefined symbol “compat20” referenced from COPY relocation in ….

    Oct 5, 2018
    技術関連

    windowsでdockerを使った開発環境を作る方法

    プログラム開発というとdockerという雰囲気の中、未だにvagrantを使っていることがちょっとイケてる感を出しにくく感じさせられております。そんな中、遅れを取り戻すべく、使おうと決意したものの、およそ記載されている情報はmac向けのものがほとんどだったりします。

    Docker for windowsといった最近リリースされたものもあるのですが、こちらはwindowsの標準的な仮想化環境としてHyper-Vを使っており、とても良さそうなのですが、一点だけVirtualBoxといったサードパーティー製の仮想化ソフトウェアとは共存できないという難点が…。
    やはりいろいろなOSの設定なども全くやらなくなると上手くないでしょうし、Home EditionのPCを持っている方に共有出来ないやり方もどうか、と感じられて結局DockerToolboxを使うべきだと決意して取り掛かった次第。ところが簡単にはいかず苦労しました…。

    ということでまとめておきます。

    Docker Toolboxのインストール

    これは手順どおりに進めれば特に問題となるケースはないかと思われます。

    Deprecated products and features
    <div class="blogcard-snippet external-blogcard-snippet">
      Explore deprecated and retired Docker features, products, and open source projects, including details on transitioned to...
    </div>
    

    こちらから、ダウンロードしてインストールします。予めvirtualboxをインストールしていなければ、チェックをすることで両方インストールできます。
    もしかしたら、Docker Toolboxは、Docker for windowsに統合されるのでしょうか???

    Oct 5, 2018
    技術関連

    チームで使えるタスク管理ソフト決定版!

    Oct 2, 2018
    ライフハック技術関連

    wordpressに設置したお問い合わせフォームでエラー発生

    たびたびwordpressを使ってサイト構築のお世話になっております。
    ただレンタルサーバーによっては、contact-form-7がうまく動いてくれないこともあります。

    今回は、さくらインターネットのレンタルサーバーを利用しておりましたが、フォームに入力しても
    「メッセージの送信に失敗しました。間をおいてもう一度お試しいただくか、別の手段で管理者にお問い合わせ下さい」とエラーがおきてしまいます。

    さんざん調べてみた結果、WEBサーバーとは別のメールサーバーを利用しているために、メール送信ができないという現象でした。
    つまりMXレコードを別サーバーに向けていたとしても、WEBサーバー内にDomainが向いているためサーバー内のメールサーバーに送ってしまうという原因でした。
    PHPのmail()関数を使っているんでしょう。

    いろいろな回避策がありましたが、結果的に汎用性があって良さそうに感じたのは以下のプラグインを利用して直接メールサーバーに転送するもの。
    今回は、sendGridというメール送信のAPIを利用する形をとってみました。12000通までは無料で使えます。

    SendGrid
    <div class="blogcard-snippet external-blogcard-snippet">
      NO LONGER MAINTAINED. Send emails and upload contacts through SendGrid from your WordPress installation using SMTP or AP...
    </div>
    

    ちなみに、同じようなプラグインでSMTPやGmail、SendGridなど選べるものもありました。
    WP Mail SMTP
    https://ja.wordpress.org/plugins/wp-mail-smtp/
    ところが、試してみると文字化けが発生。ちょっと今は難しいですね。

    Sep 28, 2018
    技術関連

    mPDFで複数言語を使う方法

    PHPでサービスを作っていると日本語だけでなく、韓国語も合わせて使いたい!というケースがあります。
    WEB出力だけなら簡単なのですが、いざPDF出力しようとすると、とたんに□文字(豆腐というらしい)となってしまいます。

    ググってもなかなか出てこず苦戦しましたが、なんとかできましたので、まとめておきます。

    前提条件
    CakePHP3系を利用し、composer.jsonには、以下のように設定します

    "require": {
    "mpdf/mpdf": "^6.1",
    "friendsofcake/cakepdf": "^3.2"
    }

    まずは、設定ファイルに直もしくは、別のconfigファイルを用意してフォントを追加指定します。

    $fontdata = [
    'ipagothic'=> [
    'R' => 'ipag.ttf',
    ],
    'nanumbarungothic' => [
    'R' => 'NanumBarunGothic.ttf',
    ],
    ];
    

    フォントを特定のフォルダに入れて、そのフォルダを_MPDF_SYSTEM_TTFONTSという名前でDefineします

    define('_MPDF_SYSTEM_TTFONTS', "/var/data/fonts/");
    

    あとは、HTMLをどうするか?となりますが、今回はHTMLとして作成し、それをPDFとする形をとりました。
    HTMLのCSSとして以下のように指定します

    body {
    font-family : ipagothic;
    }
    .lang-kr {
    font-family : nanumbarungothic;
    }
    

    HTMLとしては、こんな感じ

    <span class="lang-kr">ハングル文字</span>
    <span>普通文字</span>
    

    これでOK。無事に多国語を対応させることができました。
    よくWEB上には、mpdfの中身を直接弄ったりするような話がありますが、composerを使う以上、よろしくありませんね。

    Aug 16, 2017
    技術関連

    cakephp3 prefixの使い方

    cakephp3.4.11を利用

    CakePHP3を使った開発を久しぶりにしております。
    少し大きめな規模にしたいのでprefixを使った構成にしようと調べたのでメモ

    やりたいこと

    • API用に物理的にも階層を分けてソースコードを展開する
    • API用は複数のバージョンのアプリに対応させる必要があるので、バージョンごとにソースコードを展開する

    つまり
    アクセスは、
    http://example.com/api/v1/… ..
    http://example.com/

    として、物理的には、
    /Controller/Admin/….
    /Controller/Api/V1/….
    /Controller/Api/V2/….
    /Template/Admin/..
    /Template/Api/V1/…
    /Template/Api/V2/…

    こんな感じにしたい

    config/routes.php

    Router::prefix('api', function ($routes) {
        $routes->prefix('v1', function ($routes) {
        |   $routes->connect('/',['controller'=>'Statuses','action'=>'index'], ['routeClass' => 'DashedRoute']);
        |   $routes->fallbacks(DashedRoute::class);
        });
    });
    

    作成するときは、

    $ bin/cake bake all controller名 prefix=api/v1
    

    こんな感じです

    Aug 2, 2017
    技術関連

    Raspberry PI3

    少しコンピュータそのものについて学ぶ機会を持つ?ことができればと思い、ラズベリーパイを用意してみました。

    Aug 21, 2016
    技術関連

    cakePHP3開発環境を作る

    cakePHP3でWEBサイト開発をしよう!とするとまずは自分のところに開発環境をつくるところから始めないといけません。通常、windows環境で作るケースも多いのかもしれませんが、WEB以外の処理などを考えるといろいろと難しいことも多いためLinux環境での開発がおすすめです。windowsのPCからは、vagrantで仮想環境を自分のPCに作ってしまうのが便利だと思いますので、今回はその辺のことをまとめていきます。

    Dec 3, 2015
    技術関連

    引っ越し後ルーターが機能しなくて焦ったこと

    10 - 1

    先日のクリスマスイブの一日を使って、無事に引っ越しをすることができました。
    これまでBフレッツの光回線でネットを利用しておりましたが、引越し先では、イッツコムのケーブルテレビを利用したインターネット環境に。

    ところが、繋げても一向に繫がる気配ナシ。。。

    一生懸命に無線ルーターの設定を変更してみるものの万事休す。

    ルーターの情報をみてみたところ、
    <br /> 使用中のIPプロトコル : Dynamic IP disconnect<br /> IPアドレス :<br />

    え、IP振られてないの?
    ということで、確認したページが以下

    Dec 28, 2014
    技術関連

    『レガシーコード改善ガイド』「レガシー」という何とも言い難い言葉の響き….

    photo

    「レガシー」という何とも言い難い言葉の響き。
    何度となく、悩まされ、苦しんだ経験を思い出させる。

    改めて、ここでは、テストのないソースコードをレガシーと呼ぶと定義されています。

    自分が書いたソースコードも、テストがないものは、他の誰かが見た時は、レガシーと判断するだろうなぁと、
    とっても納得できます。

    レガシーコードは、まずテストを作成する。
    そうすれば、リファクタリングも安心してできます。

    と納得感あります。
    ちょっと古い本ではありますが、きっといつまでも通じる話しです。

    [amazonjs asin=”4798116831″ locale=”JP” title=”レガシーコード改善ガイド (Object Oriented SELECTION)”]

    Jan 16, 2014
    技術関連

    vimを使ってソースコードを簡単に美しく整形する方法!!大公開!!

    テキスト編集をするのには、テキストエディタが必要です。
    どれを使ってどれだけ便利に使うか?これが大事ですね!

    さて、vimというテキストエディタには、Alignというプラグインがあります
    これを使うことで、とっても便利にテキスト編集ができます。
    CakePHPで、例えばFixtureをBakeすると

    var $fields = array(
        'id' => array('type' => 'integer', 'null' => false, 'default' => NULL, 'key' => 'primary'),
        'name' => array('type' => 'string', 'null' => true, 'default' => NULL),
        'a2' => array('type' => 'string', 'null' => false, 'default' => NULL, 'length' => 2),
        'a3' => array('type' => 'string', 'null' => false, 'default' => NULL, 'length' => 3),
        'indexes' => array('PRIMARY' => array('column' => 'id', 'unique' => 1))
        );
    

    こんな感じなソースになります。正直見にくいし、ちょっと見たくないソースコードですよね。
    これをチマチマ直すのは、良いのですが面倒です。そこでおもむろに、必要な箇所を選択して、
    :Align =>
    とすると

    Jul 20, 2013
    技術関連

    CakePHP 1 to 2 Migration tips 100

    『CakePHP1 to 2 Migration tips 100』
    まだまだCakePHP1.2系で動かしている仕組みがありますから、こういうまとまった情報はありがたいです。

    Feb 18, 2013
    技術関連

    「CakePHP2実践入門」買いました

    20121022-195216.jpg
    ついに手に入れました。
    勉強しましょう!

    Oct 22, 2012
    技術関連

    cacheQueriesでハマった

    cakePHPでは、クエリーをキャッシュさせないために、普通は
    $Model->cacheQueries = false;
    

    とする
    ところが、$Model->query()を使う場合は、どうもうまくいかない。。。。
    ということを突き止めた。これだけに30分程度はゆうに悩んだ。

    で、よくよく見ると
    http://book.cakephp.org/1.2/ja/view/456/query

    query() は、モデルの呼び出しとは本質的に分離した機能で、 $Model->cachequeries の状態に従いません。query を呼び出すにあたりキャッシングを無効にするには、query($query, $cachequeries = false) というように第2引数に false を設定します。

    と書いてありました。

    パラメータを渡す場合は、
    query($query, $params, $cachequeries = false)
    でいいみたい。

    Aug 20, 2012
    技術関連

    cakephp2を携帯で使う

    携帯サイト向けのページをcakephp2.1.3にて表現しようとして、しばらく躓いていたのでメモ。

    class A.....Controller extends Controller{
      function beforefilter(){
         $this->Auth->allow('m_index','m_index2','m_confirm','m_register','m_history');
         $this->Security->requireAuth('m_index2','m_confirm','m_register');
         $this->Security->disabledFields=array('.....');
         if ($this->_isdocomo()){
           Configure::write('Session', array(
           'defaults' => 'cake',
           'ini' => array(
             'session.use_cookies'     =>0,
             'session.use_only_cookies'=>0,
             'session.use_trans_sid'   =>1,
             'url_rewriter.tags'=>"a=href,area=href,frame=src,input=src,form=,fieldset=",
           )));
         }
         $sid = $this->Session->id();
         if(empty($sid)){
           CakeSession::start();
         }
         parent::beforeFilter();
       }
    

    こんな感じで、beforeFilterでやれば、それでいけました。

    'url_rewriter.tags'=>"a=href,area=href,frame=src,input=src,form=,fieldset=",
    

    よく見れば、書いてあったのですが、ここは気づきませんでした。。。。
    大変な回り道をしてコードがぐたぐたになった挙句に見つかるものです。。。

    Jul 13, 2012
    技術関連

    vim編集中にphpのマニュアルを表示する

    とっても便利!
    WEBや、chmファイルがあれば、ヘルプを読むことは簡単なんですが、それでも、vimで編集中にすぐにヘルプを表示するのにはかないません。
    ということで、インストールしてみました。
    大きくは3つのファイルを取得します。
    (1)まずは、プラグイン本体
    https://github.com/thinca/vim-ref
    からファイルを取得します。
    (2)続いて、PHPのヘルプ
    http://jp2.php.net/download-docs.php から、Many HTML Filesをダウンロードして、適当な場所に展開します。
    <br /> cd /path/to/<br /> tar xvzf ....<br />
    (3)最後に、テキストブラウザが必要なため、
    <br /> sudo aptitude install w3m<br />
    .vimrcに少しだけ記載します。
    <br /> let g:ref_phpmanual_path = '/path/to/php-chunked-xhtml/'<br />

    Jun 3, 2012
    技術関連

    tmuxを使い複数ペインで作業効率をUPする

    最近、ちらほらと目にするtmuxです。screenよりメモリの使い方が賢いらしいので使ってみることにしました。
    導入は簡単です

    # aptitude install tmux
    

    実行も

    $ tmux 
    

    これだけ。
    迷ったときは、[CTRL+B]のあと、[?]で説明が出てくる。
    楽ちんです。

    一応、お決まりですが
    ウィンドウを作成する[C+b][c]
    次のウィンドウへ移動[C+b][n]
    前のウィンドウへ移動[C+b][p]
    ペインを分割する[C+b][“]
    ペインの分割を変更する[c+b][space]
    ペインを広げる[c+b][Esc+↑]とか[c+b][Esc+↓]とか[c+b][Esc+→]とか[c+b][Esc+←]
    ペインを移動する[C+b][↑]とか[C+b][↓]
    ペインの分割を解除する[C+b][!]
    やめる時(デタッチ)[C+b][d]
    再開する時 tmux attach

    たぶん、これだけ分かれば十分かと。

    Mar 26, 2012
    技術関連

    colinuxで快適!開発環境を手に入れる

    ながらくwindows7上にて、colinuxを動かしてubuntu9.04にて開発環境を用意していましたが、さすがにパッケージも古くなり、新しいパッケージもなくなり、ちょっときつくなってきたため、colinuxで比較的新しいdebian squeezeを手にいれることにしました。
    以下は、そのまとめ。参考になれば幸いです。

    まずは、colinuxを入手する

    Cooperative Linux - Browse Files at SourceForge.net

    Run Linux on Windows or other OSes, natively.

    から、colinux-stable とImages 2.6.x Debianの中から、Debian 6.0 Squeezeをダウンロードします。
    c:\usr\colinuxに配置します
    debianのイメージは、7zという拡張子がついています。これは圧縮ファイル。解凍すると2Gのファイルになります。

    続いて、squeeze.confファイルの編集。
    ファイル名は別になんでも良いのですが、そのまま利用。以下のように編集します。

    kernel=vmlinux
    cobd0="C:\usr\colinux\debian_squeeze\rootfs_2gb.img"
    cobd1="C:\usr\colinux\debian_squeeze\swap_128mb.img"
    root=/dev/cobd0
    ro
    initrd=initrd.gz
    mem=512
    eth0=tuntap
    

    これでOK。eth0の設定あたりでつまずくかもしれません。

    とりあえず起動します。これも、squeeze.batをダブルクリックするだけ。以前と比べてとてもラクですね!
    まずは、ネットワークまわりを設定します

    # vi /etc/network/interfaces
    

    以下のように編集します

    auto
    iface eth0 inet static lo eth0
      address 192.168.0.2
      gateway 192.168.0.1
      netmask 255.255.255.0
    iface lo inet loopback
    

    続いて

    Mar 21, 2012
    技術関連

    ubuntuのパッケージ管理

    なかなか、うまくgitがインストールできなくて、結局パッケージをさがすことに。
    さすがは、ubuntu!ありますね。
    https://launchpad.net/~smartlounge/+archive/

    Nov 17, 2011
    技術関連

    vimで置換するときに改行を入れる方法です

    普段、テキストエディタとしてgvimを使っていますが、1行になったものを置換して、改行を入れたいことがあります。
    これまで、どうやって入れるのかわからずにいたのですが、いい加減に調べました。
    :%s/置換される言葉/置換する言葉^M/g
    です。
    ちなみに、^M:はctrl+v,ctrl+mです。

    Feb 4, 2011
    技術関連

    テキストエリアの編集性を格段に向上させるプラグイン

    久しぶりの更新です。
    さて、最近、Firefoxで感動したアドオンがあり紹介したいと思います。

    It’s All Text!
    https://addons.mozilla.org/ja/firefox/addon/its-all-text/


    これは、WEBサイトのテキストエリアの編集を行う際に、テキストエディタを使って編集できるようにするものです。
    インストールした後、テキストエリアの右下に、編集ボタンが表示されるようになります。
    それをクリックすると、普段使っているテキストエディタが起動されます。

    通常、これをやるには、一度保存してあれこれ、と手順が必要でしたが、これなら一発です。
    しかも、よく入力中に、ついページ遷移させてしまったりして、時間をかけて編集していた内容が飛んでしまう!ということもありません。

    テキストエリア自体の性能を向上させるというより、そもそもテキスト編集専用のプログラムに手渡しをする、という発想がなによりも感動しました。

    ぜひお試し下さい。

    ちなみに、FCK Editorなどが組み込まれているtextareaで、ソース表示をしたものに対して編集すると、

    <img src=”chrome://itsalltext/locale/gumdrop.png” title=”It’s All Text!” style=”cursor: pointer ! important; display: none ! important; position: absolute ! important; padding: 0pt ! important; margin: 0pt ! important; border: medium none ! important; width: 28px ! important; height: 14px ! important; opacity: 0.0152174 ! important; left: 165px ! important; top: 857px ! important;” alt=”” />

    Jan 18, 2011
    技術関連

    csvの編集に使うエディタは?

    今更かもしれませんが、CSVファイルの編集に適したエディタって何でしょう?

    Excel
    一番楽かもしれませんが、Excel自体の起動時間コストがかかることと、保存すると何か付加価値を押し付けられそうな予感もあって、少し怖さもあります。

    cassava
    http://www.asukaze.net/soft/cassava/

    現実的には一番いいかも。フリーソフトで公開されています。

    vim
    vimを常用している私の個人的な意見としては、
    http://vim-users.jp/2009/09/hack78/
    これで、以下のようにありのまま編集できます。便利です

    :Csvhl 1  (数字はカラム番号(左から0,1,2と数える)
    

    本当は、その部分だけを別ウインドウで、それぞれのfiletypeにて編集できるとさらにいいんですけれどね。
    ついでに、引用符がついているCSVなどをうまく認識してもらえると良いんですけれど。

    Mar 9, 2010
    技術関連

    XREAにmercurialをインストールして利用する方法

    いろいろとやりたくなってmercurialをインストールしてみました

    まずは、
    http://www.selenic.com/mercurial/release/
    から、最新のバージョンを確認してダウンロードします。

    Jan 8, 2010
    技術関連

    coreserverのSSH登録を自動化するスクリプト

    coreserverのSSH登録を自動化するスクリプトを作ろうかと思っていたのですが、
    まてよ、必ずだれかやっているはず。。。と思いググとすぐに出てきました。
    さすがです。
    http://d.hatena.ne.jp/int128/20090113/1231850343
    使わせてもらいました。
    ありがとうございます。

    Nov 12, 2009
    技術関連

    vim:snippetsEmuが動かずに苦労したこと

    ひさしぶりに、windowsでの開発に取り組みました。
    で、やっぱりvimをインストールして、snippetsEmuのプラグインをインストールしていざ、使おうとしても動かずに。。。。

    あきらめきれずに、いろいろとやってみましたが、どうしても難しくてあきらめかけていたところ、そもそも、ファイルの置き場所がまずいのか?という点に気づいていろいろとやってみると、
    runtime\after\ftplugin
    にはいるべきものを
    runtime\ftplugin
    に移動すると見事に動きました。

    これで、forとかタイプしてTabキーだけで、自動的に補完されます。
    とっても便利です。

    一応、覚書として
    http://www.vim.org/scripts/script.php?script_id=1318
    から以下のファイルを取得する
    snippy_plugin.vba
    snippy_bundles.vba
    それぞれ、vim上で開いて、
    <br /> :source %<br />
    これで処理、展開されます。
    あらかじめ、 ~/.vim/after/ftplugin/ フォルダを作っておくとよいかも

    さらに、以下を.vimrcで設定しておくと便利です
    <br /> filetype plugin on<br /> " CTRL + Bで設定<br /> let g:snipetsEmu_key="<c-B>"<br />

    May 29, 2009
    技術関連

    google スプレッドシートの活用方法

    仕事柄、あるサイトのリンクを調べたりしますけれど、
    googleのスプレッドシートで、

    =ImportXML("no1s.biz","//a/@href")
    

    と入力するだけで、リンクをたどることができます。
    意外にも結構便利ですね。

    参考元:

    外部データ取り込み機能が意外と楽しいGoogleスプレッドシート

    ぶっちゃけ営業上がりのWEB担当者である私にとって、プログラム言語などよりエクセル関数のほうが全然親しみやすいというものw だから関数のようなものでおもしろいことが実現できるとかなり楽しいのです。 と

    Apr 17, 2009
    ライフハック技術関連

    poderosaでパスワードなしで自動ログイン

    http://www.lovy-studio.com/blog/?p=31
    によると、

    1. ツール⇒詳細プリファレンスエディタから
      org.poderosaprotocols.readSerializedPassword をTrueにする
    2. 作成したショートカットをテキストエディタで開く
    3. account= なんちゃら の後ろに passphrase=”XXXXXX” という形でパスワードを記述して保存。

    でいける。最近うまくいかないなぁと漠然と思っていましたが、知らないだけでした。

    Feb 4, 2009
    技術関連

    等幅フォントでGmailを読みやすくする方法

    GoogleAppsやら、普通にGmailを使ったりと、いろいろと使う機会が増えていますが、
    その分、いろいろと使いにくさもあって、悩んだりするとやっぱり同じことで悩んで解決してくださっている方がいらっしゃいます。

    さて、そんな便利なGmailで一番気になる嫌なところが「メールが等幅フォントで表示されない」事です。
    ほとんどのメーラーではデフォルトフォントが等幅フォントなので、署名や見出しなどを色々凝ったつくりにしている場合がありますが、Gmailでは全くの台無しです。

    GreaseMonkeyでの対応方法

    なるべく拡張は使わないようにしているんですが、Greasemonkeyを入れている人は導入が簡単だと思うので、user.js作ってみました。
    下記からどうぞ。

    ということで、
    GreaseMonkeyをインストールして、
    http://creazy.net/2008/07/gmail_monospace_font.html
    こちらのスクリプトを読み込めば完了です。
    とっても便利になります。

    Jan 13, 2009
    技術関連

    Google appsのドメインでのチャットをPidginでやる方法

    Pidgin拡張設定画面

    Pidgin拡張設定画面

    通常のGoogleのアドレスと共に、会社で利用しているドメイン(google apps)を両方活かした状態で、使いたい!ということで、探した結果、Pidginだったのですが、以前は使えたものの、最近エラーで使えませんでした。
    ようやく、設定の方法が分かり、快適に使えるようになりましたので、メモしておきます。
    画面参照!という感じですが、アカウントの編集の拡張タブで、サーバーをtalk.google.comにすること。これが重要です。
    あとは、適当にできるかと思います。
    これだけ。

    Dec 11, 2008
    技術関連

    VimExplorer結構使えます

    いわゆるwindowsのExplorerのようなものです。
    ファイル作成、ディレクトリ作成、リネームなどもできます。
    vtreeexplorer.vimとどちらが使いやすいか?
    という話もあるかもしれませんが、VIM7で、タブ機能が使えるようになった以上、こちらは、かなりポイント高いかも。

    VimExplorer – VE – the File Manager within Vim : vim online

    使い方:

    • +f:新規作成
    • +d:新規作成
    • e:編集
    • R:リネーム
    • gt, gT:タブの移動(CTRL+Tabで移動できるようにマップしておくといいかも)
    Dec 11, 2008
    技術関連

    keisen.vimという罫線が描けるvimプラグインです

    文章を打ち込んでいて、テキストの罫線を入れたくなるときに便利です。
    keisen.vim(UNIX / 文書作成)

    Dec 10, 2008
    技術関連

    wordpressのプラグインの自動インストール

    XREAサーバーを利用してWordpressを運用していますが、プラグインが管理画面からアップデートできるようになっていたので、すかさずリンクを押すも、セーフモードの制限があってうまくいかないため、.htaccessで対応。無事にできるようになりました。
    以下の内容を.htaccessファイルに書いて、wp-adminのフォルダーに入れればOKです。

    Oct 2, 2008
    技術関連

    xreaサーバーにsymfonyをインストールする方法

    いろんなところで、同じタイトルで出ていますが、うまくいかないものであったり、疑問があったりしましたので、整理してみました。私なりのやり方です。

    Sep 1, 2008
    技術関連

    syckをインストール。あれっ!

    symfonyでは、ymlを使いまくるため、syckをインストールすると早いらしい。と早速インストールしてみると

    $ sudo pecl install syck
    ``
    
    でエラーがでたので、気を取り直して
    
    ```bash
    $ sudo aptitude install re2c
    $ sudo pecl install syck
    

    これも駄目。
    おかしいなあと思いつつ、

    $ sudo aptitude search syck
    

    とすると正解が。
    なんと

    $ sudo aptitude install php5-syck
    

    でした。

    Jul 23, 2008
    技術関連

    coLinuxをインストールする

    windowsで開発、linuxで運用、でもクライアントはwindowsというLAMPなシステム開発を行っている方も多くいらっしゃると思っております。
    そんな方へ。
    自分のPCだけで、開発、デバックが実際の環境と限りなく同じくできるものがあるとすれば、使ってみる価値があるのではないでしょうか?

    さて、実際には、
    http://scratchpad.fc2web.com/colinux/install-0.7/
    を参考にインストールさせてもらっています。ここでは、それをベースに、今からやるには、こうしたら便利というものを記載してみます。
    その1
    cygwinは、個人的には使わないので、colinuxをインストールするために入れるのは、面倒というか、邪魔かなと思っています。もっともそれ以外で使う目的があれば、別に問題ないかと思います。
    高速ダミーファイル作成ツール makedummyも不要です。今は、windowsXPとかを皆さんお使いですので。
    ダウンロードするのは、
    coLinux-0.7.3.exe
    Ubuntu-7.10.ext3.2GB.7z
    です。
    あとは、7z形式を解凍できる解凍ソフト(フリーであります)
    その2
    swapファイルは、以下のように作成します。
    512Mのswapファイルの場合は
    C:\> fsutil file createnew swap.img 536870912
    これでOKです。
    その3
    上で、swapについては展開済みなので、OKです。7z形式を解凍するには、
    http://www.7-zip.org/ から、ファイルをダウンロードして解凍できます。
    cygwinやmakedummy.exeは不要です。
    その4
    そのままでいけます。
    その5
    4つのやり方が掲載されていますが、そこに書いてあるとおり、
    coLinux(0.7.x)のインストール [TAP-Win32でのNAT接続]
    がお薦めです。
    安定性と設定のしやすさなど、多少の犠牲はあるけれど、自分でコーディング、テストするには十分です。
    ubuntuでは少しファイル名が違う部分があります。

    # cd /etc/network
    # editor interfaces
    

    となります。
    その6
    そのままでいけます。
    ただ、ubuntuでやる場合は、多少違います。ディストリビューションが違うのでそれは、仕方ありません。

    Jul 3, 2008
    技術関連

    再びvimまとめ(プラグイン)

    vimをメインで利用する上で、便利プラグインの説明です。
    しかも、これで面白いのは、windowsでもlinuxでもいけるものがほとんどだということです。

    • php-doc.vim
    • vtreeexplorer.vim
    • snippetsEmu.vim

    。。。説明はのちほど。

    Jul 3, 2008
    技術関連

    再びvimまとめ(設定編)

    vimも.vimrcの設定次第でかなり使いやすいものとなります。
    (windows版の場合は、_vimrcを追加・編集すればOkです)
    以下は私がやっている例です。
    肝となる部分だけ解説です。

    シンタックス表示

    syntax enable
    

    行番号表示

    set number
    

    タブをソフトタブで、実施する

    set tabstop=2 softtabstop=2 shiftwidth=2
    

    記号文字の表示がおかしくならないように

    set ambiwidth=double
    

    バックアップファイルを作らない

    set nobackup
    

    など、

    syntax enable
    set modeline
    set number
    set tabstop=2 softtabstop=2 shiftwidth=2
    set foldmethod=marker
    set laststatus=2
    " 記号文字の表示がおかしくならないように
    set ambiwidth=double
    filetype on
    filetype indent on
    filetype plugin on
    colorscheme ron
    set nobackup
    set enc=utf-8set fileencodings=iso-2022-jp,sjis,euc-jp,utf-8
    autocmd FileType php  :set omnifunc=phpcomplete#CompletePHP
    autocmd FileType html,javascript :set omnifunc=javascriptcomplete#CompleteJSautocmd Filetype *
            \   if &omnifunc == "" |
            \       setlocal omnifunc=syntaxcomplete#Complete |
            \   endif
    "-----------------------------------------------------------------------------"
    source ~/.vim/vtreeexplorer.vim
    let g:treeExplVertical=1
    let g:treeExplWinSize=30
    "
    source ~/.vim/php-doc.vim
    inoremap <c-P> <esc>:call PhpDocSingle()<cr>i
    nnoremap <c-P> :call PhpDocSingle()<cr>
    vnoremap <c-P> :call PhpDocRange()<cr>
    source ~/.vim/php-doc.vim
    inoremap <c-P> <esc>:call PhpDocSingle()<cr>i
    nnoremap <c-P> :call PhpDocSingle()<cr>
    vnoremap <c-P> :call PhpDocRange()<cr>
    let g:pdv_cfg_Author   = "HASHIMOTO <hashimoto at vone dot jp>"
    let g:pdv_cfg_Copyright= "xxxxx INC.2008 All rights reservied."
    " phpファイルの場合 下矢印で文法チェックをする
    autocmd FileType php :map <down> <esc>:!clear<cr>:!php -l %<cr>
    autocmd FileType php :map <c-E> <esc>:!php %<cr>
    "autocmd FileType php :set tabstop=4 softtabstop=4 shiftwidth=4
    
    map <f12> <esc>:!php /home/hashimoto/tools/ftp.php %:p 1<cr>
    
    map! =vimh // vim: set expandtab tabstop=2 softtabstop=2 shiftwidth=2 enc=utf8 :
    map <left> <esc>:bp<cr>
    map <right> <esc>:bn<cr>
    map <up> <esc>:ls<cr>
    
    "
    function InsertTabWrapper()
        if pumvisible()
            return "\<c-n>"
        endif
        let col = col('.') - 1
        if !col || getline('.')[col - 1] !~ '\k\|<\|/'
            return "\<tab>"
        elseif exists('&omnifunc') && &omnifunc == ''
            return "\<c-n>"
        else
            return "\<c-x>\<c-o>"
        endif
    endfunction
    
    Jul 3, 2008
    技術関連

    再びvimまとめ(デフォルト機能)

    • 入力モード a
    • 入力モード(挿入)i
    • 閲覧モード**ESCキー**
    • 保存**:w**
    • コピー y
    • ペースト p
    • アンドゥ u
    • 置換 s
    Jul 2, 2008
    技術関連

    windowsでバックグラウンド処理

    phpでバッチ処理などをする場合で、バックグラウンド処理を行いたい場合で、
    確か以前は、

    Jul 1, 2008
    技術関連