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

2021.03.15

Logging

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

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

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

https://suzuri.jp/zip358

タグ

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

facebookで自分の名前を検索すると!!

2021.03.04

Logging

facebookで自分の名前を検索(ローマ字)するとゲームアプリをシェアしている画像をUPしているのが出てくる。数年前からずっとこういう事を行っているのだけど、どうなんかなぁって思います。これを違反ですよと報告する人もいないので、こんな状態が続いているのだろうけど・・・。通報してもなんだか、自分には効力がないみたいなので、誰かが一斉にフェイスブックに通報してくれることを待っている状態です。ちなみにYOUTUBEも同じことをやっているのですね。同姓同名で経歴まで同じやつっているのかと・・・。

何年もやり続けるタイプなので、何とかしてほしいなとか思います。

タグ

Facebook, UP, youtube, アプリ, ゲーム, こと, これ, シェア, タイプ, フェイスブック, ローマ字, , , 何年, 効力, 同名, 同姓, 名前, 報告, , 検索, 状態, 画像, 経歴, 自分, 誰か, 通報, 違反,

Illustratorを2年目ぐらい。

2021.01.19

Logging

Illustratorを使いだして2年目ぐらいですが、あまり技術的には成長していないのかもしれないですが、自分が頭の中で想像したものが徐々に具現化できるようになってきたように思えますが、もっと洗練されたものが作れるように慣れればと思っています。ただ、自分は参考書は一冊だけしかなく。それもあまり使えないなと思って、最初パラパラとめくってあとは放置しています。なのでイラレも独学で技術を身に着けていってます。これをこうしてアレをこうしては偶然の産物なのですが、2年も使っているとなんとなく感覚でわかってきます。

でも、まだまだ素人デザインから抜け出せないのは、技を調べたりしていないところだと思います。今ではYOUTUBEなどで技術を惜しみなく教えている動画があります。そういう動画を見ることにより、技は覚えることはできるのにそれをしていないのは、怠けなのかもしれないなと思います。

上の画像が駆け出しのときに制作したものです。次にこれが時間が経過して制作した画像です。最後にこれがいまの画像になります。こう見ると徐々に制作技術が上がってきたのかもしれないです。

タグ

2, illustrator, youtube, あと, アレ, イラレ, こと, これ, それ, デザイン, とき, ところ, パラパラ, もの, , , , 偶然, 具現, 制作, 動画, 参考書, 想像, 感覚, 成長, , 技術, 放置, 時間, 最初, 洗練, 独学, 産物, 画像, 素人, 自分, , 駆け出し,

PowerShellであれ使えるだな。

2020.10.15

Logging


wget "ダウンロードするファイルのURL" -OutFile "保存先ファイルパス"

あれというのはwgetというダウンロードするときなどに使用するcommandです。リナックス系を使用している人には使っている方も多いかもしれない。そんな素敵なcommandがウィンドウズ10のPowerShell7では使用できるみたいだ。

大量画像にダウンロードする必要があったのでダウンロードファイルをリスト化、command打つように変換した。結果、とても楽です。

事務作業している方でIT好きな方はVBAを勉強してみると確実に仕事の効率化に繋がると思っています、たまにPythonをオススメするひともいるだけど、自分はあまりオススメしません。

なぜなら、一般的な事務員さん全員がそれを取り扱えるとは思わないからです。なのでクリックすれば動くよみたいな物が作れてパソコンの環境を変えないで良いのはVBAぐらいかと思います。PowerShellでもパソコンの環境を変更しないと動かないですからね。

バッチ処理などは一般的なひとはやはりハードルが高いと思ふ・・・?

タグ

-Command, -OutFile, 10, 7, IT, powershell, Python, quot, url, VB, VBA, wget, あれ, ウィンドウズ, おすすめ, クリック, それ, ダウンロード, たま, とき, パス, パソコン, ひと, ファイル, リスト, リナックス, 事務, , 仕事, 作業, 使用, 保存, 全員, 効率, 勉強, 変換, 大量, 必要, , , 環境, 画像, 素敵, 結果, 自分,

text形式に土日は変更。

2020.10.03

Logging

土日は基本テストスタイルに変更しようと思っています。なお、今まで土日はイラストを挿絵としていれておりましたが、サーバー移行の際に画像データがすべて消えてしまったことにより、この際、テキスト形式にしようと思ったので、そのようにすることにしました。なるべく短文にならないように気をつけて記事を書こうかなと思います。

本日はお休みなので『映画、浅田家』を見に行こうかどうか考えています。浅田家のお話、予告を見ると結構感動しそうな気がします。ただ、567の事を考えるとあまりリスクな事をしたくないなという気持ちもあります。映画館って完璧な密室なので・・・。たぶん空調設備も高知県の場合、完璧ではないでしょうからね。そう思うと本当に凄い観たい映画だけ観たほうが良いかなという気持ちがあります。観たい映画は結構な本数があるので…。

映画「浅田家!」予告【2020年10月2日(金)公開】

「あ?どうしよう?」
「浅田家」

タグ

567, Text, イラスト, お休み, お話, こと, サーバー, スタイル, すべて, データ, テキスト, テスト, リスク, 予告, , 土日, 基本, 場合, 変更, 完璧, 密室, 形式, 感動, 挿絵, 映画, 映画館, 本当, 本数, 本日, , 気持ち, 浅田家, 画像, 短文, 移行, 空調, 結構, 記事, 設備, , 高知県,

サーバー引っ越して突貫工事。

2020.09.29

Logging

昨日、サーバー引っ越しして突貫工事を行っていました。ことの成り行きを説明するとサーバー移行しようとしてミスってしまった…。画像データのバックアップを取るのを忘れて、サーバーを消しちゃって『あぁ』ってへたってました。数時間、もうこのサイトを消そうかなとか思ったのですが今まで蓄積した、どうしようもないデータ量を無駄にするのは惜しいと思い、数時間後にテキストデータだけさくらレンタルサーバーに移行しました。

今までは別のVPSで動かしていたのですが、なんだかもったいなという気持ちが芽生えてきて元のさくらレンタルサーバーに移行しました。じぶんは結構、サーバーの移行を行います。これは計画的な移行というのはほぼ無くほぼ衝動的なサーバー移行が多いです。なので何の前触れもなくサイトが数時間見えなくなったり、見えづらい状態になったりということが数年間に何回かあります。

本当はもっと良いサーバーを借りたいものですが、収益とサーバー代がとんとんな状態なので、いまは良いサーバーを借りていません。

因みに自分がオススメするレンタルサーバーはXサーバーがしているwpxやかごやサーバーです。wpxは初心者でも簡単にワードプレスが構築できてそれでいて表示も高速です。かごやサーバーは高速化処理などは自分で試行錯誤しなければならないのですが、サービスのなかに回線速度を上げることが出来るオプションがあるので、そちらを使用すると大体のワードプレスは爆速化します。

まぁそんなですが自分はさくらレンタルサーバーでゴニョゴニョするのが好きかな。結構、ゴニョゴニョ細工出来ますよね。

タグ

VPS, いま, こと, これ, , サーバー, サイト, さくら, じぶん, データ, テキスト, とんとん, バックアップ, ミス, レンタル, , 何回か, , , 前触れ, 収益, 工事, 引っ越し, , 昨日, 本当, 気持ち, 無駄, 状態, 画像, 移行, 突貫, 蓄積, 説明,

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を独自ドメインに!

タグ

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

即席デザイン文字生成[iDrawジェネレーター]という命名がダサいw

2020.07.09

Logging

即席デザイン文字生成[iDrawジェネレーター]というWEBツールを作りました。あのイケハヤさんみたいなテキスト文字だけのアイキャッチ画像みたいなものが生成可能です。これをどうして作ったのか?

昔、パソコンが壊れてアドビが一時期があり、その時に仕方ないのでこれでアイキャッチ画像を生成して使用しておりました。とくに凝ったデザイン文字が生成されるわけではなく。書体と背景色や文字色などを変更してそれらしいものを即席で作るというものです。昔、作ったので変数の命名もかなり杜撰な感じでしたがひとまず動く形になりましたので、公表しますね。

ご自由にお使いいただければ幸いです。
https://zip358.com/tool/idraw/

この他にも無料ツールをいろいろ作っているのでご自由にお使いいただければと思っています。

タグ

iDraw, , web, あい, アドビ, イケハヤ, お使い, かなり, キャッチ, これ, ご自由, ジェネレーター, それ, ツール, テキスト, デザイン, パソコン, もの, わけ, 一時期, , 使用, 公表, 即席, 可能, 命名, 変数, 変更, , 感じ, 文字, , , 書体, 杜撰, 無料, 生成, 画像, 背景色,

bingから画像を一括ダウンロードするアプリ。

2020.06.14

Logging

任意のキーワード検索でbing画像からを一括ダウンロードするアプリを作りました。img-dl-bing-sss.exeファイルを起動すると動画のようなコンソール画面が開くので入力してダウンロードを開始してください。ダウンロードが終わると勝手に閉じます。

なお、一応R指定にも対応しています、キーワードがR指定項目かもと思う場合、Yと入力ください。
新垣結衣さんの熱烈なファンでもないですが、綺麗な方だとは思います。ということで例として使用させて頂きました、、、関係者の皆様ごめんなさい。

bingから画像を一括ダウンロードするアプリ

このアプリはウィンドウズ10環境で動作します。また、動作しないブロックされる場合は下記のURL等を参照しブロックを解除しお使いください。ブロック解除方法:https://forest.watch.impress.co.jp/docs/news/1130655.html

※なお、Bingサイトのデザインが変わった場合、動作しなくなりますのであしからず。

画像ダウンロードアプリのソースコードはこちら(古いコードですので動かない場合がありますVS2019C#)

using System;
using System.Runtime.CompilerServices;

namespace img_dl_bing_sss
{
    class Program
    {
        static void Main(string[] args)
        {
            string keyword = "",R18="";
            Console.ForegroundColor = ConsoleColor.Red;
            Console.WriteLine("処理中は画面や立ち上がったブラウザを閉じないでください。\n" +
                "処理が完了すると「***終了します***」と表示されます。\n" +
                "何かキーを押し終了してください\n\n");


            Console.ForegroundColor = ConsoleColor.Green;
            Console.WriteLine("↓検索キーワードを入力しエンターを押してください");
            keyword = Console.ReadLine();
            Console.ForegroundColor = ConsoleColor.White;
            Console.WriteLine("↓R指定ですか?\nY or N かの文字を入力しエンターを押してください");
            R18 = Console.ReadLine();
            Console.ForegroundColor = ConsoleColor.Yellow;
            Console.WriteLine("***画像のダウンロード量(画像数ではありません) 1?999 ***");
            var scroll = 9999;
            try
            {
                scroll = int.Parse(Console.ReadLine());
                if(scroll >=1 && scroll <= 999)
                {
                    scroll = scroll * 9999;
                }
            }
            catch
            {
                Console.ForegroundColor = ConsoleColor.Yellow;
                Console.WriteLine("***検索キーワードが不適切です。***");
            }
            SuiteTests img =  new SuiteTests();
            if (img.Imgdlok(keyword, R18, scroll))
            {
                img.Dispose();
            }
            else {
                Console.ForegroundColor = ConsoleColor.Yellow;
                Console.WriteLine("***検索キーワードが不適切です。***");
            }
            Console.ForegroundColor = ConsoleColor.Yellow;
            Console.WriteLine("***終了します***");
            
        }
    }
}
// Generated by Selenium IDE
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading;
using OpenQA.Selenium;
using OpenQA.Selenium.Chrome;
using OpenQA.Selenium.Firefox;
using OpenQA.Selenium.Remote;
using OpenQA.Selenium.Support.UI;
using OpenQA.Selenium.Interactions;
using Xunit;
using AngleSharp;
using AngleSharp.Html.Parser;
using AngleSharp.Html.Dom;
using AngleSharp.Dom;
using System.Runtime.InteropServices;
using Newtonsoft.Json;
using System.IO;
using System.Net;

public class SuiteTests : IDisposable {
  public IWebDriver driver {get; private set;}
  public IDictionary<String, Object> vars {get; private set;}
  public IJavaScriptExecutor js {get; private set;}
  public SuiteTests()
  {
    driver = new ChromeDriver();
    js = (IJavaScriptExecutor)driver;
    vars = new Dictionary<String, Object>();
  }
  public void Dispose()
  {
    driver.Quit();
  }
  public bool Imgdlok(string keyword="", string R18= "",int scroll = 999999)
    {
        if (keyword == "") return false;
        Console.Clear();
        string path = System.IO.Directory.GetCurrentDirectory() + "\\IMG\\";
        if (!Directory.Exists(path))
        {
            Directory.CreateDirectory(path);
        }
        driver.Navigate().GoToUrl("https://www.bing.com/?scope=images&nr=1&FORM=NOFORM");
        driver.Manage().Window.Size = new System.Drawing.Size(945, 1030);
        driver.FindElement(By.Id("sb_form_q")).Click();
        driver.FindElement(By.Id("sb_form_q")).SendKeys(keyword);
        driver.FindElement(By.CssSelector(".search.icon.tooltip")).Click();
        try
        {
            if (R18 == "Y")
        {
            driver.FindElement(By.LinkText("設定の変更")).Click();
            driver.FindElement(By.CssSelector("#settings_safesearch div:nth-child(3)")).Click();
            driver.FindElement(By.Id("adlt_set_off")).Click();
            driver.FindElement(By.Id("sv_btn")).Click();
            driver.FindElement(By.Id("adlt_confirm")).Click();
        }
        }
        catch
        {
            Console.ForegroundColor = ConsoleColor.Yellow;
            Console.WriteLine("***R指定ではありません***");
        }
        try
        {
            double ps = 0;
                for (int i = 99; i < scroll;i+=1000)
            {

                js.ExecuteScript("window.scrollTo(0," + i + ")");
                Console.CursorLeft = 0;
                ps = (double)(((double)i / (double)scroll) * 100);
                Console.Write("処理中::{0:D2}%",(int)ps);
            }
        }
        catch
        {
            Console.ForegroundColor = ConsoleColor.Yellow;
            Console.WriteLine("***Max画像まで到達しました***");
        }
        Console.ForegroundColor = ConsoleColor.White;
        Console.WriteLine("\n***ダウンロード処理開始***\n");
        int cnt = 0;
        var elm = driver.FindElements(By.ClassName("iusc"));
        driver.Manage().Window.Minimize();
        foreach (var e in elm) {
           dynamic jsondata = JsonConvert.DeserializeObject(e.GetAttribute("m"));
            Console.ForegroundColor = ConsoleColor.Red;
            Console.WriteLine((string)jsondata.murl + "::wait.....");
            string imgurl = (string)jsondata.murl;
            if(4 <= Path.GetExtension(imgurl).Length && Path.GetExtension(imgurl).Length <= 5)
            {
                try
                {
                    cnt++;
                    string ext = Path.GetExtension(imgurl);
                    WebClient myWebClient = new WebClient();
                    myWebClient.DownloadFile(imgurl, path + "No-" + cnt + "-" + keyword + ext);
                    myWebClient.Dispose();
                    Console.ForegroundColor = ConsoleColor.Cyan;
                    Console.WriteLine("***" + cnt +"::" + imgurl + "\n::ダウンロード中、画面を閉じないでください...***");
                    Console.ForegroundColor = ConsoleColor.Green;
                    Console.WriteLine("***" + cnt + "::ダウンロード済***");
                }
                catch
                {
                    Console.ForegroundColor = ConsoleColor.Yellow;
                    Console.WriteLine("***ダウンロードが失敗しました***");
                }

            }else{
                Console.ForegroundColor = ConsoleColor.Yellow;
                Console.WriteLine("***画像の拡張子が不明のためダウンロードが失敗しました***");
            }
        }
        Console.ForegroundColor = ConsoleColor.Blue;
        Console.WriteLine("***ダウンロード完了しました***\n" + path);
        return true;
  }
}

タグ

10, bing, exe, img-dl-bing-sss, url, VS, アプリ, ウィンドウズ, キーワード, コード, こちら, こと, コンソール, サイト, ソース, ダウンロード, デザイン, ファイル, ファン, ブロック, 一括, 下記, 任意, 使用, , 入力, 動作, 動画, 勝手, 参照, 場合, 対応, 指定, 新垣結衣, , 方法, 検索, 環境, 画像, 画面, 皆様, , 綺麗, 解除, 起動, 開始, 関係者, 項目,

株式会社ディーアンドジーネクストのサービスをリバースエンジニアリングした?

2020.03.13

Logging

https://lingule.com/

高知県にあるディーアンドジーネクスト社には上記のサービスがあります、これは自分でも作れそうだと思い試した所できました。ソースコード公表は営業妨害になるので、掲載しませんが考え方は至ってシンプルです。翻訳したデータをパラメーターに付与して飛ばすだけです。

アイディアはとても面白いと感じたのだけど、これはパクれるかなと思いました。ちなみに翻訳APIを無料で使用する方法を見て作りました。いまは動かないようにしています。見た目はこんな感じになります(上記の画像)。

https://zip358.com/tool/demo10/ 動作はしません?処理部分秘密?

参考サイト

https://qiita.com/satto_sann/items/be4177360a0bc3691fdf

タグ

10, 358, API, com, demo, https, tool, zip, アイディア, いま, エンジニアリング, コード, これ, サービス, サイト, シンプル, ソース, データ, ディーアンドジー, ネクスト, パラメーター, リバース, 上記, 付与, 使用, 公表, 処理, 動作, 参考, 営業, 妨害, 感じ, , 掲載, 方法, 株式会社, 無料, 画像, 秘密, 翻訳, 考え方, 自分, 見た目, 部分, 高知県,

FF7RのDEMOをプレイしてみて。

2020.03.03

Logging

FF7RのDEMOをプレイしてみて思った。これは期待以上の仕上がりです、凄すぎる映像がリアルです、そして戦闘シーンも超リアル感がある、クラシックモードでも楽しめるしこれはとても良い。今までの歴代ファイナルファンタジーの中でも群を抜いてダントツ1位の仕上がりです。開発にかなり時間がかかったのもわかるけど、この技術はこれからのFFに応用されるだろうから、これはリリースされる次期FFにもかなり期待ができると思います。最後に自分がシェアしたファイナルファンタジー7REMAKE(リメイク)の画像とファミ通さんのプレイ動画を載せときます。

【ネタバレ注意】『FFVII リメイク』プレビュー動画その1 壱番魔晄炉潜入

タグ

, 7, demo, FF, REMAKE, かなり, クラシック, これ, シーン, シェア, ダントツ, ファイナルファンタジー, ファミ通, プレイ, モード, リアル, リメイク, リリース, , 動画, 応用, , 戦闘, 技術, 映像, 時間, 最後, 期待, 次期, 歴代, 画像, , 自分, 開発,

webpに対応しましたプラグインでカバーしました。 Safariめ!!

2020.01.25

Logging

WebP Express(ウェッピーエクスプレス)というWordPressのプラグインがあるので、そちらでコンバート(変換)すれば良いのですが、大量に画像があるサイトはそれで変換できないので下記の対応方法で対応をお願いします。

1. WebP Express使用してコンバートする際に webpが生成されます。webpの生成場所を確認する。現在は下記の配下にwebp画像が作られています。

/wp-content/webp-express/webp-images/doc-root/wp-content/uploads

2.1の配下にwebpの画像を生成するために下記のコマンドを実行します。自分の場合、アップロードしている画像をリスト化して一括処理するプログラミングを実行しました。尚、cwebpがインストールされていない場合、インストールする必要があります。さくらレンタルサーバーには入っているみたいです。

cwebp -q 90 元画像名(階層を含む).png -o 変換後のファイル名.webp (変換先の階層を含む)

こうすることで画像は全てwebpに変換することが可能ですが、これだけでは表示が切り替わらないので下記の画像を参照しプラグインの設定を変更してください。

ちなみにこのwebp(ウェッピー)はグーグルさんが開発したものらしいです、大体のブラウザが、こちらの webpに対応しているのですがSafariとIEは非推奨みたいなんですよね。何れwebpに対応すると思います…思いたい。

タグ

, 2.1, cwebp, doc-root, Express, Safari, uploads, webp, webp-express, webp-images, WordPress, wp-content, アップロード, インストール, ウェッピーエクスプレス, お願い, カバー, コマンド, コンバート, サーバー, サイト, さくら, そちら, それ, ため, プラグイン, プログラミング, リスト, レンタル, 一括, 下記, 使用, 処理, 場合, 場所, 変換, 大量, 実行, 対応, 必要, 方法, 現在, 生成, 画像, 確認, 自分, 配下, ,

俳優がCG化される時代に突入。

2020.01.11

Logging

あと10年後には誰かがデジタル俳優だけで映画を作ることをするだろうと。
誰かが始めると次々とデジタル俳優で映画を作る映画監督が
増えていくと思います。

ネットフリックスの下記の動画を観てください、CG(コンピューターグラフィックス)だけで精巧にデジタル俳優を造形することが
もう出来てしまっています。

あともう少しで本物かCG画像(VFX)か見分けがつかないように
なると思います。10年後と言いましたが、最高で10年で
最短ではあと数年で見分けがつかないようになると思っています。

繰り返しになりますが、そうなった時に必ずこの技術を使用して、
俳優に演技をさせず、デジタル俳優(仮想俳優)だけで作ると思います。

尚、このネットフリックスのオリジナル映画予告も載せときますね。

How The Irishman’s Groundbreaking VFX Took Anti-Aging To the Next Level | Netflix

アイリッシュマン予告動画↓

『アイリッシュマン』最終予告編

タグ

0, 10, 461, be, Cg, OF-lElIlZM, VFX, youtu, アイリッシュ, あと, オリジナル, グラフィックス, こと, コンピューター, デジタル, ネットフリックス, マン, 下記, 予告, 仮想, 使用, 俳優, 動画, 技術, , 映画, , 時代, 最短, 最高, 本物, 演技, 画像, 監督, 突入, 精巧, 誰か, 造形,

WordPressのメディアライブラリについて愚痴る。

2020.01.08

Logging

過去のデータベースを引き継いでいればメディアライブラリのデータは
壊れないが、途中でXMLなどデータをインポートすると
メディアライブラリでは管理出来なくなってしまう。

これを呼び戻すには Add From Server やmedia from ftpなどのプラグインを
使用して呼び戻すしか無いようだと思っていたが、唯これをしてしまうと
いささか問題があるので使えない。
このプラグインは基本的に新規で構築する際に
画像をFTPで一先ず一括アップロードして使用する場合などに対しての
プラグインである物なのでいささか違う。

なので今回、自分で自作しようと思っていたが、、、
特に過去の画像を編集するつもりもないので辞めた。
ちなみにメディアライブラリの画像はwp_postsとwp_postmetaに
保存されている。

下記のURLを見て昔、これでトラブルになった事を思い出した。
WordPressで画像はどのようにデータベースに記録されているか

上記のようなことから、データベースの画像の欠損を復元するのは
正直なところ面倒。投稿データには大体、データは残っているのだが
メタデータが欠損していてメディアライブラリに表示されないということが
殆どだと思うが、このメタデータを復元するのは至難、なぜなら
投稿データって使っているIDとメタデータのIDのリンクを上手く結びつける
事ができないからとてもエンジニア泣かせである。

要するにメタデータIDの方が以前使っていたIDを別の要素のIDが
使っていたりして…。
これを整理しながら元に戻すのは非常に至難だと言うこと。

なので、結論を言えばちゃんとデータベースのバックアップ取りましょう?

タグ

Add, from, FTP, media', postmeta, posts, SERVER, url, WordPress, wp, xml, アップロード, インポート, これ, つもり, データ, データベース, トラブル, プラグイン, メディア, ライブラリ, 一括, 下記, , 今回, 使用, 保存, 問題, 場合, 新規, , 構築, , 画像, 管理, 編集, 自作, 自分, 記録, 途中, 過去, ,

ちょっとした物。InstagramのAPI取得する

2019.10.05

Logging

Instagram(インスタグラム)の画像などが取得することが出来ます。アクセストークンの取得の方法がわからない場合はぐぐってください。尚、APIのバージョンが、今後上がった場合は下記のコードは使用できなくなる可能性があります。ちなみにこのコード動作確認はしておりません。このコードを理解して使用できる人のみお使いください。
尚、画像取得数はデフォルト10にしています。プログラムではアクセストークンと20を渡しています。
画像URLはコメントアウトのところに入ってきます。※プログラムを可変してお使いください。

<?php
//Instagram
//https://api.instagram.com/v1/users/self/media/recent/?access_token=&count=
class instagram_api{
    public const url ="https://api.instagram.com/v1/users/self/media/recent/?access_token=";
    public function api ($access_token= "",$img_count =10){
        $url = self::url;
        return (object)json_decode(@file_get_contents($url . $access_token."&count=".$img_count));
    }
    public function obj_img($obj=Null){
        if(!is_object($obj))return false;
        if(!$obj->data)return false;
        foreach ($obj->data as $key => $item) {
            var_dump($item);
            // $item->images->standard_resolution->url
            // $item->images->low_resolution->url
        }
        return true;
    }
}
$obj = instagram_api::api("access_token",20);
instagram_api::obj_img($obj);

タグ

, 10, 20, access, API, class, com, const, count, https, instagr, Instagram, lt, media', php, public, quot, recent, self, token, url, users, アウト, アクセス, インスタグラム, コード, こと, コメント, デフォルト, トークン, ところ, バージョン, プログラム, 下記, , 今後, 使用, 動作, 取得, 可能性, 場合, 方法, , 理解, 画像, 確認,

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

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";
    $re = @file_put_contents($Path,$b64);
    if($re){
        $obj[$i]["chk"] = $re?"ok":"ng";
        $obj[$i]["name"] = "$t-$no.png";
        $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();
    }

}

タグ

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

画像ファイル系一覧のパスを列挙するバッチ

2019.08.17

Logging

setlocal enabledelayedexpansion
type nul >imglist.txt
set BEFORE_STRING=
set AFTER_STRING=/
set BEFORE_STRING2=F:/
set OUTPUT_FILE=imglist.txt
for /f %%a in ('dir /a-d /s /b *.jpg *.gif') do (
set line=%%a
set RES=!line:%BEFORE_STRING%=%AFTER_STRING%!
echo !RES:%BEFORE_STRING2%=!>>%OUTPUT_FILE%!
)
endlocal

画像ファイル系一覧のパスを列挙するバッチです。
ググりながら作ってみました。
ちなみに勘所はsetlocal enabledelayedexpansion(endlocal)と!です。
どうもforの中の変数をセットするタイミングが関係しているので
上記の文言を使用しないとうまく取り出す事が
できないようです。
遅延環境変数とかいうそうですね。。。
あまり理解していないけれどもorz

タグ

2, a-d, AFTER, BEFORE, DIR, do, echo, enabledelayedexpansion, endlocal, file, For, gif', gt, imglist, in, jpg, line, nul, OUTPUT, res, set, setlocal, string, txt, type, パス, バッチ, ファイル, 一覧, 列挙, 勘所, 画像,

tensorflowは簡単にインストールできるけど、そこから何やれば

2019.02.09

Logging

tensorflowは簡単にインストールできるけど、そこから何やれば
良いのか、よくわからない。
いま流行りの人工知能ですが、こういうこと出来るよってのは
知っている、例えば画像の仕分けとか。
そこからオリジナルに適応できないのだ。
若造なら画像収集とか考えそうです、、、えぇぇ。
10代なら若気の至りだろうけど、40代間近になると
さすがに無いなと思うわけです。
収集していたらグロ画像が釣れそうな気がしますし
怖くてできません。ちなみに
逃げるは恥だが役に立つグーグル画像検索ダウンロードコンソールアプリを
公開しているのですが、これ変更すればえぇまぁ出来そうですね。
■人工知能を仕事で活用するならば。
人工知能で出来ることで、人の顔にモザイクをかけることが出来るということ。
他には、画像の仕分けとか、本屋さんで小耳に挟んだことですが
工事現場とかでは結構写真を取らないといけないらしく
それを分別するのが面倒だとか、
こういうのには人工知能は大活躍しそうですね。
 

タグ

10, 40, tensorflow, アプリ, いま, インストール, オリジナル, グーグル, グロ, こと, これ, コンソール, さすが, そこ, ダウンロード, モザイク, , 人工, 仕事, , 公開, 写真, 収集, 変更, 小耳, 工事, , , 本屋, 検索, , 活用, 現場, 画像, 知能, 簡単, 若気, 若造, 適応, 間近, ,

Twitterの画像を抽出、非API

2018.11.07

Logging

Twitterの画像を抽出、非API
Goutteライブラリを使用してTwitterのメディアを抽出するだけで
APIを使用せずに17枚の画像が抽出することが可能。
これを改良してスクロールさせながらってのは出来ないのではないかな
特にVPSじゃないレンタルサーバーなどでは不可能じゃないのかと思います。

require_once './vendor/autoload.php';
use Goutte\Client;
$client = new Client();
$crawler = $client->request('GET','https://twitter.com/xxxx/media');
$img = $crawler->filter(".AdaptiveMedia-photoContainer.js-adaptive-photo img")->each(function ($node){
return $node->attr('src');
});

タグ

'src', 17, AdaptiveMedia-photoContainer, API, APITwitter, attr, autoload, Client, com, crawler, each, filter, function, GET, Goutte, gt, img, js-adaptive-photo, media', new, node, once, php, request, require, return, Twitter, use, vendor, VPS, xxxx, こと, これ, サーバー, スクロール, ない, メディア, ライブラリ, レンタル, 不可能, 使用, 出来, 可能, 思い, 抽出, 改良, , 特に, 画像, ,

夏バテ感が強い。

2018.08.16

Logging

疲労、たぶん夏バテで2日間いつも読んでいる最新の話題や記事を
全然、目を通していない。家に帰って飯を食べてバタンと寝るだけの日々。
朝起きて風呂に入り仕事へ。
AI(人工知能)に仕事取られていくだろうなと思う今日このごろ。
ただ、そろそろ自分でも簡単に使用できるレベルのオープンベースの人工知能ライブラリが
でてくるのだろうな。そうなったら良いなぁと思いつつも
やはり人工知能の勉強はしないといけないよなと思います。
 
機械学習では画像や音声で学習させるということを
忘れていたけど、よくよく考えるといろいろな事を機械学習で
勉強させられるということ、例えば最初にABCとフォルダを構えて
その中に正しい振り分けデータを入れてAIにお勉強させる(学習あり)ことで
これは何のデータか振り分けが可能になるわけです。
人工知能は仕分けがお得意だという事。
よくよく考えると荷物の仕分けも出来てしまうのではないかな?
今までOCRで行っていたことを機械学習で置き換えることで
アナログで書かれた伝票にも対応できたりするのではないかと。
主に仕分けや判別する分野では
人工知能は今後、大活躍かなと思います。
この判別する仕事って殆どの仕事は判別する仕事ではないのかと
思ってしまいます・・・。創作(クリエイティブ)する仕事はまだまだ
人工知能に奪われそうにないです。ちなみに人工知能は創作する事は可能です、
ただ創作したモノが良いか悪いかという事は人工知能はわからないからです。
データ上よくても実際、人が見ると全然だめモノばかり?

タグ

2, ABC, AI, nbsp, いろいろ, オープン, お勉強, お得意, こと, コレ, データ, はり, フォルダ, ベース, ライブラリ, レベル, , , 人工, , 今日このごろ, 仕事, , 使用, 勉強, 可能, 夏バテ, 学習, , , 日々, 最初, 最新, , 機械, 画像, 疲労, , 知能, 簡単, 自分, 荷物, 記事, 話題, 音声, 風呂, ,

日々淡々と

2018.05.02

Logging


日々淡々と生きてます。
この画像を作っている時に、小学生の時に切り絵をした事がふと蘇りました。
自分、小学生や中学生の時に何をしていたのかという記憶はほぼなし、出来事の記憶がちらほら有るぐらいで
あまり覚えていませんね。ちなみにこの画像は背景はグラデーションを使用し波のフリー画像を持ってきて加工をおこなってこんな感じに仕上げました。じぶんの画像は大体は苦労せずにお手軽に作成することが出来ると思います、制作にかける時間は大体、5分です。
凝ったものになると20分ぐらいの時もありますが、シンプルなものは大体、それぐらいです、飽きもせずこういうの
自前で作っていますが、こういうの好きですから続きます。
継続は力なりとは言いますが、アレは半分ウソだと思います。確かにある一定度は伸びますが、技は本を読んだり
誰かに教えてもらわないと身につかないと思います。自分は未だにイラレの参考書をちら見した程度です、本当は
ロゴとかそういうのが自分で作れたら良いなと思っています。

タグ

20, 5, アレ, イラレ, ウソ, グラデーション, こと, じぶん, シンプル, それ, フリー, もの, ロゴ, 一定, 中学生, , , 作成, 使用, 出来事, 切り絵, 制作, , 加工, 半分, 参考書, 大体, 小学生, 感じ, , 日々, , 時間, 未だ, , 本当, , 画像, 程度, 継続, 背景, 自分, 自前, 苦労, 記憶, 誰か, ,

AI(人工知能)とAI(人工知能)が会話する時代に直ぐなる。

2018.01.30

Logging


?
この頃、寒い日が続きます。
そんな雪が降った日に、こんな記事が流れた「画像からAI(人工知能)がコーディングを行う」という記事、正直なところ「唖然」としました。
こんなにも早くコーディングという仕事を奪うのかと・・・。
たぶん来年ぐらいには複雑なWEBDESIGNのコーディングを行うサービスを海外の企業がグローバルに展開しそう、だからと言って「WEB会社」がなくなるかと言えばそうでもないし仕事が奪われることもないと感じます。
今でも数種類のDESIGNから、ほぼGUIでホームページが作成するサービスはありますが、其のことで会社が痛手になったなんてことは聞きません。
なので、今回のコーディングを行うサービスもある一定数のユーザーは、そちらに流れると思いますが、ソフトウェア会社やWEB会社が排他されることはないじゃないだろうかと思います。
もっと言えば、そのうちAIの記述したコーディングを人がチェックし手直しするような事になるだと思います。
ちなみに人工知能の学習させるのに使うのは人工知能らしいですね・・・。
人が人工知能を超えるため脳にPCを直結するというハイブリッドな研究も進んでいるそうです。
最終的に人は遺伝子を組み替えて脳の処理能力を上げるって話もあります。この頃、今までの絵空事が具現化されてきていて、あと10年もすれば世の中かなり変わりそうです。
※余談:クリスパー・キャスナイン(CRISPR/Cas9)遺伝子組換え技術が人には適応できないかもと言われていますが、自分は何れ誰かが安全な遺伝子組換え技術を開発すると思います。
大体、人が想像することは具現化してきてます、具現化出来ないことはもしかすると人は想像できないのかもしれませんね。

Ink to Code, a Microsoft Garage Project


?

タグ

AI, DESIGN, GUI, web, WEBDESIGN, うち, グローバル, コーディング, こと, サービス, そちら, ソフトウェア, チェック, ところ, ホームページ, ユーザー, 一定, , , 人工, , 今回, 仕事, 企業, 会社, 会話, 作成, 展開, 手直し, 排他, , , 早く, 時代, 来年, 正直, 海外, 画像, 痛手, 知能, 複雑, 記事, 記述, , ,

イラストレーター使用して1週間ぐらい経過しましたよ。

2017.06.21

Logging


まだまだ駄目だけど、1週間イラストレーターを使用して
出来ることも増えてきました。
下が1週間前の技術です、上の画像が1週間後の技術です。
全然、出来なかった時から言えば、まぁ良くなってきたように
自分自身も感じますが、もっといい感じ=想像したものを具現化できれば
良いのになと感じます。上の画像に関して言えばもっと墨っぽく
表現したかったですし、アクセントもいまいちなので
もっと強調できれば見栄えが良くなる気がします。
一年後、どれぐらい上達するのかは今のところ未知数です。

タグ

1週間イラストレーター, CC2017対応版, illustrator, アクセント, いい感じ, イラストレーター, デザイン, ところ未知数, どれぐらい, 具現化, 墨っぽく, 学校, 技術, , 画像, 自分自信, 自分自身, 見栄え,