あの噂のパン屋さんへ行ってきました。小麦の○☓。

2022.07.20

Logging

こんにちは、今日は先日の雨の中、あの噂のパン屋さんへ行ってきたのでレビューします。辛口コメントです😌。

先日、小麦の奴隷というホリエモンプロデュースのパン屋さんへ行ってきました。このパン屋さんは奇抜なカレーパンが美味しいという事で有名です!!なので、自分もカレーパンと数点のパンを購入しました。味の方は食べてみてください、多くは食べれないけど自分はカレーパン好きですね。

尚、小麦の奴隷 高知瀬戸店の場所は高知県高知市瀬戸1丁目4-21サンパティオビル1Fにあります。
AM10:00~PM17:00まで(完売次第終了)
※定休日は水曜日です。

追伸:なぜ、帯屋町に店を出店しなかったのだろう、絶対そちらの方が話題になってたと思うのに!?

タグ

00, , 10, 17, 21, 4, AM, PM, カレー, コメント, サン, そちら, パティオ, パン, ビル, プロデュース, ホリエモン, レビュー, , , 今日, 先日, 出店, , , 場所, 多く, 奴隷, 完売, 定休日, 小麦, 帯屋町, , , , 有名, 次第, 水曜日, 瀬戸, 終了, 自分, 話題, 購入, 辛口, 追伸, , 高知, 高知市, 高知県,

映画、マトリックス・レザレクションズ、やっぱ今日観に行きます(AM11時)! #マトリックス

2021.12.17

Logging

映画、マトリックス・レザレクションズを本日、11時に始まる字幕版を観に行きます?、感想につきましては映画を見終わった後に、ネタバレなしでツイートします。日本語版の方が上映数が多いのは少し残念ですね。

マトリックス三部作の中で印象的だったのが、やっぱあのバレットタイム撮影方法だと思います、ぐるぐるとスローモーションのキアヌリーブスを・・・。この映像はとても衝撃的でした、今までこんな映像は見たことがなかったので。そしてマトリックスの世界観がとても良かったですが、今回の新章は予告を見る限りでは前回を完璧に超えていいるストーリー展開が見れそうな気がします。今からマトリックス観るのが楽しみです。では観に行ってきます!!

映画『マトリックス レザレクションズ』予告 2021年12月17日(金)公開

タグ

11, AM, com, https, mBRWwAqJ--U, watch, www, youtube, キアヌリーブス, こと, ストーリー, スローモーション, タイム, ツイート, バレット, マトリックス, レザレクションズ, 三部作, 上映, 世界観, , 予告, , 今回, 今日, 前回, 字幕, 完璧, 少し, 展開, , 感想, 撮影, 新章, , 方法, 日本語版, 映像, 映画, 本日, 楽しみ, 残念, , , 限り,

今日はお休みなのに。

2021.02.20

Logging

今日はお休みなのに、クラウドワークスのお仕事に手を出してしまってへとへとな感じになっています。今日のAM2時頃から起きて12時まで作業して手取り2000円です、受注実績がほしくてトライしたのですが正直なところ割りに合わないかなと思いました。プログラムコード数は結構書きました、たぶん2000円以上の仕事をしている気がします。

あと土曜日、告知するということは仕事辞めることになりました・・・。まる三ヶ月間ぐらい、仕事をしたのですが社長さんと合わないのが、このさきも続くとなると、長くは続かないだろうし何よりシステムのことを理解していない人がトップにいると仕事が進めにくいのです、そんなこともあり辞めるのです。

前社長は、システム上がりの現役でコードを書いていたので、そういう面では良かったなと思います、辞めてこれからフルリモートの仕事をするのか、倉庫作業員になるか、悩んでおります。お給料が良いのはフルリモートですが、倉庫作業が懐かしくて・・・。悩ましいですね。

タグ

12, 2, 2000, AM, お仕事, お休み, お給料, クラウド, コード, こと, これ, さき, システム, ところ, ドップ, トライ, プル, プログラム, まる, リモート, ワークス, , , 今日, 仕事, 作業, 倉庫, 前社長, 受注, 告知, 土曜日, 実績, , 手取り, 正直, , 現役, 理解, 社長, ,

ファンです。Yoojung Lee:)

2020.10.22

Logging

Pure Water – Mustard, Migos / Yoojung Lee Choreography

I am a fan of Yoojung Lee. Her dance moves are sharp and beautiful.
And I like her coolness.
I’m sharing her dance moves with you.
If you’ve been following my Twitter timeline, you’ll have an idea of what I’m talking about.
It’s the type of person I like quite a bit.
These days, I’ve been thinking that the women I like are very similar to each other.
There are about three patterns, though.

She is as unattainable as the stars, so I’m a fan of hers.

I just want to watch her.

Sunflower – Post Malone, Swae Lee / Yoojung Lee Choreography
Nights With You – MØ / Yoojung Lee Choreography

https://www.youtube.com/channel/UCw8ZhLPdQ0u_Y-TLKd61hGA

タグ

about, AM, an, and, are, as, beautiful, been, bit, coolness, dance, days, each, fan, following, have, her, I'm, I've, idea, if, is, It's, Lee, like, moves, My, of, other, patterns, person, quite, sharing, sharp, She, similar, STAR, talking, that, The, There, These, thinking, though, three, timeline, To, Twitter, type, unattainable, very, what, with, women, Yoojung, You, you'll, you've, ファン,

いま、思っていることはノートパソコンで良くね?

2020.10.10

Logging

Lenovo ThinkPad X1 Nano Gen 1 Sizzle – The lightest ThinkPad ever

ノートパソコン買って、こんな感じに使うことができればそれで十分可能かと。この頃を思っています。基本的にパソコンって複数代、購入しても使用しているパソコンって一台か二台ぐらいではないですか?

自分の場合、旧のパソコンはサーバにしていて、使用するパソコンは一台だけですが、だったらノートパソコンで良くねという感じです。もう新しいパソコンを新調したので当分はこのデスクトップのパソコンを使用するつもりでいます。

https://www.youtube.com/watch?v=0aM3-YiRC-8

これから、パソコンを購入しようと考えている人は、断然、ハイスペックのノートパソコンをひとつ購入して、サブ画面として液晶ディスプレイを購入。上記の動画のような使用方法すれば全然、ストレス無く使用することが出来、なおかつ外出先でもパソコンを持っていけるのは本当に便利かなと思っています。

この頃の後悔はそれですね・・・。

タグ

-YiRC-, 0, , 8, AM, com, https, watch, www, youtube, いま, こと, これ, サーバ, サブ, ストレス, それ, つもり, ディスプレイ, デスクトップ, ノートパソコン, ハイスペック, パソコン, ひとつ, , 上記, , , 使用, 便利, 動画, 可能, 場合, 外出, 当分, 後悔, 感じ, 新調, 方法, , 本当, 液晶, 画面, 自分, 複数, 購入, ,

漁業系ユーチューバーさん、小豆島の漁師はまゆう

2020.01.20

Logging

そりゃいるさー。本日(20/1/20)のAM11時頃、農業系ユーチューバーを紹介しました。農業系YOUTUBERがいるなら、漁業系ユーチューバーがいてもおかしくないじゃないと検索したところいましたよ!

人妻と一緒に海へ!楽しいひと時を過ごしました。

小豆島の漁師はまゆうさんです。やっぱいるだなと思い何だか一人で納得してました。自分がやっていることを皆に伝えたい発信したいと考えているYOUTUBERさんはいっぱいいるという事を改めて認識したのですが、そういう人が増えていくとユーチューバーを本業としているひとは中々、大変な職業になっていくなと思います。

YOUTUBEというサービスが始まったときは、まさにブルーオーシャンだっただろうけど、いまはレッドオーシャンになりつつあるなと感じます。でもまだニッチな部分は残っていると思うので始めるなら早いもの勝ちな感じがします。

ちなみに小豆島の漁師はまゆうさん、ちょっとイケメンです。

小豆島の漁師はまゆうさんのチャンネル登録はこちらになります。
https://www.youtube.com/channel/UCIhqq_TjKA6IyCzgHTTxsAw

タグ

, 11, 20, AM, youtube, YOUTUBER, イケメン, いま, オーシャン, こと, サービス, とき, ところ, ニッチ, はまゆう, ひと, ブルー, まゆう, もの, ユーチューバー, レッド, 一人, 中々, , , 大変, 小豆島, 本日, 本業, 検索, 漁師, 漁業, 発信, , 納得, 紹介, 職業, 自分, 認識, 農業, 部分,

昨日は仕事初めでした。

2019.01.08

Logging


昨日は仕事初めでした。
帰ってきてからAM1:00に寝たんだけどAM4:00に起きて
しまう始末…いまいち、体の体調が良くないです。
寝ないといけないけど、帰ってきてからサーバとかゴニョゴニョしてました。
 

タグ

, 4, AM, nbsp, いまいち, ゴニョゴニョ, サーバ, 仕事初め, , 体調, 始末, 昨日,

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

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, アジャイルサムライ−達人開発者, アンパック, ライブラリ, レガシーコード, 可変長引数リスト,

逃げるは恥だが役に立つグーグル画像検索ダウンロードコンソールアプリ

2018.07.03

Logging


グーグル画像検索ダウンロードコンソールアプリを作ってみました。
へっぽこソースはこちら

using System;
using System.Text.RegularExpressions;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Net;
using System.IO;
namespace google_img_get
{
    class Program
    {
        static void Main(string[] args)
        {
            gurl();
        }
        static void gurl() {
            string url = "https://www.google.co.jp/search?tbm=isch&biw=1920&bih=957";
            string htmlSource = "";
            Boolean flg = true;
            try
            {
                //コマンドライン引数を配列で取得する
                string[] cmds = System.Environment.GetCommandLineArgs();
                if (cmds.Length == 2)
                {
                    url = url + "&q=" + cmds[1] + "&oq=" + cmds[1];
                    flg = false;
                }
                if (flg)
                {
                    Console.ForegroundColor = ConsoleColor.Cyan;
                    Console.WriteLine("***** google画像検索&ダウンロード少しw キーワードを入力してください *****");
                    Console.ForegroundColor = ConsoleColor.White;
                    string hoge= Console.ReadLine();
                    url = url + "&q=" + hoge + "&oq=" + hoge;
                 }
                if (url != "")
                {
                    Console.WriteLine("***** google check *****");
                    htmlSource = gsource(url);
                    Console.WriteLine(htmlSource);
                    string img = "\"ou\":\"(?<text>https?.*?)\"";
                    Regex reimg = new Regex(img, RegexOptions.IgnoreCase | RegexOptions.Singleline);
                    for (Match m = reimg.Match(htmlSource); m.Success; m = m.NextMatch())
                    {
                        char[] cc = { '"', '\'' };
                        string u = m.Groups["text"].Value;
                        u = u.Trim(cc);
                        string[] exte = u.Split('.');
                        string gexte = "";
                        if (Regex.IsMatch(exte[exte.Length - 1].ToLowerInvariant(),"jpge")) {
                            gexte = "jpg";
                        }
                        if (Regex.IsMatch(exte[exte.Length - 1].ToLowerInvariant(), "jpg"))
                        {
                            gexte = "jpg";
                        }
                        if (Regex.IsMatch(exte[exte.Length - 1].ToLowerInvariant(), "gif"))
                        {
                            gexte = "gif";
                        }
                        if (Regex.IsMatch(exte[exte.Length - 1].ToLowerInvariant(), "png"))
                        {
                            gexte = "png";
                        }
                        Console.ForegroundColor = ConsoleColor.DarkGreen;
                        Console.WriteLine("***** " + u + " *****");
                        if (gexte != "")
                        {
                            int ihoge = new Random(100).Next(100) * 100;
                            Console.WriteLine(media(u, gexte));
                            System.Threading.Thread.Sleep(ihoge);
                        }
                    }
                }
                gurl();
            }
            catch (Exception e)
            {
                Console.ForegroundColor = ConsoleColor.Red;
                Console.WriteLine("***** " + e.Message + " *****");
                gurl();
            }
        }
        static string gsource(string url) {
            string htmlSource = "";
            WebClient client = new WebClient();
            client.Headers.Add("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36");
            Stream st = client.OpenRead(url);
            Encoding enc = Encoding.GetEncoding("UTF-8");
            StreamReader sr = new StreamReader(st, enc);
            htmlSource = sr.ReadToEnd();
            sr.Close();
            st.Close();
            client.Dispose();
            return htmlSource;
        }
        static string media(string url, string exte)
        {
            // カレントディレクトリを取得する
            string nowstr = DateTime.Now.ToString("yyyyMMddHHmmss");
            string stCurrentDir = Directory.GetCurrentDirectory();
            WebClient wc = new WebClient();
            wc.Headers.Add("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36");
            @wc.DownloadFile(url, @stCurrentDir + "\\webcmd" + nowstr + "." + exte);
            wc.Dispose();
            return "***** " + "Success!! [webcmd" + nowstr + "." + exte + "] *****";
        }
    }
}

 
コンソールアプリ軽量で動作が機敏なので良いかなと
これを使用していているとリモートサーバーから怒られることが
あるのでお気をつけください。リモートサーバー=プロバイダと認識しています。
あまりにも立て続けにダウンロードしていると400エラーになり
処理が途中で中断してしまいます。
何故、そうなるのかはお察しください。
https://www.youtube.com/watch?v=_CuVYooExZ4
回避策のため、ランダムタイマーで一旦処理を停止しながら
ダウンロードを行っているので微妙に遅い。
これを改良してもっとより良いものを
作ってくれる有志が入れば有り難いです、GitHubにも
公開していますので改良してもらうと有り難いです。
その他、コンソールアプリの詰め合わせzipを置いときますので
ご自由にご使用いただければと思っています。
法的にまずい使い方は行わないでください。
https://zip358.com/tool/web.zip
 

タグ

AM, array,

googleメールを指定時間に既読にするには

2018.06.23

Logging


https://script.google.com/home
まず、上記でスプリントを作り、gmailと連携した後。
矢印の時計マークをクリックします。
そうするとトリガー作成しますかみたいな文言が表示されるので
クリックし指定の時間を設定します。
そうすることで、指定の時間になれば毎日メールは
既読になります。
(※ならないです・・・という方は見直しが必要です、
下記はあくまでもヒントです。
余談:
自分の場合、殆ど読まないメールが大半なので
重要なメールに目を通して、後は指定の時間にグーグルスプリクトで
既読する方法を選びました。

function gmailbat(q) {
  q = !q?0:q;
  var gm = GmailApp.search("is:unread",q,500);
  var flg = false;
  gm.forEach(function(m,i,a){
    if(m.isUnread()){
        m.markRead();
        flg = true;
    }
  });
  if(flg){
      q = q+500;
      return gmailbat(q);
  }
  return true;
}

 

タグ

AM, false, function gmailbat, gm.forEach, GmailApp.search, googleメール, m.isUnread, m.markRead, return gmailbat, return true, var flg, var gm, グーグルスプリクト, スプリント, トリガー, 指定, 文言, 既読, 既読する方法, 時計マーク, 矢印,

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, コマンド, ディレクトリ, トイウカ, パーミッション, フォルダ, ララベル, 古いバージョン, 未着手,

javascriptの並列処理について

2018.02.13

Logging


 
javascriptの並列処理についてdemoサイトを作りましたので
参照し見てください。尚、コードは下記になります。
注意点とかは下記の画像を参照してみて下さい。
使用してわかったことは落ちないというのは良いことだということ。
落ちても表面上はエラー警告などはないので、結構便利なんじゃないだろうかという事です。
ちなみにこちらがデモサイトのリンクになります。
https://zip358.com/tool/worker/

<!DOCTYPE html>
<html>
    <head>
        <title>worker</title>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
        <script>
            var wkr = new Worker("worker.js");
            wkr.onmessage = function(d) {
                document.getElementById("wkr").innerHTML = document.getElementById("wkr").innerHTML +  d.data + "<br>";
            };
        </script>
    </head>
    <body>
        <div id="wkr">
        </div>
    </body>
</html>
var e = 0;
function en(){
    e = e + 1;
    postMessage((e*3.14));
    if(e < 1000)en();
}
en();

 
 

タグ

AM, body&gt, device-width, div&gt, DOCTYPE html&gt, document.getElementById, function en, head&gt, initial-scale, innerHTML, meta charset, meta name, new Worker, script src, script&gt, title&gt, var wkr, wkr.onmessage, worker.js, worker&lt,

Gmail未読メール一括既読処理

2018.01.20

Logging

Gmail未読メール一括既読処理です。

ちなみにこれは間違っているコードなのですね、これを放置していたのに
誰も指摘がなかったという怖さ、やはりネットに転がっているコードは
余程、名の通った人のサイトしか信用しては駄目だなと痛感。
ただ良心的なサイトも数多く有るのも
本当のことですが・・・コードを理解していないと
挙動不審に動くコードだったりする可能性を秘めているので
注意が必要です。
※あと無限ループ(再帰処理)で走らしていますが
未読問い合わせには問い合わせ制限があるみたいなので
超大量の未読Gmailメールがあった場合など
うまく動作しません。
https://script.google.com/home?
Qiita::URLはこちら

function gmailbat(q) {
  q = !q?0:q;
  var gm = GmailApp.search("is:unread",q,500);
  var flg = false;
  gm.forEach(function(m,i,a){
    if(m.isUnread()){
        m.markRead();
        flg = true;
    }
  });
  if(flg){
      q = q+500;
      return gmailbat(q);
  }
  return true;
}

タグ

AM, function gmailbat, G Suite, gm.forEach, GmailApp.search, Gmail未読メール一括既読, Gmail未読メール一括既読処理, GoogleAppsScript, GoogleAppsScript完全入門, m.isUnread, m.markRead, qiita, return gmailbat, return true, var flg, var gm, コード, 再帰処理, 最新プログラミングガイド, 未読問い合わせ, 詳解,

グーグル画像検索リンク抽出と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, ライブラリ, 巨人ぐーぐる,

IPF(Decryption)

2018.01.04

Logging


To decrypt “ipf”! !
https://github.com/r1emu/IPFUnpacker
Download the zip file from the above URL.
Then execute the following command from the command line.

make clean && make release
Since the “ipf_unpack” package is created, execute the following command from the command line.
./ipf_unpack ./xxxx.ipf decrypt
./ipf_unpack ./xxxx.ipf extract
The decrypted file is stored in the “extract” folder.
This is Linux’s story. By the way, I used this application to see the source code of the game “Tree Of Savior”.
Also, you need to install the makefile “gcc” and so on : )

タグ

, AM, and so on, By the way, Decryption, Download the zip file from the above, execute the following command from the command, I used this application to see the, ipf_unpack, make clean, make release, package is created, Since the, The decrypted file is stored in the, Then execute the following command from the, This is Linux's story, To decrypt, Tree Of Savior, xxxx.ipf decrypt, xxxx.ipf extract, you need to install the makefile, 昨日,

jsって言ってるアレ、そうアレ。

2017.12.30

Logging


この頃、知ったんだけど配列とかも参照渡しなんだね・・親切だけどココは
親切にしてほしくないところかな。

$(function(){
    var FUSION= function(yabai){
        var fooooooooo = yabai;
        fooooooooo[0]++;
        fooooooooo[1]++;
        fooooooooo[2]++;
    },
    FUSION2= function(yabai2){
        var YaYaYaaaaaaaaa = yabai2 ;
        console.log(YaYaYaaaaaaaaa);
        return ;
    },
    t=[1,2,3];
    FUSION(t);
    FUSION2(t);
});

上記の記述で参照渡し可能になります。
オブジェクト渡しで参照渡しになるのは何となく理解できるものの
配列も参照渡しになっちゃうのはどうかと。
じぶんとしては参照渡し行ってほしくないだよね。
でもjavascriptの場合、参照渡しになっちゃう事を覚えておいたほうが
良さげです。逆にうまく使えれば参照渡し役に立つかもしれないだろうけど。

タグ

AM, console.log, function, FUSION2, Informatics&amp, javascript, var fooooooooo, var FUSION, var YaYaYaaaaaaaaa, yabai2, アレ, オブジェクト渡し, じぶん, プログラミング, 参照渡し, 参照渡し役, 徹底マスター, 配列, 開発技法,

WordPressを実践勉強中、ajaxについてうにゃ。

2017.10.27

Logging


WordPressでajaxを動かそうするとき、WordPressのルールに
則って動かさないと動かないらしい。
なので、このような記述を書かないといけない。
まず、非同期処理の送信先に、admin-ajax.phpというファイルを指定。
そこへPOSTかGETしないといけない。そしてデータとして
アクションさせるファンクション名を記述して
上げないといけないらしい。
こんな感じになる。

$( '#submit' ).on( 'click', function(){
    $.ajax({
        type: 'POST',
        url: <?=admin_url('admin-ajax.php')?>,
        data: {
            'action' : 'hoge_f',
        },
        dataType: "json",
        success: function( obj){
            alert( obj );
        }
    });
    return false;
});

次にWPテーマのファンクションファイルに下記を追加記述。

function hoge_f(){
echo json_encode($_POST);
    die();
}
add_action( 'wp_ajax_hoge_f', 'hoge_f' );
add_action( 'wp_ajax_nopriv_hoge_f', 'hoge_f' );

ここでミソなのが、die();という部分、これを除けると0という文字も出力されてしまう。
ちなみにwp_ajaxがログイン時の振る舞い、wp_ajax_noprivがログアウト(=訪問者)時の
振る舞いだそうだ。
この2つの勘所だけ覚えとけばWordPressで非同期処理が
行えるのではないだろうか、もっと詳しく知りたい場合、admin-ajax.phpの中身を
見たらよいのだろうけど、にわかWordPress職人さんはコレだけ
覚えとけば良さそうだと。
 

タグ

'hoge_f', 'wp_ajax_nopriv_hoge, Action, admin-ajax.php, AM, click, dataType, echo json_encode, function hoge, function hoge_f, obj, POST, return false, submit, WordPress職人, ファンクション, ファンクションファイル, ログアウト, , 非同期処理,

また、Composerをインストールしてみたよ。

2017.10.06

Logging


一昔前のファミコンゲームみたいな、コンポーザー(Composer)を
インストールしてみた。これ必要なんだ。
ネットでゴロゴロとインストール仕方が転がっているけれども
その方法は使わないで、こういう方法でインストールしてみた。

https://getcomposer.org/installer

上記のURLをLinux系ならwgetとかでダウンロードする。
WindowsならそのままブラウザでURL叩けばファイルが落ちてきます。
そのファイルを任意の場所にアップロードし、下記のコマンドを叩けば
インストールが可能かと思います。ちなみにXサーバとかなら
PHPバージョンとかを気にしないといけませんので、
そこら辺はググってください。

php composer installer

これだけでインストールが始まります。
インストール後、composer.pharとかいうファイルが出来上がっています

composer -v

 
ので、コンポーザーと呪文詠唱すると
上記のような画面が現れるという・・・。
あとは煮るなり焼くなりしてあげてください。
ちなみにネットでゴロゴロ出回っているインストール方法は
こちらです。パイプ使ってやってんだね。

curl -sS https://getcomposer.org/installer | php

ちなみに普通のレンタルサーバにはwgetとか入っていないので
curlコマンドでインストールしてあげてください。

タグ

AM, composer.phar, curlコマンド, Linuxコマンドポケットリファレンス, php composer installer, php installer, wget, インストール, インストール仕方, インストール方法, コンポーザー, そこら辺, ネット, パイプ, ファイル, ファミコンゲーム, ブラウザ, レンタルサーバ, 上記, 改訂,

サンプルJSプラグイン2、無名関数の引数渡し。

2017.10.01

Logging


昨日に続きJQueryのプラグイン作りを行なっています。
いろいろと勉強になります、何となく分かってきました。
javascriptでもいろいろと出来るのだなと感心しています。
ソースを毎度おなじみですが、解説なしのコードを貼り付けておきます。
今回はリターン時に無名関数を使ってみました。そして無名関数に引数渡しを
行なっています。
サンプルプログラムはこちらです。
https://zip358.com/tool/jsp/index1.html

(function($){
    $.fn.Lform = {
        Lget:function(c){
            var s = "";
            if(!c){
                $("body form").each(function(i, e) {
                    s+= "<input type='button' class='cssform' data-lfm='" + i + "' value='" + i + "番目のフォームを送信させる'><br>";
                });
            }else{
                s = "<input type='button' class='cssform' data-lfm='" + c + "'  value='" + c + "番目のフォームを送信させる'><br>";
            }
            return (function(s){
                console.log(s);
                $("#lsform").html(s);
                $(".cssform").click(function(){
                    var i = $(this).data("lfm");
                    $("body form").eq(i).submit();
                });
            })(s);
        }
    };
})(jQuery);
<!DOCTYPE html>
<html>
    <head>
        <title>JQプラグインか?::from送信プラグイン{BODYの中に複数のフォームが有る場合、指定したフォームを送信させる。}</title>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <script src="//code.jquery.com/jquery-1.10.2.js"></script>
        <script src="lform.js"></script>
        <script>
            $(function(){
               $("#gLform").click(function(){
                   $("#gLform").Lform.Lget();
               });
               $("#gLform1").click(function(){
                   $("#gLform1").Lform.Lget(1);
               });
            });
        </script>
        <script>
        (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
        (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
        m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
        })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
        ga('create', 'UA-71682075-1', 'auto');
        ga('send', 'pageview');
      </script>
    </head>
    <body>
        <h1>form送信プラグイン{BODYの中に複数のフォームが有る場合、指定したフォームを送信させる。}</h1>
        <input type="button" id="gLform" value="送信する"><input type="button" id="gLform1" value="送信する">
        <p id="lsform"></p>
        <form action="https://yahoo.co.jp" method="GET">
        </form>
        <form action="https://google.co.jp" method="GET">
        </form>
        <form action="https://www.msn.com/ja-jp" method="GET">
        </form>
    </body>
</html>

タグ

'cssform', 'GoogleAnalyticsObject', AM, body form, body&gt, button, data-lfm, DOCTYPE html&gt, form action, form&gt, gLform1, head&gt, input type, Lform.Lget, lsform, m.parentNode.insertBefore, s.getElementsByTagName, script src, script&gt, title&gt,

JSプラグインを作ってみた、今回はANA旅割JSプラグイン(またかよ)。

2017.09.30

Logging

JSプラグインを作ってみた、今回はANA旅割JSプラグイン・・・。
またかよと言われそうなのですが、試しに作ってみたりした。
本当はもっと簡略化できるのだけど、あえてこれを参考に作る人にも
ある程度、参考になるかなというぐらいの代物です。
昨日、datetimepickerというプラグインを仕事で見ていて最初、取り出し方などが
わからず試行錯誤してなんとか取り出すことが出来たのですが、これでは駄目だな。
前、なんか書いていたけど使わなかったらやはり忘れてしまうので
本日から一週間ぐらい、しょぼいJSプラグインを何個かリリースします。
大量のコードは仕事終わってから書くことは出来ないかもしれないけれど
サンプルプログラム程度は簡単にコードが書けるように
しておかないと行けないなという気持ちもあります。
そしてjQueryから自前のjQueryプラグインへ
仕事でもシフトしていくつもりです。
やはりコチラのほうが慣れれば楽かなと感じます。
トイウコトでANA旅割JSプラグインは
こちらからダウンロードを行なってください。
ちなみに作りかけなので、これから再編集してもらっても
構いません。なんせ適当ですから:)
https://zip358.com/tool/ana_js_p/

(function($){
    var ana_tabai = {
        ana75:function(d){
            var dd = [];
            dd[0] = d[0];
            dd[1] = d[1];
            dd[2] = d[2];
            var dt = new Date(d[0],d[1],d[2]);
            dt.setFullYear(dt.getFullYear());
            dt.setMonth(dt.getMonth());
            dt.setDate(dt.getDate()-74);
            dd = mumu(dt.getFullYear(),dt.getMonth(),dt.getDate(),dd);
            return [dd[0] + "年",dd[1] + "月",dd[2] + "日"];
        },
        ana55:function(d){
            var dd = [];
            dd[0] = d[0];
            dd[1] = d[1];
            dd[2] = d[2];
            var dt = new Date(d[0],d[1],d[2]);
            dt.setFullYear(dt.getFullYear());
            dt.setMonth(dt.getMonth());
            dt.setDate(dt.getDate()-54);
            dd = mumu(dt.getFullYear(),dt.getMonth(),dt.getDate(),dd);
            return [dd[0] + "年",dd[1] + "月",dd[2] + "日"];
        },
        ana45:function(d){
            var dd = [];
            dd[0] = d[0];
            dd[1] = d[1];
            dd[2] = d[2];
            var dt = new Date(d[0],d[1],d[2]);
            dt.setFullYear(dt.getFullYear());
            dt.setMonth(dt.getMonth());
            dt.setDate(dt.getDate()-44);
            dd = mumu(dt.getFullYear(),dt.getMonth(),dt.getDate(),dd);
            return [dd[0] + "年",dd[1] + "月",dd[2] + "日"];
        },
        ana28:function(d){
            var dd = [];
            dd[0] = d[0];
            dd[1] = d[1];
            dd[2] = d[2];
            var dt = new Date(d[0],d[1],d[2]);
            dt.setFullYear(dt.getFullYear());
            dt.setDate(dt.getDate()-27);
            dt.setMonth(dt.getMonth());
            dd = mumu(dt.getFullYear(),dt.getMonth(),dt.getDate(),dd);
            return [dd[0] + "年",dd[1] + "月",dd[2] + "日"];
        },
        ana21:function(d){
            var dd = [];
            dd[0] = d[0];
            dd[1] = d[1];
            dd[2] = d[2];
            var dt = new Date(d[0],d[1],d[2]);
            dt.setFullYear(dt.getFullYear());
            dt.setDate(dt.getDate()-20);
            dt.setMonth(dt.getMonth());
            dd = mumu(dt.getFullYear(),dt.getMonth(),dt.getDate(),dd);
            return [dd[0] + "年",dd[1] + "月",dd[2] + "日"];
        }
    };
 $.fn.tabiwari = {
     ana:function(d){
        if(d.split("-").length==3){
            var a = d.split("-");
            console.log(a);
            s = [ana_tabai.ana75(a),ana_tabai.ana55(a),ana_tabai.ana45(a),ana_tabai.ana28(a),ana_tabai.ana21(a)];
            var str="";
            var days = [75,55,45,28,21];
            for(var i = 0;i < s.length;i++){
                str += days[i] + "days ::" + s[i] + "<br>";
            }
            return str;
        }else{
            return "no!! :( ";
        }
    }
 }
})(jQuery);
function mumu (y,m,dy,dd){
    console.log(dd);
    dd[0] = !m?dd[0]:y;
    dd[1] = !m?dd[1]:m;
    dd[2] = !m?dy:dy;
    return dd;
}
<!doctype html>
<html lang="ja">
<head>
  <meta charset="utf-8">
  <title>zip358.com:ANAJSぷらぐいん</title>
  <meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=10.0, user-scalable=yes">
  <link rel="stylesheet" href="//code.jquery.com/ui/1.11.4/themes/smoothness/jquery-ui.css">
  <script src="//code.jquery.com/jquery-1.10.2.js"></script>
  <script src="ana_tabiwari.js"></script>
  <script>
      $(function(){
          $("#ana_input").change(function(){
            var str = $("#ana_input").tabiwari.ana($(this).val());
            $("#ana").html(str);
          });
      });
  </script>
  <script>
  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
  })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
  ga('create', 'UA-71682075-1', 'auto');
  ga('send', 'pageview');
</script>
</head>
<body>
    <input id="ana_input" type="date">
    <div id="ana">
    </div>
    <a href="ana_tabiwari.js" download="ana_tabiwari.js">ANA旅割JSプラグインダウンロード</a>
</body>
</html>

 

タグ

AM, ANA旅割JSプラグイン, B06XNQCW7B, console.log, d.split, datetimepicker, dt.getDate, dt.setDate, fn.tabiwari, function, jquery, new Date, return dt, return str, s.length, var ana_tabai, var days, var dt, var str, トイウコト,

バーチャルホストでPHPのバージョン分けて起動する方法完結。

2017.09.28

Logging


バーチャルホストでPHPのバージョン分けて起動する方法完結。
うまくいかない状態の理由がわかりました。
パスが間違っていたということで昨日からタイムゾーン設定がうまく機能しなかった。
ただそれだけでした・・・とほほ?(´・ω・`)
php-cgi + ソースなどと検索するとインストール方法などが
掲載しているサイトがあるので、ググってみると参考になります。
今回、PHP5.6のバージョンをダウンロードしてきてコンパイルして
うまくファイルが作れる場合は上記のような画面が表示されます。
それ以外はエラーですので
その後、make && make install を行なっても反映はされません。
こういう感じで記述するとうまくいきますよ。
あくまでも例ですのでご自分の環境にパスなどは変更を
行なってください。

./configure  \
  --prefix=/home/www/php-5.6.31  \
    --with-config-file-path=/home/www/php-5.6.31 \
    --with-config-file-scan-dir=/home/www/php-5.6.31 \
    --enable-mbstring \
    --enable-zip \
    --enable-bcmath \
    --enable-pcntl \
    --enable-ftp \
    --enable-exif \
    --enable-calendar \
    --enable-sysvmsg \
    --enable-sysvsem \
    --enable-sysvshm \
    --enable-wddx \
    --enable-mbregex \
    --with-openssl \
    --with-mysql \
    --with-mysqli \
    --with-pdo-mysql \
    --with-mysql-sock=/var/lib/mysql/mysql.sock \
    --with-curl \
    --with-mcrypt \
    --with-iconv \
    --with-gmp \
    --with-gd \
    --with-jpeg-dir \
    --with-png-dir \
    --with-jpeg-dir=/home/www/php-5.6.31/img/jpeg \
    -with-freetype-dir=/home/www/php-5.6.31/img/freetype
<Directory "/home/www/cgi-bin">
    AllowOverride All
    Options FollowSymLinks
    Order allow,deny
    Allow from all
</Directory>
Action php-cgi-5.6.31 /cgi-bin/php-cgi-5.6.31
<Directory "/home/www/html/home.site">
    Options +ExecCGI
    AddHandler php-cgi-5.6.31 .php .html
</Directory>

シンボリックリンクなどの設定は割愛します。
また、コンパイルするとbin/の配下にphp-cgiファイル出来ますので
そちらとシンボリックリンクさせて無いといけませんのでご注意を!!
そしてvim /etc/httpd/conf/httpd.confでCGIが使用出来るように設定しているかも
チェックが必要となります:D
その他・・・注意事項
PHPの解凍フォルダのパーミッションの権限をApacheへ
seLinuxを無効化しているかなどのチェック。
以上、まとまりのない設定方法のアドバイスになりました・・・が
これで以上となります。
分かっている人にはおそらく伝わる内容だと思います。

タグ

Action php-cgi-5.6.31, AddHandler php-cgi-5.6.31, Allow from all, AllowOverride All, AM, Directory&gt, enable-calendar, enable-mbregex, enable-mbstring, enable-sysvmsg, enable-sysvsem, enable-sysvshm, Options FollowSymLinks, php-5.6.31, with-config-file-path, with-config-file-scan-dir, with-freetype-dir, with-jpeg-dir, with-mysql-sock, with-pdo-mysql,

php:3項演算子の使い方。

2017.09.16

Logging


3項演算子の使い方を解説しているサイトは
数多くあるので割愛します。プログラミングの記述例を貼っときます。

<?php
$a=10;
$ret = $a>9 ? "A9":"B9";
print($ret);
//A9

このような感じで3項演算子を使います、これあまり複雑怪奇な
書き方をしなければ自分は普通にコーディングに書いて良いような気がします。
トイウコトで3項演算子を使うと便利かな。
コードって書かなくなると何ていうか、自分の場合、苦労して覚えていないので
あっという間に忘れ去ってしまうですけどね。この頃、javascriptの記述や挙動がいまいち
つかめていない、javaとか言うものを全然勉強していないからなんだろうなと感じる事が多々あり。
もっと使う機会を増やしたいのだけど、この頃、PHPオンリーなので
何とも・・・、他人のコード見て自分もガリガリとコードを書きたいなと
思うのですけど、いまの自分が任されている仕事にゴリゴリ書くことが必要不可欠かと
言えばそうでもないですよね。
他人が書いたコードの修正や機能追加ってのは
どうしてもやりづらく、特にいわゆる普通のコードで
書いている場合、手直しが面倒くさい。普通のコードには
普通のコーディングしないと何だか、無駄な処理が増えるだけだなと。
逆に洗練されたコードは余分なものが殆どないので
下手に触ると挙動が変になるというデメリットもあるのですがね。
会社で難コーディングが書けない分、自宅でいろいろコードを書かないと
進歩がなさそうな気がします。その書くことに時間をこの頃使っていない気がします。
ちなみに自サイトのブログ以外のサイトを
昨日、映画を観終わって帰宅後リニューアルしました。
 
 

タグ

$a&gt, 3項演算子, A9, AM, B9, javascript, php, ret, コード, トイウコト, プログラミング, やさしい教本, 他人, 使い方, 手直し, 挙動, 書き方, 記述, 難コーディング,

テンソルフロー的な画像解析。

2017.09.03

Logging


Tensorflow(テンソルフロー)的な画像解析をやってみました。
コードはオープンで公開する程のものではないので仕組みだけ説明します。

python classify_image.py --image_file test11.jpg

Pythonのモジュールの上記(classify_image.py)のファイルをパラメータ渡しでキックしているだけです。
モジュールはグーグルさんが書いているのを貰ってきただけです、何とも簡単に
画像を解析してくれます。ここまでたどり着くまでには長い道のりがありましたが
手順を教えます。
まず、Tensorflowをインストールして置きます。これはググれば見つかります。
TensorBoardで可視化とかしていませんので割愛します。インストールして
任意の場所に下記のモジュール(models repo)をダウンロードします。
https://www.tensorflow.org/versions/master/tutorials/image_recognition

ダウンロードしたファイルを配下に画像を置けばおわり、その名前と共にファイルをキックして
あげるだけでOKのはずが・・・・。OKじゃねぇ、そう何か動かない。
構文間違っているじゃねぇみたいなエラーを吐くのでファイルを修正します。

この配下に「classify_image.py」ファイルがありますのでこちらを修正します。
紫で囲っている部分を削除してしまいましょう。実際、自分は削除はしませんでした。
あまりPythonの構文を分かっていないので、コマンドラインからは不必要かもしれないけれど・・・。
WEB上で動かす(呼び出す)際は必要かもしれないのでコピってコメントアウトしてます。
コメントアウト後、PHPの関数、execを使い外部コマンドでPythonを実行してみると動きます。
動いた時は感動します。ひとりニヤニヤしてました。
返却されたものを表示しているだけ・・・なんですけどね。
https://www.youtube.com/watch?v=96-5oYVi4Pg
サンプルサイトはこちらです。
http://zip358.site/labo/

タグ

AM, exec, image_file test11.jpg, models repo, python classify_image.py, TensorBoard, tensorflow, エラー, グーグル, コマンドライン, サンプルサイト, テンソルフロー, テンソルフロー的, パラメータ渡し, ファイル, モジュール, 下記, 外部コマンド, 構文, 画像解析, 配下, 関数,

無名関数、技術初歩垂れ流し。

2017.08.19

Logging


無名関数、技術初歩垂れ流しときます。
わからない人はわからないかもしれませんが、
分かる人にはわかるという・・・何ともそのまま何ですけどね。
無名関数を使うにあたってキーになるのは USEとcall_user_funcかな。
これさえ覚えとくと便利かもしれないなと思います。
習うより慣れよということでソースコード貼っときます。
じぶんの脳内は文字を読んで理解しているタイプではないので
図や絵柄など空間的な感覚でアルゴリズムを覚えています、なので
仕様書とか読んでもあまり頭に入ってくることがないのですね。
それよりかは、トライアンドエラーを繰り返して覚えるか、口頭などで
事細かに説明してもらったほうが、頭に入ってくることが多いです。
 

<?php
//無名関数1
$q = function($s){
    $ss = $s."FF15!!]]";
    return $ss;
};
define("ff",$q("[[ now on sale "));
//var_dump(ff);
//無名関数2
$hoge = ff;
$f = function() use ($hoge){
    return explode(" ",$hoge);
};
//var_dump($f());
//無名関数3
function mumei(){
    $m = 2222;
    $d = 22;
    return function() use ($m,$d){
      $a = $m * $d;
      return $a;
    };
}
$a = mumei();
//var_dump($a());
//無名関数4
if(is_array($s =
    call_user_func(function(){
        $r = [];
        for($i=0;$i<10;$i++){
            $r[$i] = $i;
        }
        return $r;
    })
)){
    //var_dump($s);
}
print(implode("<br>",explode("\n",'
string(23) "[[ now on sale FF15!!]]"
array(5) {
  [0]=>
  string(2) "[["
  [1]=>
  string(3) "now"
  [2]=>
  string(2) "on"
  [3]=>
  string(4) "sale"
  [4]=>
  string(8) "FF15!!]]"
}
int(48884)
array(10) {
  [0]=>
  int(0)
  [1]=>
  int(1)
  [2]=>
  int(2)
  [3]=>
  int(3)
  [4]=>
  int(4)
  [5]=>
  int(5)
  [6]=>
  int(6)
  [7]=>
  int(7)
  [8]=>
  int(8)
  [9]=>
  int(9)
}
')));

タグ

$i&lt, AM, array, br&gt, call_user_func, function mumei, hoge, implode, int, now on sale FF15, return explode, return function, string, var_dump, アルゴリズム, トライアンドエラー, 仕様書, 技術初歩垂れ流し, 無名関数,

階層ツリーの表示非表示切り替え、無限回廊。

2017.08.19

Logging


仕事で階層ツリーの無限回廊に対応できるコードを書くことになった?
コードは記載しませんがdemoサイトはUPしますね。
無限回廊を作るのは、再起処理が出来ないとおそらく作れません。
表示非表示に切り替える方法も再起処理が一部入っています。
demoサイトでは4階層まで?しか無いのですが
これを5階層にしても耐え得ることが可能です。
demoサイトのソースコードが読めれば
改修することも可能かと思います、ちなみにこの方法より
もっと良い方法がアレばそちらを採用したいです、我こそは
という方、ツイッターのダイレクトメールにご意見ください。
https://twitter.com/zip358com
今回の仕事の案件ではパラメータ有り無しでページを動的に切り替えを
行わないといけないのです。なので・・・そういう事にも耐え得る事のできるため
クリックした時点の$(this)をパラメータとして投げれないものかと考えたのですが
いろいろググってみたものの、それらしきサイトは見つからなかったので諦めました。
階層ツリーの無限回廊とか・・
案外簡単に出来ると思いがちですが、ちょっとテクが必要になります。
ちなみに階層ツリー表示のコードは再起処理をするので30行程度なんですけどね。
じぶんは再起処理、大好物なんですね。
あまりこういうコードは書かないから、頭の体操にはなるかなと
思います。
最後にdemoサイトのURLを載せときますね。
 
https://zip358.com/tool/this/
(何を書いているかわからない人、まずは動作させてみてください。)

 

タグ

AM, demoサイト, アルゴリズム, アルゴリズム図鑑, コード, じぶん, ソースコード, ダイレクトメール, ツイッター, テク, パラメータ有り無し, 再起処理, 大好物, 方法, 案件, 無限回廊, 表示非表示切り替え, 階層ツリー, 階層ツリー表示,