可変長引数リストって忘れがちやな。

2018.08.08

Logging


 

<?php
function hoge(...$hoge) {
     foreach($hoge as $key=>$val){
        sprintf("key = %02d val = %02d",$key,$val);
     }
}
hoge(1);
hoge(1,3,2);
//アンパック
function hoge2($i, $ii) {
    return $i + $ii;
}
$hoge3 = [3, 3];
echo hoge2(...$hoge3);

 
残業したくない自分ですが、仕事に追われています・・・。
なぜに8月に仕事がこんなに山積みなんだと・・・凹んでいます。
今日は可変長引数リストのことについて。
可変長引数リストって使わなかったら忘れがちやな事ですよね?
引数の変数が可変する、ですから可変長引数リスト!?
簡単ですね・・・。
javascriptにもあります。
ES6からPHPと同じ様になっているそうです。
ES6ってChrome42ぐらいからかな。たぶんIEとかでは使用できないのかも。
クックパッドの開発者ブログにやり方書いてます。
https://techlife.cookpad.com/entry/2015/02/02/094607
余談:
PHP5.6からPHP7へ移行している時代かもしれないですが
まだまだレガシーコードで動いているサイトもあると思います。
いや結構あると思います、改修したくても出来ない・・・。
そして新たなレガシーコードみたいなのを生んでいる自分もいます。
なぜ、レガシーコードみたいなのでコード書くのかという理由は
「平均的なコードだから」です。
高知県は特にレガシーコードみたいなのが多い気がします。
言語ってバージョンが上がれば
使われない関数とかセキュリティが甘い関数などは
推奨から非推奨移行して最後は使用不可に
なりますよね・・・あれってどうにかならないものなのか。
そしてライブラリ使っていたりすると破滅的なダメージになります。
そういう面ではJSのライブラリは持ちが良い気がします。
改修したくても・・・時間がない。
 

タグ

$hoge as, $hoge3, AM, Chrome42, echo hoge2, ES6, function hoge2, PHP5.6, PHP7, sprintf, アジャイルサムライ−達人開発者, アンパック, ライブラリ, レガシーコード, 可変長引数リスト,

laravel5の古いバージョンをインストールする。{laravel5.2}

2018.03.24

Logging


laravel5の古いバージョンをインストールする。{laravel5.2}
Composerが入っていることを前提に記事を書いていきます。
まず、インストールしたい環境を指定(プロジェクト名=ディレクトリが作成されます)します。
コマンドラインからこんなコマンドを打ちます。

composer create-project laravel/laravel laravel-test 5.2.* --prefer-dist

そうするとlaravel-testというフォルダが作成されます。
そしてその中にある、/config/app.phpの42行目を任意のURL変更します。
その後、下記のフォルダのパーミッションを777に変更して下さい。
storageのフォルダの配下
bootstrap/cacheフォルダ
こちらを変更することにより
任意のURL/public/というアドレスを入力することにより
デモページが表示されます。
フォルダとか言っていますけど、ディレクトリとか言うのが
普通みたいです(。-ω-)zzz. . . (。゚ω゚) ハッ!そうだった。
こんな感じでララベルの5.2をインストールすることが出来ました。
ちなみに5.2にするとPHP5.6ぐらいからPHP7.1ぐらいまで動作するという
事なので便利かなと思います。トイウカ、laravel、最先端を走りすぎているのか
日本のサーバ環境が古いのか分からないですが・・・
日本ではPHP5.6環境でざらで動いているのが結構あります。
なので5.2のバージョンで開発するのがベストかなと思います。
ちなみに自分の勤めている会社でもそろそろ導入するのかなと思っています。
そろそろと去年あたりから言ってますけど、、、、
仕事が立て込んでいて中々、移行するのが難しいですね、、、、。
一段落したかと思うと別の案件が・・・悩ましい。
合間合間で作るのは何だか気が引けるので未だに未着手なんです。
自分が担当している部分を変更するのはそれ程、時間はかからないとは思います。
ただ、未だにチーム開発ではないのが・・・難儀。
 

タグ

--prefer-dist, AM, app.php, Bootstrap, cacheフォルダ, composer create-project laravel, laravel laravel-test 5.2, laravel5.2, Laravel入門, PHP5.6, PHP5.6環境, PHP7.1, コマンド, ディレクトリ, トイウカ, パーミッション, フォルダ, ララベル, 古いバージョン, 未着手,

グーグル画像検索リンク抽出とYahoo画像検索リンク抽出!!

2018.01.15

Logging


昨日Qiitaで公開したコードです。プラスYahooも作ってみたよ。

php5.6
ライブラリ Goutte
説明:コマンドラインから巨人ぐーぐるさんの画像検索に検索内容を投げHTMLを抽出後、
HTML解析を行い画像リンクだけを抽出するものです。コメントを外しダウンロードディレクトリを
作成すればダウンロードが可能ですが、あくまでもローカルで動かす事を前提としています。
尚、機械学習の為に画像収集するには少し数が少ないですね・・・(水増し)orz。
リンクはこちら

 
ライブラリはググってインストールして下さい。
おそらくレンタルサーバーなら大体、標準がPHP5.6だと思います。
PHP7とかで動いている場合もあるだろうけれど・・・。
ライブラリはバージョン2系を自分はインストールして作成しました。

<?php
date_default_timezone_set('Asia/Tokyo');
include '/composer/vendor/autoload.php';
use Goutte\Client;
$p=count($argv)>=2?$argv[1]:"cat";
$client = new Client();
$client->setHeader('User-Agent', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36');
$crawler = $client->request('GET',"https://www.google.co.jp/search?hl=fr&tbm=isch&source=hp&biw=1920&bih=959&q={$p}&oq={$p}&gws_rd=cr&dcr=0");//'https://www.google.com/search?hl=fr&tbm=isch&source=hp&biw=1920&bih=959&q='.$p.'&oq='.$p);
$img = $crawler->filter('div.rg_bx.rg_di.rg_el.ivg-i')->each(function($element){
    if(preg_match("/\"ou\":\".*\"\,\"ow\"/",$element->text(),$link)){
        $url = str_replace(array('"ou":"','","ow"'), "",$link[0]);
        $ext = pathinfo($url, PATHINFO_EXTENSION);
        $name = pathinfo($url,PATHINFO_FILENAME);
        echo $url."\n";
        if(preg_match('/((jpg)|(jpge)|(png)).*/',$ext)){
            //$data = file_get_contents($url);
            //file_put_contents('./download/dl_'.$name.".".$ext,$data);
            //echo '<img src="'.'./download/dl_'.$name.".".$ext."\">\n";
        }
    }
});

 
こちらがYahoo版ですが、あまり抽出出来てません。

<?php
date_default_timezone_set('Asia/Tokyo');
include '/composer/vendor/autoload.php';
use Goutte\Client;
$p=count($argv)>=2?$argv[1]:"cat";
$client = new Client();
//$client->setHeader('User-Agent', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36');
$crawler = $client->request('GET','https://search.yahoo.co.jp/image/search?p='.$p.'&rkf=1&oq=inu&ei=UTF-8&imc=&ctype=&dim=large');
$img = $crawler->filter('.gridmodule .SeR .tb a')->each(function($element){
    if(!preg_match("/.*search\.yahoo\.co\.jp/",$element->attr('href'),$link)){
        $url = $element->attr('href');
        $ext = pathinfo($url, PATHINFO_EXTENSION);
        $name = pathinfo($url,PATHINFO_FILENAME);
        echo $url."\n";
        if(preg_match('/((jpg)|(jpge)|(png))$/',$ext)){
            //$data = file_get_contents($url);
            //file_put_contents('./download/dl_'.$name.".".$ext,$data);
            //echo '<img src="'.'./download/dl_'.$name.".".$ext."\">\n";
        }
    }
});

タグ

'User-Agent', 63.0.3239.132 Safari, AM, AppleWebKit, Asia, autoload.php', href, img src, like Gecko, new Client, pathinfo, PATHINFO_EXTENSION, PHP5.6, setHeader, Tokyo, use GoutteClient, Win64, Windows NT 10.0, ライブラリ, 巨人ぐーぐる,