なぜGmailはPOP受信を拒むのか?
2026年現在、私たちのビジネスインフラは大きな転換点を迎えています。長年、電子メールの標準として親しまれてきた「POP受信」が、Googleをはじめとする主要プラットフォーマーによって事実上の「終焉」へと導かれています。
2026年現在、私たちのビジネスインフラは大きな転換点を迎えています。長年、電子メールの標準として親しまれてきた「POP受信」が、Googleをはじめとする主要プラットフォーマーによって事実上の「終焉」へと導かれています。
ここではhugoのマークダウン記法を確認していきます。
バックスラッシュでコードを記載することで対応してもらえる
function myhugodemo(int $a, text $b, array $c):void {
print $a;
print $b;
print $c;
}
最近はパスワード付きのZipファイル作成を行うこと自体が無くなってきましたが、今日はそんな相談を頂いて、普通にWindowsから右クリックして…と伝えようとしたら、すぐに出て来なくて困りました。
ここではhugoのテーマの一つ一つがどう動いているのか?確認していきたいと思います。
ffmpegは動画から音声だけを取り除く だけでなく、svgファイルをpngに変換もできます
いろんな可能性を見出して機能を追加して、詳細まで分かりやすく… するととんでもなく使えない画面デザインが完成するという悲劇。 使われないシステムはこうして作られる…
長い間、wordpressを用いてブログを運用していました。といっても思いつきで書いて、しばらく放置を繰り返しておりました。 しかしセキュリティの脆弱性が見つかったり、そもそも管理画面の乗っ取りなど不安を感じておりました。
今回、思い立ったようにhugoという仕組みに乗り換えてみました。 エンジニアな人でないとちょっと扱いが難しいかもしれません。
自分のパソコンで記事を作成、コミット、プッシュすると自動的にサイトも更新されるという仕組みです。 静的ページなので表示も早く、しかも安全です。
Web開発の世界では、npmやYarnが長らくパッケージマネージャーのデファクトスタンダードとして君臨してきました。しかし近年、「第3の選択肢」としてpnpmが急速に存在感を増しています。
また新しいツールか…」と感じるかもしれません。しかし、pnpmは単なる代替品ではなく、node_modulesが抱える根本的な問題にアプローチし、ディスク効率、インストール速度、依存関係の堅牢性において、他のツールを凌駕する可能性を秘めています。
この記事では、pnpmがなぜこれほどまでに注目されているのか、その核心的な仕組みから、npm、Yarn、そして超新星Bunとの比較まで、約2000字で徹底的に解説します。あなたの開発体験を次のレベルへ引き上げるヒントが、きっとここにあるはずです。
pnpmの魔法の根源は、そのユニークなnode_modulesの管理方法にあります。npmやYarn Classicがプロジェクトごとにパッケージのコピーを作成するのに対し、pnpmは全く異なるアプローチを取ります。
node_modules内に作成します。この仕組みにより、pnpmは他のパッケージマネージャーにはない、3つの大きなメリットを提供します。
複数のプロジェクトで同じバージョンのReactやLodashを使っていても、ディスク上に物理的に存在するファイルは1つだけです。プロジェクトが増えれば増えるほど、その節約効果は絶大になります。ローカル環境のストレージを圧迫しがちなnode_modules問題から、私たちを解放してくれます。
2回目以降のインストールでは、pnpmはグローバルストアに必要なパッケージが既に存在するかをチェックします。もし存在すれば、ネットワークからダウンロードする必要はなく、ディスク上のリンクを作成するだけで済みます。これにより、特にキャッシュが効いている状態でのインストールは、npmやYarnを大幅に上回る速度を発揮します。
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利用時に注意 | 発展途上 |
npm はNode.jsの公式パッケージマネージャーであり、そのエコシステムと安定性は他の追随を許しません。しかし、pnpmと比較すると、ディスク効率とインストール速度、そして依存関係の厳格さで見劣りします。特に幽霊依存の問題は、npmが抱える構造的な課題です。pnpmは、npmの使い慣れたコマンド体系(pnpm install は npm install と同じように機能します)を維持しつつ、これらの問題をアーキテクチャレベルで解決しています。
ファイルサーバーのディレクトリーは定期的に検証して使いやすくする必要があってコマンド整理
フォルダのみ・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
インストール
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
[!tip] 結論: 録画はMKVで保存し、必要に応じてOBSの「リマックス機能」でMP4に変換するのがおすすめ!
MKV に設定LinuxでMKVから音声のみを取り出す場合、ffmpegコマンドを利用します。
ffmpeg -i input.mkv -vn -acodec copy output.aac
ffmpeg -i input.mkv -vn -acodec libmp3lame output.mp3
-vn : 映像を無視-acodec copy : 音声を変換せずコピーlibmp3lame : MP3エンコーダー[!note] 複数の音声トラックがある場合は、専用ツール
mkvextractを使う方法もあります。
Windows11において初期アカウント作成の際にマイクロソフトアカウントの作成を求められます。
これを回避してローカルアカウントを作成する方法を記載いたします。
するとローカルアカウントに必要な情報(ユーザー名、パスワード等)を求められるので入力します。
これでローカルアカウントを作成することができます。
以上でOSの初期設定完了です
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
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>
他にもいろいろとあるけれど、よく使うのはこんなあたり。
本番環境とは別のところでいろいろと試すために、ローカル環境を用意。
いつもは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ファイルを移動
久しぶりに焦った経験。
通常、エクセルでは名前だとか、住所とか入力して、別のセルに =PHONETIC(参照セル) とすると、ふりがなが自動的に入ります。今回、これが漢字のまま表示されてしまいました。
久しぶりに、未知のバグを発見した喜び!かと思いつつも、まさかそんなはずはないだろうと、色々と調べると、なんとコピペした場合はこれが使えないようです。
数件なら手で入力すればOKですが、今回は600行程度あります。これは無理ですね。ということで、プログラムで対処しました。
まず、エクセルの上のメニューに「開発」がない場合は、予め、「ファイル」⇒「オプション」⇒「リボンのユーザー設定」とクリックして、「開発」というところのチェックを入れます。
続いて、プログラムを入力します。メニューの「開発」をクリックすると、「VisualBasic」というのが出てきますので、こちらをクリックして、以下のように入力します。
Sub setFurigana()
Selection.SetPhonetic
End Sub続いて、ふりがなを得たかった漢字が書かれている部分を全体的に選択して、開発メニューから、マクロをクリック。すると、先程作成した、setFuriganaというのが出てきますので、これをクリックします。
もうこれで、出来たも同然。手で入力した状態になりました。
あとは、=PHONETIC(参照セル) とすればフリガナが表示されます。お疲れ様でした。
休みといえども中々ゆっくりすることが難しかったのですが、本日久しぶりに、ゆっくりできる日を得て、windowsマシンに切り替えてからAtcoder環境を整えることができたのでまとめておきます。
phpもどうなんだろうと思いつつもwordpressなど抜けられないとこも多い。そこでローカルにはphpenvを入れてバージョンを管理してみる
先日より、macからwindowsにベースを移行しています。
まずは、昔から引きずっているサイトなどをローカル環境で動かせるようにしてみたいと思います。
新しいマシン自体のトラブルもあって、購入していきなりOSごとインストールし直すという中々スリリングな体験中。しっかりとしたメーカーだから変なことはないのでしょうが、いろいろ起きますね
これはそれほど、難しい話ではなく、コンソールを開いて以下のように入力
wsl --install
普通にやると、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をつけてインストールのシュミレーション
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);
})
こんな感じでできるようです。便利!
先日、KSP(かながわサイエンスパーク)西棟の2Fに新しく出来たTech-Pot見てきました。
さすがに、綺麗で落ち着いて仕事ができそうです。家の近くにこんな施設があったら絶対利用したくなるようなワクワクするスペースです。これで1ヶ月1万で利用できたら安いですよね。
<div class="blogcard-snippet external-blogcard-snippet">
コワーキングスペース シェアオフィス テレワーク 川崎 溝の口
</div>
さて、この中には、個室も用意されており見せて頂くと、なんと各机に見たこともない太いLANケーブルを発見。よくよく確認するとカテゴリー6Aという10Gまで対応しているケーブルのようです。
ちょっと期待できそうです。
ちなみに、こんな感じのようです。
| 規格 |
| 通信速度(bps) |
| 伝送帯域(Hz) |
今は、ほとんどがwifi利用であんまり、LANケーブルを見ることが少なくなりましたが、やっぱり安定した接続をするならケーブルに越したことはありませんね。
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: [{role: "readWrite", db: "test"}]
... })
Successfully added user: {
"user" : "sato",
"roles" : [
{
"role" : "readWrite",
"db" : "test"
}
]
}
権限を追加してみます
> db.grantRolesToUser("sato", ["userAdmin"])
> db.getUsers()
{
"_id" : "test.sato",
"userId" : UUID("20bb2d33-da13-4e87-bfca-4b7b61f3d84c"),
"user" : "sato",
"db" : "test",
"roles" : [
{
"role" : "readWrite",
"db" : "test"
},
{
"role" : "userAdmin",
"db" : "test"
}
],
"mechanisms" : [
"SCRAM-SHA-1",
"SCRAM-SHA-256"
]
}
]
権限削除します
これまでvimメインでやってきたものの最近のVSC(Visual Studio Code)はとっても便利な環境が整えられており、しかも無料ですから使わない手はありません。
インデントは2文字か、4文字なのか?、改行コードは、LF、CRLF?、文字列はシングルクォートで囲むのか、ダブルクオートで囲むのか?行末のセミコロンは必要か、不要か?など、コーディングスタイルのこだわりなどもあって、これを共通化させるために少々の設定が必要です。以下、設定手順です。
まず、必要となるのは、以下の3点です。順に見ていきましょう
左側の拡張機能ボタンをクリック、eslintを検索し、インストールします。インストールを済ませたら、再読み込み(リロード)を行います。
VSCのコンソールもしくは、別のコンソールからインストールします。
npm install eslint --save-dev
初回ですので、ウィザード形式で設定してみます。コンソールにて
# ./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
このような形で問われてきますので、カーソルキーで上下させて希望の形を選びます。なお間違えても、再度実行するだけですので心配ありません。また作成された設定ファイルは後ほど編集できますので、まずは雛形を作るくらいの気持ちで問題ないかと思われます。
今回、私が設定した内容は以下のようにしてみました。質問? 設定値の順に表示されています
普段はSSLで使うサーバーのみとなりつつありますので、Dockerでの開発環境も今更ながらSSL化させたのでメモ
普段はdockerを使った開発に移行したためwindowsの機能をつかって動かすことはほぼ無くなったのですが、MicrosoftのVisual Studio Codeなどを使っているときに、どうしてもphpが動かせると便利に使えたりすることがあり、windowsマシンに改めて、PHPをインストールしてみました。
基本的には、ダウンロードしてきて解凍するだけなのですが、一部改修したので以下にメモ。
ダウンロード先:
https://windows.php.net/download
ここから、zip版をダウンロードして、c:\php に解凍します
- ;extension=php_mbstring.dll
+ extension=php_mbstring.dll
- ;extension=php_openssl.dll
+ extension=php_openssl.dll
> 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からインストールファイルをダウンロードして実行することでここまでは達成。
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
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]で自動入力されます
会社の受付にタブレットを用いている会社が増えてきました。導入に向けて調べるといろいろと出てきました。
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などを使うと思いますが、ほぼ触らずに大丈夫です
ZOHO CRMのAPIv2があまりに分からずに苦労した話 の続編です
phpにて、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->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分を指定して、上記プログラムにアクセスします
終わり。
ふだん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
これを読んでもわからないことが多く、動かしてみると帰納法的に理解できる点が多数ありました。
順にまとめていきます。
zohoに普通にログインした状態にて、
https://accounts.zoho.com/developerconsole
を表示します
「クライアントIDの追加」というボタンをクリックし、入力します
| クライアント名 |
| クライアントのドメイン |
| 認証済みのリダイレクトURI |
| Client Type |
これで、作成をクリックします。
そうすると、クライアントIDと、クライアントシークレットが表示されます。
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 に以下の内容を記述
KDDIが提供しているレンタルサーバーCPIのACE01。
これまでずっと、scpやrsyncは出来ないと思っておりましたが、このサイトのこのページ
<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 ….
プログラム開発というとdockerという雰囲気の中、未だにvagrantを使っていることがちょっとイケてる感を出しにくく感じさせられております。そんな中、遅れを取り戻すべく、使おうと決意したものの、およそ記載されている情報はmac向けのものがほとんどだったりします。
Docker for windowsといった最近リリースされたものもあるのですが、こちらはwindowsの標準的な仮想化環境としてHyper-Vを使っており、とても良さそうなのですが、一点だけVirtualBoxといったサードパーティー製の仮想化ソフトウェアとは共存できないという難点が…。
やはりいろいろなOSの設定なども全くやらなくなると上手くないでしょうし、Home EditionのPCを持っている方に共有出来ないやり方もどうか、と感じられて結局DockerToolboxを使うべきだと決意して取り掛かった次第。ところが簡単にはいかず苦労しました…。
ということでまとめておきます。
これは手順どおりに進めれば特に問題となるケースはないかと思われます。

<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に統合されるのでしょうか???
たびたびwordpressを使ってサイト構築のお世話になっております。
ただレンタルサーバーによっては、contact-form-7がうまく動いてくれないこともあります。
今回は、さくらインターネットのレンタルサーバーを利用しておりましたが、フォームに入力しても
「メッセージの送信に失敗しました。間をおいてもう一度お試しいただくか、別の手段で管理者にお問い合わせ下さい」とエラーがおきてしまいます。
さんざん調べてみた結果、WEBサーバーとは別のメールサーバーを利用しているために、メール送信ができないという現象でした。
つまりMXレコードを別サーバーに向けていたとしても、WEBサーバー内にDomainが向いているためサーバー内のメールサーバーに送ってしまうという原因でした。
PHPのmail()関数を使っているんでしょう。
いろいろな回避策がありましたが、結果的に汎用性があって良さそうに感じたのは以下のプラグインを利用して直接メールサーバーに転送するもの。
今回は、sendGridというメール送信のAPIを利用する形をとってみました。12000通までは無料で使えます。
<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/
ところが、試してみると文字化けが発生。ちょっと今は難しいですね。
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を使う以上、よろしくありませんね。
cakephp3.4.11を利用
CakePHP3を使った開発を久しぶりにしております。
少し大きめな規模にしたいのでprefixを使った構成にしようと調べたのでメモ
やりたいこと
つまり
アクセスは、
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
こんな感じです
少しコンピュータそのものについて学ぶ機会を持つ?ことができればと思い、ラズベリーパイを用意してみました。
cakePHP3でWEBサイト開発をしよう!とするとまずは自分のところに開発環境をつくるところから始めないといけません。通常、windows環境で作るケースも多いのかもしれませんが、WEB以外の処理などを考えるといろいろと難しいことも多いためLinux環境での開発がおすすめです。windowsのPCからは、vagrantで仮想環境を自分のPCに作ってしまうのが便利だと思いますので、今回はその辺のことをまとめていきます。
先日のクリスマスイブの一日を使って、無事に引っ越しをすることができました。
これまでBフレッツの光回線でネットを利用しておりましたが、引越し先では、イッツコムのケーブルテレビを利用したインターネット環境に。
ところが、繋げても一向に繫がる気配ナシ。。。
一生懸命に無線ルーターの設定を変更してみるものの万事休す。
ルーターの情報をみてみたところ、
<br /> 使用中のIPプロトコル : Dynamic IP disconnect<br /> IPアドレス :<br />
え、IP振られてないの?
ということで、確認したページが以下
<div class="blogcard-snippet external-blogcard-snippet">
J-COMのケーブルTVでインターネット接続している環境下で,無線LANルータを導入し,ノートPCとiPad(とスマホ)でWi-fi接続するまでの過程。接続できない時の対処手順もメモ。 ノートPCはLANケーブル有だったが,今後ワイヤレスで...
</div>
結局は、電源をしばらく抜いてほっておくと解決という話でした。
「レガシー」という何とも言い難い言葉の響き。
何度となく、悩まされ、苦しんだ経験を思い出させる。
改めて、ここでは、テストのないソースコードをレガシーと呼ぶと定義されています。
自分が書いたソースコードも、テストがないものは、他の誰かが見た時は、レガシーと判断するだろうなぁと、
とっても納得できます。
レガシーコードは、まずテストを作成する。
そうすれば、リファクタリングも安心してできます。
と納得感あります。
ちょっと古い本ではありますが、きっといつまでも通じる話しです。
[amazonjs asin=”4798116831″ locale=”JP” title=”レガシーコード改善ガイド (Object Oriented SELECTION)”]
テキスト編集をするのには、テキストエディタが必要です。
どれを使ってどれだけ便利に使うか?これが大事ですね!
さて、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 =>
とすると
『CakePHP1 to 2 Migration tips 100』
まだまだCakePHP1.2系で動かしている仕組みがありますから、こういうまとまった情報はありがたいです。
$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)
でいいみたい。
携帯サイト向けのページを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=",
よく見れば、書いてあったのですが、ここは気づきませんでした。。。。
大変な回り道をしてコードがぐたぐたになった挙句に見つかるものです。。。
とっても便利!
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 />
最近、ちらほらと目にする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
たぶん、これだけ分かれば十分かと。
ながらくwindows7上にて、colinuxを動かしてubuntu9.04にて開発環境を用意していましたが、さすがにパッケージも古くなり、新しいパッケージもなくなり、ちょっときつくなってきたため、colinuxで比較的新しいdebian squeezeを手にいれることにしました。
以下は、そのまとめ。参考になれば幸いです。
まずは、colinuxを入手する
から、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
続いて
なかなか、うまくgitがインストールできなくて、結局パッケージをさがすことに。
さすがは、ubuntu!ありますね。
https://launchpad.net/~smartlounge/+archive/
普段、テキストエディタとしてgvimを使っていますが、1行になったものを置換して、改行を入れたいことがあります。
これまで、どうやって入れるのかわからずにいたのですが、いい加減に調べました。
:%s/置換される言葉/置換する言葉^M/g
です。
ちなみに、^M:はctrl+v,ctrl+mです。
久しぶりの更新です。
さて、最近、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=”” />
今更かもしれませんが、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などをうまく認識してもらえると良いんですけれど。
いろいろとやりたくなってmercurialをインストールしてみました
まずは、
http://www.selenic.com/mercurial/release/
から、最新のバージョンを確認してダウンロードします。
coreserverのSSH登録を自動化するスクリプトを作ろうかと思っていたのですが、
まてよ、必ずだれかやっているはず。。。と思いググとすぐに出てきました。
さすがです。
http://d.hatena.ne.jp/int128/20090113/1231850343
使わせてもらいました。
ありがとうございます。
以下に参考になりそうなURLを上げておきます
http://www.1×1.jp/blog/2009/05/cakephp_122_cache_function_deprected.html
http://cakephp.jp/modules/newbb/viewtopic.php?viewmode=flat&order=ASC&topic_id=88&forum=8
APIから取得した値のキャッシュについて
http://www.happyquality.com/2008/12/06/471.htm
キャッシュを使うと速度が数倍に http://cakephp.seesaa.net/article/22149612.html
/admin/xxxxx
だけでなく、例えば
/m/xxxx
だったら携帯向けに表示を変更したいと思って探していたのですが、ようやく見つけました。
http://mick.blog16.jp/index.php/main/2008/10/16/cakephp_prefix_routes
http://ore.saizensen.net/archives/94
prefixをつけるというのが、やり方のようです。
「getで送信されたパラメータを引き継ぐpaginationのやり方」が掲載されています
http://d.hatena.ne.jp/cakephper/20080906/1220684569#tb
ようやく、使いこなせてきました。
シングルやアーカイブで現在属するカテゴリーを取得する方法(WordPress) | とりさんのソフト屋さん
これもとっても参考になりました。結構奥が深いんですね。
cakePHPを触っていて最初の壁が、このアソシエーションでした。
このブログを見て、すべて解決!
最初から、こう説明してくれたら楽なんですけれどね。
【CakePHP】アソシエーションで迷ったらこう考えよう | ECWorks Blog
ひさしぶりに、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 />
仕事柄、あるサイトのリンクを調べたりしますけれど、
googleのスプレッドシートで、
=ImportXML("no1s.biz","//a/@href")
と入力するだけで、リンクをたどることができます。
意外にも結構便利ですね。
http://www.lovy-studio.com/blog/?p=31
によると、
でいける。最近うまくいかないなぁと漠然と思っていましたが、知らないだけでした。
GoogleAppsやら、普通にGmailを使ったりと、いろいろと使う機会が増えていますが、
その分、いろいろと使いにくさもあって、悩んだりするとやっぱり同じことで悩んで解決してくださっている方がいらっしゃいます。
さて、そんな便利なGmailで一番気になる嫌なところが「メールが等幅フォントで表示されない」事です。
ほとんどのメーラーではデフォルトフォントが等幅フォントなので、署名や見出しなどを色々凝ったつくりにしている場合がありますが、Gmailでは全くの台無しです。GreaseMonkeyでの対応方法
なるべく拡張は使わないようにしているんですが、Greasemonkeyを入れている人は導入が簡単だと思うので、user.js作ってみました。
下記からどうぞ。
ということで、
GreaseMonkeyをインストールして、
http://creazy.net/2008/07/gmail_monospace_font.html
こちらのスクリプトを読み込めば完了です。
とっても便利になります。
いわゆるwindowsのExplorerのようなものです。
ファイル作成、ディレクトリ作成、リネームなどもできます。
vtreeexplorer.vimとどちらが使いやすいか?
という話もあるかもしれませんが、VIM7で、タブ機能が使えるようになった以上、こちらは、かなりポイント高いかも。
VimExplorer – VE – the File Manager within Vim : vim online
使い方:
文章を打ち込んでいて、テキストの罫線を入れたくなるときに便利です。
keisen.vim(UNIX / 文書作成)
XREAサーバーを利用してWordpressを運用していますが、プラグインが管理画面からアップデートできるようになっていたので、すかさずリンクを押すも、セーフモードの制限があってうまくいかないため、.htaccessで対応。無事にできるようになりました。
以下の内容を.htaccessファイルに書いて、wp-adminのフォルダーに入れればOKです。
いろんなところで、同じタイトルで出ていますが、うまくいかないものであったり、疑問があったりしましたので、整理してみました。私なりのやり方です。
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
でした。
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でやる場合は、多少違います。ディストリビューションが違うのでそれは、仕方ありません。
vimをメインで利用する上で、便利プラグインの説明です。
しかも、これで面白いのは、windowsでもlinuxでもいけるものがほとんどだということです。
。。。説明はのちほど。
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
phpでバッチ処理などをする場合で、バックグラウンド処理を行いたい場合で、
確か以前は、
あんまり会社向けの良いテンプレートがありませんねぇ…。
比較的、仕事でも使えそうなものが、こちらに
http://www.blogstheme.com/
こちらに、テンプレートに書き込めるスクリプトの情報があります。
http://wpdocs.sourceforge.jp/%E3%83%86%E3%83%B3%E3%83%97%E3%83%AC%E3%83%BC%E3%83%88%E3%82%BF%E3%82%B0