filament[フィラメント:細糸]というLaravelのアレ。

2023.07.26

Logging

おはようございます、filament[フィラメント:細糸]というLaravelの管理画面とかが作れてしまうライブラリの紹介。これを知ったのは会社のMTGかも知れませんが、再度じぶんでも調べてみた結果。かなり使えるライブラリです。

New Course Laravel with Filament PHP – Employee Management #shorts

前前前会社で独自フレームワークで作っていた部分をこれを使用するとあっという間に作り上げることが出来るのではないだろうかと思っています。また、これを使用して自分のサービスを作ることも簡単とまではいかないものの、時間短縮にはかなりなると思います。

商業利用可能なMITライセンスです、これはとても有り難いなって思います、またプラグインとかもあるので、本当に良い感じですね。トイウコトデ、本当に前前前会社で作っていたBASEのようなサービスを作ってみたいなって思っています。

休日の合間に少しずつ作りたい。基本土曜日は一週間分のブログ記事などを書き溜める作業をしていたり、午前中までは大体、家でコード書いたりしているのでその作業にサービスを作る作業を追加したいなって思っています。

因みに午後からはお出かけしたりするタイプです、特に夏は外に出ていかないと損している気がします、こんなに晴れているのに出掛けないというのは勿体ないと思う性分なんです。

それではまた~。

著者名  @taoka_toshiaki

※この記事は著者が40代前半に書いたものです.

Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki

OFUSEで応援を送る

タグ

base, filament, Laravel, LIST, MITライセンス, MTg, PL6tf8fRbavl39r1g14lgYjPOH6jrjSECv, あっという間, トイウコトデ, フィラメント, プラグイン, フレームワーク, ライブラリ, 休日, 再度じぶん, 前前前会社, 勿体, 合間, 性分, 細糸,

Photo by eberhard grossgasteiger on Pexels.com

SUZURIとBASEでTシャツを売っていく、質重視ならSUZUIかな?

2022.06.19

Logging

おはようございます🌤。お昼ですね、眠いですがこれから数時間を使用して一週間分の記事を書いていきます。

SUZURIBASEでTシャツを売っていきますが、途中からTシャツなどはSUZURIで販売しデジタル商品はBASEで販売する形を取ります、尚、BASEの仕様が変わってもっと質の良いTシャツが作れるようになれば、話は別ですけどね。因みに一枚、商品が売れても利益は900円ぐらいです。

だから、最低でも毎月900円*200枚のTシャツが売れてもらわないと生活できないです。宣伝活動用のアカウントを作ろうとも考えています。本垢であまり宣伝ばかりしているとウザいとも思われるので、線引が難しいですね。

毎日、Tシャツを世に出せるかどうかは分からない・・・。SUZURIではクスってなるようなTシャツが売れているような気がしますが、そういうTシャツは自分には作れそうにないのでPCヲタ系に受けそうなTシャツが作ればなって思っています。

ITエンジニアって結構お金持っているので、少し高くても買ってくれると思いたいですね😭

トイウコトデ、今後とも宜しくお願い致します。

因みに来月の15日に異業種を退社することになりましたのでお知らせします。今後のことに関しては7月16日に記事として書きます。

著者名  @taoka_toshiaki

※この記事は著者が40代前半に書いたものです.

Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki

OFUSEで応援を送る

タグ

200, 900, base, PC, SUZUI, SUZURI, アカウント, お昼, クス, これ, , シャツ, デジタル, ヲタ, , 一枚, 仕様, 使用, , 利益, 商品, , 宣伝, , , 最低, , 毎日, 毎月, , 活動, 生活, 線引, 自分, 記事, , 販売, , 質重視, 途中,

プログラムを始めるきっかけになったアルゴリズム。

2021.05.31

Logging

プログラムを始めるきっかけになったのは、高校時代にひょんなことから情報処理の部活を見学に行った事がきっかけになっている。動画にあるような『枠の中を動き回る円のアルゴリズムを作ってみよう』という事が部活の先輩から出題された事が自分がプログラミングするきっかけだった、案外それが自分にあった事で今まで続いている。

プログラムを始めるきっかけになったアルゴリズム。

不思議なもので数十年も独学や仕事でプログラミングするとは思っていなかった。最初はN88BASICなどでこのプログラミングを書いていた。最初はオブジェクト指向言語なんて知らなかったのだけど、いつしかオブジェクト指向でプログラミングを書くことが多くなっている。ソースコードは人により違うのでひとの書いたプログラミングは読みにくいなどと言われる事もあるけど、他人のソースコードを見ることは結構大事なことだと思います。何故か?

自分では思いつかないコードを知ることになったり技を知ることになるので、どんなコードでも勉強になりますよ。てな訳です。

https://zip358.com/tool/line-line/

	let x = [40,0,30];
	let y = [0,40,30];
	let xp = [5,5,5]; 
	let yp = [5,5,5];
	let color = ["rgba(255,0,255,0.8)","rgba(255,255,0,0.8)","rgba(0,0,255,0.8)"]
	let cn = function(element,color,bx,by){
		var context = element.getContext( "2d" ) ;
		context.beginPath () ;
		context.arc((bx), (by), 5, 0 * Math.PI / 180, 360 * Math.PI / 180, false ) ;
		context.fillStyle = color;
		context.fill() ;
		context.strokeStyle = "purple" ;
		context.lineWidth = 2 ;
		context.stroke();
	};
	setInterval(() => {
		for(a = 0 ;a < x.length;a++){
			let base = xy(a);
			cn(document.getElementById("c"),color[a],base[0],base[1]);
		}
	},1);
	// setInterval(()=>{
	// 	let element = document.getElementById("c");
	// 	var context = element.getContext( "2d" ) ;
	// 	context.clearRect(0, 0, context.canvas.clientWidth, context.canvas.clientHeight);
	// },500);

	function xy(a){
		xp[a] = x[a] > 490 || x[a] < 0 ?xp[a]*-1:xp[a];
		yp[a] = y[a] > 440 || y[a] < 0 ?yp[a]*-1:yp[a];
		x[a]=x[a]+xp[a];
		y[a]=y[a]+yp[a];
		return [x[a],y[a]];
	}

著者名  @taoka_toshiaki

※この記事は著者が40代前半に書いたものです.

Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki

OFUSEで応援を送る

タグ

base, bx, cn, context.arc, context.beginPath, context.clearRect, context.fill, context.fillStyle, context.lineWidth, context.stroke, context.strokeStyle, function, getElementById, Math.PI, quot, quot;rgba, setInterval, xp, xy, yp,

まいど?ショップ開設しました。

2021.03.15

Logging

まいど?ショップ開設しました。開設した理由は旨旨飯が食べたいからです、、、いや違います。収入源を確保していきたいからです。スズリというGMOの開発したショップ開設サービスを使用しています。当初はBASEで物を売ろうとBASEショップのTシャツアドインなどを試しましたが、画像の取り込みが綺麗にできていなくて劣化するので諦めました。いろいろ探していたら、スズリというサービスに行き着いたのです。因みに商品が売れても全額、収入にはならないのです、300円から自由に自分の取り分が設定できます。値段を上げると商品も高くなります…。

https://twitter.com/zip358com/status/1371192167864012801

トイウワケデ、毎日1商品はUPしていくつもりでいます。作った商品はツイートします、気に入った商品があればご検討くださいませ。なお、こことは違うサイトを使用しデジタル商品も売っていくつもりでいます。

https://twitter.com/zip358com/status/1371200980176539650

最後に自分のショップのURLを貼っときますね。

https://suzuri.jp/zip358

著者名  @taoka_toshiaki

※この記事は著者が40代前半に書いたものです.

Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki

OFUSEで応援を送る

タグ

, 300, base, GMO, UP, url, アドイン, ここ, ご検討, サービス, サイト, シャツ, ショップ, スズリ, ツイート, つもり, デジタル, トイウワケデ, 使用, 値段, 全額, 劣化, 収入, 取り分, 商品, 当初, 最後, 毎日, , 理由, 画像, 確保, 綺麗, 自分, 自由, 設定, 開発, 開設, ,

shopifyやBase、EC-CUBEどれが良い??

2020.12.07

Logging

shopifyとBase、EC-CUBEなど簡単にECショップが開設できるサービスが乱雑していますが、どれが良いだろうかと悩んでいる方もいると思うので、簡潔に回答しますとどれでも良いです??。shopifyでは多国籍に販路が増やせるというメリットはあるものの、shopifyは月額費用が発生しますし、最低ランクでは多国籍には対応していないので結局の所、日本だけで商売するというのなら断然、Baseの方が使いやすいです。そして後からshopify使いたいなと思ってからでも遅く有りません。インポート機能があるので商品はすぐに登録できるようになっています。

いろいろ調べていくうちに、EC-CUBEが一番良いじゃないかと思っています。上記のshopifyとBaseなどは簡単にサイトが開設できる反面、ゴリゴリとオリジナリティを持つことが面倒(独自デザインは可能です)、そして何よりIPアドレスで、どのサービスで運営されているのかが分かってしまうところが一番、SEO的にはよろしくない。確かに決済などには信用されるかもしれませんが微妙ですね。

shopifyとBaseしか選択しない場合は、まずはBaseで始めてみて、収益化が出来そうならshopifyに乗り換えるでも遅くないと思います。shopifyはYOUTUBEとの連携する話も出ているのですが、それで収益化が出来る店舗は今まで売上が出ている会社だと思います。

EC-CUBEのマイナス点はオープンソースで運営する場合、ソースコードなどがオープンになる点です。sourceをクローズドで運営したい場合は、EC-CUBEを購入しないといけない点です。1ライセンス、26万円ぐらいします。因みに最新はEC-CUBE4ですが来年あたりにEC-CUBE5がおそらくリリースされます。これがEC-CUBEのマイナス点になります、サイトをゴリゴリとカスタマイズしているとEC-CUBE5に移行するのが結構大変になるということです。

EC-CUBEもクラウドサービスを出していますが、若干お高いお値段かと思います。コレだったら、自分で導入した方がお安いかと思います。

最終的にどのサービスが良いか?
社内にIT人材がいる場合はEC-CUBEが良いでしょう、予算もない場合はBaseから始めるのが安全です。月額の固定費も払えるよという場合はshopifyが良いでしょうというのが自分の見解です。

なお、時代はリスティング広告とSNS活用です、SEOは後付にかなり前からなっているようです、サイトまで誘導してもサイトがしっかりしているサイトでないと中々、売上には繋がらないと思います。なので、やはりどこかでデザイナーにサイトをデザインしてもらうことをオススメします。これからはSNSの地道な努力が大事になると思います、やはり人と人の繋がりだと思います。ネットはそれが躊躇に現れると思います。

因みに自分はshopifyとパートナー契約を結びました、誰でも今の所、パートナー契約を結べるようですね。

著者名  @taoka_toshiaki

※この記事は著者が40代前半に書いたものです.

Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki

OFUSEで応援を送る

タグ

base, EC, EC-CUBE, IP, Shopify, アドレス, いろいろ, インポート, うち, オリジナリティ, こと, サービス, サイト, ショップ, デザイン, どれ, メリット, ランク, 上記, 乱雑, 反面, 可能, 商品, 商売, 回答, 多国籍, 対応, , , , 日本, 最低, 月額, 機能, 発生, 登録, 簡単, 簡潔, 結局, 販路, 費用, 運営, 開設, 面倒,

ECサイトのBASEショップを独自ドメインに!

2020.09.21

Logging

ECサイトのBASEショップを独自ドメインにする方法を書いていきます。まずはお名前ドットコムでドメインを取得します。下記の動画で解説していますのでそちらを参照ください。もし動画のリンクが切れていた場合、YOUTUBEで『お名前.com ドメイン取得』などとググってみてください。ドメインの購入方法が説明されている動画があると思います。

お名前.comのドメイン取得方法【Whois情報公開代行に注意】

次にドメインが所得したあと、DNSの設定よりサブドメイン、『wwwか任意の名(shopなど)』ドメインのサーバ住所(在処)をBASEショップのサーバ住所に変更しなくてはならない為、ブルダウンメニューからCNAMEレコードを選択し『cname.thebase.in』と入力する必要があります。また左端の入力部分にはサブドメイン名を入力してください。

下記の画像を参照してください、手順を参考にしてサブドメインとCNAMEの値を設定し設定ボタンを押してください。(設定する値はwwwか任意のサブドメイン名となり、CNAMEの値はcname.thebase.inになります。)

最後にBASEサイトにログインし上記で設定したサブドメイン(wwwか任意の名(shopなど))を下記の動画を見本に申請してみてください。申請後、数時間で独自ドメインがECサイトで表示されている事が確認できると思います。

ECサイトbaseを独自ドメインに!

著者名  @taoka_toshiaki

※この記事は著者が40代前半に書いたものです.

Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki

OFUSEで応援を送る

タグ

base, CNAME, com, DNS, EC, in, shop, thebase, www, youtube, あと, サーバ, サイト, サブ, サブド, ショップ, そちら, ダウン, ドットコム, ドメイン, ドメイン名, プル, ボタン, メニュー, リンク, レコード, 下記, 任意, 住所, , 入力, 動画, 参照, 参考, 取得, , 名前, 在処, 場合, 変更, 左端, 必要, 所得, 手順, 方法, , 画像, 解説, 設定, 説明, 購入, 選択, 部分,

ショッピファイ(Shopify)という黒船。

2020.09.16

Logging

ECサイトを運営されている方は知っている方もいるかと思いますが、誰でもかんたんにグローバルなECサイトが作れるショッピファイ(Shopify)が話題です。この頃?、日本語にも対応したみたいです、ただしAPIのドキュメントは日本語にはまだ対応していませんが、翻訳を介せばそれほどわからないこともないかもしれません。

ショッピファイって何なんをもっと噛み砕くと、日本のBASE(ベイス)やGMOのカラーミーショップなどのインターネット上で個人や企業がお店が開けるものだと思っていただけたら良いかなと思います。ショッピファイの優秀なところは世界へ展開出来るということです。

BASEを1分で体感しよう!

BASEなどにある決済機能なども搭載されていますし、CSVの流し込みにも対応しています、なのでこれからECサイトを運営される方は自社のECサイトとしてBASEとショッピファイを運営し、楽天モールやYahoo!ショッピングなどの運営することにより、後発でも利益を得ることは十分可能かと思います。

尚、いま楽天モールなどを使わずにBASEやショッピファイまたはECCUBEなどを使用し自社のECサイトを運営することが流行っているそうです。

ショッピファイで世界へ展開したいという方は、まず下記のショッピファイのブログを読んでみてはどうでしょうか、ショッピファイの構築手順が動画とテキストで解説しています。

https://www.shopify.jp/blog/start-onlinestore

ショップを、次のステップへ。Shopify

著者名  @taoka_toshiaki

※この記事は著者が40代前半に書いたものです.

Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki

OFUSEで応援を送る

タグ

16, 8, amp, API, base, com, CSV, EC, GMO, https, jPkKF, Shopify, watch, www, Xx, youtube, インターネット, お店, カラーミーショップ, かんたん, グローバル, こと, これ, サイト, ショッピファイ, ドキュメント, ところ, ベイス, もの, 世界, 企業, , 個人, 優秀, 対応, 展開, 搭載, , 日本, 日本語, 機能, 決済, 翻訳, 自社, 話題, , 運営, , 黒船,

画像をタイル状に分離して一括ダウンロードさせるジェネレーター

2019.09.07

Logging

画像をタイル状に分離して一括ダウンロードさせるジェネレーターを
作ってみました。画像は自動的に削除されます?
あることをすれば他人の画像がアップした画像も削除されます。
ちなみに一括ダウンロードbuttonを押すと画像がサーバー上に保存され
強制ダウンロードが始まります。
動作はブラウザChromeオンリーです。
また一括ダウンロードを押すと複数のファイルを一括ダウンロードするか
どうかの問い合わせが表示されますので「はい」を
選択してください。尚、30秒以内に保存されていないファイルは
次々と削除されます。
サイトはこちらから
https://zip358.com/tool/demo5/index-14.html
ソースコードは下記になります。
ページ(base64生成+画像ダウンロード処理)

追記:zipファイルにより格納するように処理を変更しました。
参考にしたサイト:https://ex1.m-yabe.com/archives/4215

<!DOCTYPE html>
<!--[if lt IE 7]>      <html class="no-js lt-ie9 lt-ie8 lt-ie7"> <![endif]-->
<!--[if IE 7]>         <html class="no-js lt-ie9 lt-ie8"> <![endif]-->
<!--[if IE 8]>         <html class="no-js lt-ie9"> <![endif]-->
<!--[if gt IE 8]><!--> <html class="no-js"> <!--<![endif]-->
    <head>
        <meta charset="utf-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <title>画像分離してダウンロード:画像分離ジェネレーター</title>
        <meta name="description" content="画像分離してダウンロード:画像分離ジェネレーター">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <script src="../jquery/jquery-3.4.1.js"></script>
        <link rel="stylesheet" href="../bootstrap/css/bootstrap.css">
        <!-- Global site tag (gtag.js) - Google Analytics -->
        <script async src="https://www.googletagmanager.com/gtag/js?id=UA-71682075-1"></script>
        <script>
        window.dataLayer = window.dataLayer || [];
        function gtag(){dataLayer.push(arguments);}
        gtag('js', new Date());

        gtag('config', 'UA-71682075-1');
        </script>        
        <style>
            body{
                background-color: black;
                color: antiquewhite;
            }
            img{
                margin:10!important;
                padding:10!important;
            }       
            #container{
                width: 100%;
            }
            #container img{
                margin:10px;   
            }       
        </style>    
    </head>
    <body>
        <span id="bat"></span><a id="dl"></a>
        <input class="form-control" type="file"></input>
        <div id="container"></div>
        <script>
            $(function(){
                $("[type=file]").on("change",function(){
                    $('#container').html("");
                    $("#bat").html("");
                    console.log($(this));
                    if(!$(this).prop('files')[0].type.match(/[png|jpg|jpge|gif]/)){
                        alert("ファイル形式エラー");
                        return false;
                    }                        
                    var canvas = document.createElement('canvas');
                    var reader = new FileReader();
                    reader.onload = function(event) {
                        var image = new Image();
                        image.onload = function() {
                            sprite = {width:50,height:50};
                            canvas.width = sprite.width;
                            canvas.height = sprite.height;
                            var ctx = canvas.getContext("2d");                            
                            var x = 0;
                            for(var i=0; i*sprite.height<image.height; i++){
                                for(var j=0; j*sprite.width<image.width; j++){
                                    ctx.drawImage(
                                    image,j*sprite.width,i*sprite.height,
                                    sprite.width,sprite.height,
                                    0,0,
                                    sprite.width,sprite.height
                                    );

                                    var spriteElement = new Image;
                                    spriteElement.src= canvas.toDataURL();
                                    $('#container').append(spriteElement);
                                }
                            }
                            $("#bat").html("<input type='button' value='一括ダウンロード' onclick='bat_img()'>");
                        }
                        image.src = event.target.result;                       
                    }
                    reader.readAsDataURL($(this).prop('files')[0]);
                    
                });
            });

            function bat_img(){
                var data = [];
                for(var i=0; i< $("img").length;i++){
                    data.push({"base64":$("img").eq(i).attr("src"),"no":i});
                }
                $.ajax({
                    type: 'POST',
                    url: 'bat_img.php',
                    data:{"obj":data},
                    dataType: 'json'
                }).done(function(obj){

                    if(obj[obj.length - 1 ].chk=="ok"){

                        var link = document.getElementById("dl");
                        link.href = obj[obj.length - 1].zippath;
                        link.download = "zipimg.zip";
                        link.click();

                        var data2 = [];
                        for(var i = 0 ; i < obj.length ; i++){
                            if(i==0){
                                data2.push({Path:obj.path,no:obj.no,t:obj.t,"zipimgpath":obj[obj.length - 1].zippath});
                            }else{
                                data2.push({Path:obj.path,no:obj.no,t:obj.t});
                            }
                            
                        }

                       var del = function(){
                            $.ajax({
                                type: 'POST',
                                url: './bat_del.php',
                                data:{"obj":data2},
                                dataType: 'json'
                            });
                        };
                        del();
                    }
                    });
                }
        </script>
    </body>
</html>
<?php
$i=0;
foreach($_POST["obj"] as $key=>$val){
    $b64 = base64_decode(str_replace("data:image/png;base64,","",$val["base64"]));
    $no = (int)$val["no"];
    $t = time();
    $Path = "./bat_img/tmp/$t-$no.png.webp";
    $re = @file_put_contents($Path,$b64);
    if($re){
        $obj[$i]["chk"] = $re?"ok":"ng";
        $obj[$i]["name"] = "$t-$no.png.webp";
        $obj[$i]["path"] = $Path;
        $obj[$i]["no"] = $no;
        $obj[$i]["t"] = $t;
        $i++;
    }
}
$obj[--$i]["zippath"] = zipfile($obj);

print json_encode($obj);


function zipfile($obj){
    $ZipFiles = function($obj){
        foreach($obj as $key=>$val){
           $path[] = $val["path"];
        }
        return $path;
    };
    $Zip_Files = $ZipFiles($obj);
    $zipFileName = time().'_zipimg.zip';

    set_time_limit(0);
    $zip = new ZipArchive();
    $zipTmpDir = './tmp/zip/';
    $result = $zip->open($zipTmpDir.$zipFileName, ZIPARCHIVE::CREATE | ZIPARCHIVE::OVERWRITE);
    if( $result !== true ){ //エラー処理
      echo 'error!';
      exit();
    }
    foreach ($Zip_Files as $key=>$filepath) {
      $filename=basename($filepath);
    // ZIP圧縮するファイルを追加
    // ファイルパス・ファイル名としないと圧縮ファイルを解凍するとフルパスになる
      $zip->addFile($filepath,$filename); 
    }
    //ZIP 出力
    $zip->close();

    return $zipTmpDir.$zipFileName;
}
<?php

unlink($_POST["obj"][0]["zipimgpath"]);
foreach($_POST["obj"] as $key=>$val){
    $Path = $val["Path"];
    $no = (int)$val["no"];
    $t = (int)$val["t"];
    
    $cmd = function(){
        foreach(glob("./bat_img/tmp/*") as $file_name){
            $command = "rm -rf " . realpath($file_name);
            exec($command);
        }    
    };
    
    if(pathinfo($Path)["extension"]=="png" and preg_match("/bat_img\/tmp/",$Path)){
        if(is_file($Path)){
            sleep(30);
            unlink($Path);
        }else{
            $cmd();
        }
    }else{
        $cmd();
    }

}

著者名  @taoka_toshiaki

※この記事は著者が30代前半に書いたものです.

Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki

OFUSEで応援を送る

タグ

, 14, 30, 358, 4, 5, 64, archives, base, button, Chrome, com, demo, ex, html, https, index, m-yabe, tool, www, zip, アップ, オンリー, コード, こちら, こと, サーバー, サイト, ジェネレーター, ソース, タイル, ダウンロード, はい, ファイル, ブラウザ, ページ, 一括, 下記, 他人, 保存, 処理, 分離, 削除, 動作, 参考, 問い合わせ, 変更, 強制, 格納, 生成, 画像, 表示, 複数, 追記, 選択,

たった数行のプログラムでドツボにはまる。

2018.04.14

Logging

<?php
$command = "ls -m img";
exec($command,$val,$chk);
//imglist
$imglist = explode(",",implode("",$val));
if(is_array($imglist)){
    foreach ($imglist as $key => $value) {
        $img64[$key] = base64_encode(file_get_contents("img/".trim($value)));
        $path_parts = pathinfo($value);
        $path_parts['extension']=="jpeg"?"jpg":$path_parts['extension'];
?>
<div><a href="./img/<?=trim($value)?>"><?=$value?></a><br><img src="data:image/<?=$path_parts['extension']?>;base64,<?=$img64[$key]?>"></div>
<?php
    }
}
$obj["imglist"] = implode("\n\n",$img64);

ls -m というコマンドをPHPのexecという関数を使用し
画像リストを取得しようとしてどつぼにハマった・・・。
この関数、exec(“ls -m”)と書くと$valの中に配列として返却されるのだが、複数の配列に別れて返却される。なので一度、implodeを使用して一度、文字列に戻す必要がある。そしてカンマ区切りで再度、文字列分離する。

これでほっと一息つくとアウトだ!
配列化した値の前後に空白部分が入っていたり改行コードが入っていたりして画像を参照することが出来ないのだ。そのため、trim関数を使用して取り除く必要がある。

コマンドを使用して画像をリスト化して参照するメリットは何かと言えば数百枚の画像を列挙するときなどに高速で参照化することが出来るのだ。因みにコマンドでファイルの検索を行うという事なので本領発揮すると思います。

是非、お試しあれ。

著者名  @taoka_toshiaki

※この記事は著者が30代前半に書いたものです.

Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki

OFUSEで応援を送る

タグ

-Command, -m, , 39, 64, array, as, base, chk, contents, encode, exec, explode, extension, file, foreach, GET, gt, if, img, imglist, implode, is, jpeg, jpg, key, ls, lt, parts, path, pathinfo, php, quot, trim, val, value, ドツボ, プログラム, 数行,

FuelPHPをサクラレンタルサーバー共有で動かすには?

2016.07.14

Logging

FuelPHPをサクラレンタルサーバー共有で動かすには?
どうしたら良いのかを記述しときます。
\fuel\app\config\config.phpに記述されている’base_url’の所を
base_url’ ?=>’http://任意.com/’,かbase_url’ ?=>’任意の階層’にします。
オプションでいろいろと変更できる点はありますが、今回はスルーします。
FuelPHPの日本公式サイトを参照
次にルートの直下に.htaccessを作成し下記の内容を記述しアップロードを行なってください。

RewriteEngine on 
RewriteBase /public 
RewriteRule (.*) /public/$1

この段階ではルートにアクセスしても表示されません。表示させるためには
\public.htaccessの.htaccessファイルを一部変更してあげる必要があります。
まず、RewriteBase /publicを追加しOptions +FollowSymLinks -Indexesと
記載されている部分をコメントアウトする必要があります。
これらの事をするとルートURLでFuelPHPの初期の表示がされるようになります。

いろいろなサイトを拝見しましたが、結構設定を変更しないといけないよと書かれていますが、実際はコレだけの設定変更で表示することは可能です。ちなみに余談ですがオプション値のココだけは変更したら良いかなという
所を記載します。

	/**
	 * Localization & internationalization settings
	 */
	 'language'           => 'ja', // Default language
	 'language_fallback'  => 'ja', // Fallback language when file isn't available for default language
	 'locale'             => 'ja_JP.UTF-8', // PHP set_locale() setting, null to not set
	/**
	 * Internal string encoding charset
	 */
	 'encoding'  => 'UTF-8',
	/**
	 * DateTime settings
	 *
	 * server_gmt_offset	in seconds the server offset from gmt timestamp when time() is used
	 * default_timezone		optional, if you want to change the server's default timezone
	 */
	 'server_gmt_offset'  => 0,
	 'default_timezone'   => 'Asia/Tokyo',

著者名  @taoka_toshiaki

※この記事は著者が30代前半に書いたものです.

Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki

OFUSEで応援を送る

タグ

, App, base, com, config, fuel, FuelPHP, htaccess, http, ON, php, public, Rewrite, RewriteBase, RewriteEngine, RewriteRule, url, アクセス, アップロード, いろいろ, オプション, サーバー, サイト, さくら, スルー, ため, ファイル, ルート, レンタル, 一部, 下記, 今回, 任意, 作成, 公式, 共有, 内容, 参照, 変更, 必要, , 日本, 段階, , 直下, 表示, 記述, 階層,