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, アップロード, インポート, これ, つもり, データ, データベース, トラブル, プラグイン, メディア, ライブラリ, 一括, 下記, , 今回, 使用, 保存, 問題, 場合, 新規, , 構築, , 画像, 管理, 編集, 自作, 自分, 記録, 途中, 過去, ,

WordPressの全記事の中からランダムで記事をピックアップしてツイートする。

2019.02.22

Logging

WordPressの全記事の中からランダムで記事をピックアップしてツイートする。
実際、自分の階層に合わして呼び出しを変更してください。
なお、さくらレンタルサーバーでクロンの設定をして自動投稿できます。
ライブラリの設置などは割愛してます。

<?php
// cron:: cd /home/user/www/zip358.com/site/tw; /usr/local/bin/php tw.php
require_once ('../../wp-load.php');
require "vendor/autoload.php";
use AbrahamTwitterOAuthTwitterOAuth;
$consumer_key = "XXXXXXXXXXXXXX";
$consumer_secret = "XXXXXXXXXXXX";
$access_token = "XXXXXXXXXXXXXX";
$access_token_secret = "XXXXXXXXXXXXXXX";
$to = new TwitterOAuth($consumer_key,$consumer_secret,$access_token,$access_token_secret);
$args = array(
	'posts_per_page' => 1,
    'orderby' => 'rand'
);
$posts = get_posts($args);
foreach ( $posts as $val ){
    $href =  get_permalink($val->ID);
    $title = get_the_title($val->ID);
    $res = $to->post("statuses/update", array("status" => $title . " " . $href));
}

タグ

358, Abraham, access, autoload, bin, cd, com, consumer, cron, home, key, local, lt, once, php, require, secret, site, tok, tw, TwitterOAuth, use, user, usr, vendor, WordPress, wp-load, XXXXXXXXXXXX, XXXXXXXXXXXXXX, zip, クロン, サーバー, さくら, ツイート, ピックアップ, ライブラリ, ランダム, レンタル, , 割愛, 変更, 実際, 投稿, 自分, 自動, 記事, 設定, 設置, 階層,

DropFTPを配布。

2018.12.01

Logging

ドップして一つのファイルを転送するソフトを作りました。
こんなのどうしているのかと疑問を持つ人もいると思いますが
業務上、こんなソフトが要るという会社などもいるのではないかと
思いで作りました。
ダウンロードはこちらから
https://zip358.com/tool/DropFTP.zip
ソースコードは下記になります。
※FTP部分はWinSCPのライブラリを使用しています。

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using WinSCP;
namespace dropFTP
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        private void upbtn_Click(object sender, EventArgs e)
        {
            String err = "";
            if (hostText.Text == "") {
                err += "ホスト名が設定されていませんn";
            }
            if (idText.Text == "")
            {
                err += "IDが設定されていませんn";
            }
            if (passText.Text == "")
            {
                err += "passが設定されていませんn";
            }
            if (remText.Text == "")
            {
                err += "アップロード場所が設定されていませんn";
            }
            if (uplab.Text == "")
            {
                err += "アップロードファイルが設定されていませんn";
            }
            var RadioGroup = groupFTP.Controls.OfType<RadioButton>().SingleOrDefault(rb => rb.Checked == true);
            if (RadioGroup == null) {
                err += "アップロード環境が設定されていませんn";
            }
            if (err != "")
            {
                MessageBox.Show(err);
            }
            else {
                if (RadioGroup.Text == "FTP") {
                    upFTP();
                }
                if (RadioGroup.Text == "SFTP")
                {
                    upSFTP();
                }
            }
        }
            private int upFTP() {
            try
            {
                // Setup session options
                SessionOptions sessionOptions = new SessionOptions
                {
                    Protocol = Protocol.Ftp,
                    HostName = hostText.Text,
                    UserName = idText.Text,
                    Password = passText.Text,
                    PortNumber =int.Parse(portText.Text)
                };
                using (Session session = new Session())
                {
                    // Connect
                    session.Open(sessionOptions);
                    // Upload files
                    TransferOptions transferOptions = new TransferOptions();
                    transferOptions.TransferMode = TransferMode.Binary;
                    TransferOperationResult transferResult;
                    if (remText.Text.EndsWith("/"))
                    {
                        transferResult = session.PutFiles(@uplab.Text, remText.Text, false, transferOptions);
                    }
                    else
                    {
                        transferResult = session.PutFiles(@uplab.Text, remText.Text + "/", false, transferOptions);
                    }
                    // Throw on any error
                    transferResult.Check();
                    // Print results
                    foreach (TransferEventArgs transfer in transferResult.Transfers)
                    {
                        MessageBox.Show("アップロードしました");
                    }
                }
                return 0;
            }
            catch (Exception e)
            {
                MessageBox.Show("Error: {0}" + e);
                return 1;
            }
        }
        private int upSFTP()
            {
                try
                {
                    // Setup session options
                    SessionOptions sessionOptions = new SessionOptions
                    {
                        Protocol = Protocol.Sftp,
                        HostName = hostText.Text,
                        UserName = idText.Text,
                        Password = passText.Text,
                        PortNumber = int.Parse(portText.Text),
                        GiveUpSecurityAndAcceptAnySshHostKey = true
                    };
                using (Session session = new Session())
                {
                    // Connect
                    session.Open(sessionOptions);
                    // Upload files
                    TransferOptions transferOptions = new TransferOptions();
                    transferOptions.TransferMode = TransferMode.Binary;
                    TransferOperationResult transferResult;
                    if (remText.Text.EndsWith("/")) {
                        transferResult = session.PutFiles(@uplab.Text, remText.Text, false, transferOptions);
                    } else {
                        transferResult = session.PutFiles(@uplab.Text, remText.Text + "/", false, transferOptions);
                    }
                        // Throw on any error
                        transferResult.Check();
                        // Print results
                        foreach (TransferEventArgs transfer in transferResult.Transfers)
                        {
                        MessageBox.Show("アップロードしました");
                        }
                    }
                    return 0;
                }
                catch (Exception e)
                {
                    MessageBox.Show("Error: {0}" + e);
                    return 1;
                }
            }
            private void Form1_DragDrop(object sender, DragEventArgs e) {
            //e.Effect = DragDropEffects.Copy;
            string[] fileName = (string[])e.Data.GetData(DataFormats.FileDrop, false);
            uplab.Text = fileName[0];
        }
        private void Form1_DragEnter(object sender, DragEventArgs e)
        {
            e.Effect = DragDropEffects.Copy;
        }
        private void radioSFTP_CheckedChanged(object sender, EventArgs e)
        {
            portText.Text = "22";
        }
        private void radioFTP_CheckedChanged(object sender, EventArgs e)
        {
            portText.Text = "21";
        }
        private void Form1_Load(object sender, EventArgs e)
        {
            this.FormBorderStyle = FormBorderStyle.FixedSingle;
            this.MaximumSize = this.Size;
            this.MinimumSize = this.Size;
        }
    }
}

タグ

358, Collections, com, ComponentModel, data, Drawing, DropFTP, Forms, FTP, Generic, Linq, System, Tasks, Text, Threading, tool, using, Wi, Windows, WinSCP, zip, コード, こちら, ソース, ソフト, ダウンロード, ドップ, ファイル, ライブラリ, 一つ, 下記, , 会社, 使用, 業務, 疑問, 転送, 部分, 配布,

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

そういやもう3年目か4年目だと。

2018.06.05

Logging


今、働いているところで3年という月日が経つ。
なんだか早いものです。
最初は会社ではなく個人事業主だったのですが
いつの間にか人が増えて株式会社になったのです。
でも人が足りないような気がします。
どんな人でも良いわけではないので、人が足りません。
この三年間、じぶんの技術力が上がったのかと問われると
すごく微妙な感じがします。サーバ関係だけで言えば
確かに経験や知識は増えましたが、主とするPHPやJSの知識は
それほど、上がっていないのではないかなと感じます。
いま、自分が頑張らないといけないのはPHPとJSの技術を
上げることだとPHPではフレームワークであり、
JSで言えば、フレームワークだったり、独自のライブラリを
作成する事、CSSに言えばレスポンシブ対応をググらないで出来るように
なることだったりします。
この中で一番、CSSの知識が皆無に等しいぐらい無いのです。
ちなみに今の自分が会社の採用試験受けたら通らないかもしれないです。
実技試験有りです。逆に言えば資格や高学歴でも
この実技試験を通らなければ、おそらくお試し採用も無いでしょう。
いま会社に望むものと言えば、インターンでも良いので
若い人材が入ればなと思います。夏休み限定で大学生や専門学校生の求人出せば
人が集まるかもしれないなと感じますが、さて大学や専門学校の生徒さんが
どこまで出来るのかと言えば・・・疑問。

タグ

css, php, インターン, お試し採用, サーバ関係, じぶん, フレーム, ライブラリ, 個人事業主, 大学生, 実技試験, 専門学校, 技術力, 採用試験, 株式会社, 生徒, 知識, 若い人材,

C# でYOUTUBEダウンロードもどきを作ってみました。

2018.04.28

Logging


C# でYOUTUBEダウンロードもどきを作ってみました。ライブラリを使用しているので、結局、楽に作れるわけです。ホントに有り難いものです。YOUTUBEやニコニコ動画をダウンロードするソフトが売られていますけど、おそらくソフトウェアプログラマーは買うことはないだろうなと言う印象を作ってみて思いましたね。

【表示する】buttonを押下後、【ダウンロードする】を押さないとダウンロード出来ない仕様に変更してます。

ライブラリにこちらのライブラリを使用しております。
https://www.nuget.org/packages/VideoLibrary/

追記:ソースコードは控えることとにしました。下記の理由から・・・。今後どうなるか不透明なので使用する場合はご自身の判断の元で!尚、私自身はオススメはしません。

タグ

button, https, NuGet, org, packages, VideoLibrary, www, youtube, おすすめ, コード, こちら, こと, ご自身, ソース, ソフト, ソフトウェア, ダウンロード, プログラマー, ホント, もの, ライブラリ, 下記, 不透明, 今後, 仕様, 使用, , 判断, 動画, 印象, 場合, 変更, 押下, 理由, , 自身, 表示, 追記,

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

バーチャルホストでPHPのバージョンを切り替える:誰も教えてくれない。

2017.09.26

Logging


サーバ専属のひとがいる訳でもないので
会社のローカルサーバはじぶんが構築しているわけです。
その中でPHPバージョンの切り替えを行いたいという要望が以前から
有ったので切り替えを昨日行ったわけですけど・・・。
タイムゾーン設定が上手くいかないのです。
何故・・・なのか未だ不明ですが、ある程度原因は分かってはいますが
どう対応すればよいのかわからないと言うのが現状です。
こんな時、サーバ専門家がいればなぁと思うわけですが、
そういう人が見当たらないですね。
PHPのバージョン切り替えでモジュール版とソース版のメリットとデメリットが
よく理解できたのです。今までYUMでインストールしてとずっとモジュール版を
使用していたのですが、こんな事なら最初からソース版を使うべきだったなと言う事を
今頃、ヒシヒシと感じます。
で、どうすればPHPバージョンを切り替えが行えるかというと
cgi-bin上でPHPを動作させるように設定を行うことで各バーチャルホストで
切り替えが可能だということです。
まさに言うは易く行うは難しです。
自分にとっては悪戦苦闘の休みでした、丸一日、この設定がどうして
うまくいかないのか分からずじまい、WEBで落ちている情報を拾ってきて試しても
うまく行かないのです。結局、ソースをコンパイルしている時に何かしら
エラーを吐いた場合、ライブラリ(so)ファイルは生成されないことなどを理解しました。
当然といえば当然なのだけど・・・。
いろいろと身についた知識はあるのですが
実際、そうだろうという所から抜け出せないのが、今の問題かな。
やはり専門の人から技術を教わっている訳でもないので
自信もないし確かではない、こういう知識を持っている人は
あまりいないのかもしれないなと、、、。

タグ

CentOS 7, cgi-bin上, PHPバージョン, サーバ専属, サーバ専門家, じぶん, ソース版, タイムゾーン設定, バージョン切り替え, モジュール版, ライブラリ, ローカルサーバ, 切り替え, 各バーチャルホスト, 悪戦苦闘, 標準テキスト, 知識, 管理パーフェクトガイド,

超それ!機械学習、 TensorFlow!!

2017.09.02

Logging


機械学習でどんな事出来るの?
勝手に勉強してくれるお利口さんな機械学習もあるけれど
オープンソースで提供している機械学習ってのは大体、前もって
答えを与えておいて、そこから判別するものがある。
今回、某検索サイトが提供しているTensorFlowでどんな事が出来るのだろうと
思い、ネットサーフィンしていたら、面白い記事を見つけました。
なんと、Raspberry PiとTensorflowをつかってきゅうりの仕分けができるというシステムを
開発した人がいました。この記事を読んでまさに「超それ!」
https://cloudplatform-jp.googleblog.com/2016/08/tensorflow_5.html
自分が思い描いていた機械学習でできることだと!

いやホントに凄いな、機械学習っていうのは
これからの花形になっていく存在だとつくづく思ってしまいました。
これか先、AIを作る層、AIライブラリやAI、APIを使う層、そしてAIを使う層に
別れていくだろうと思います。じぶんみたいな凡人開発者はAIを作る層には入れないですが、
AIライブラリやAI、APIなどを活用できるようにしないと、
今後、この業界で生き残っていくのは難しいじゃないかなと思っています。
なぜ、そう痛感しているのかと言えば
機械学習で検索すると数年前まではあまりヒットしなかったのに
去年あたりからな。いろいろな人が技術をオープンで公開し始めています。
この動きは止まることはないのではないかと思うのが一番の理由です。
ちなみに自分はあるサーバでTensorflowをインストールして動かしています。
まだ、テストを動かして遊んでいるぐらいで、じぶんでゴニョゴニョ開発しているわけではないです。
開発する前にやらないといけない事があるので、そちらが終わってから
Tensorflowコードをパクりながら学習しようかなと考えています。
https://www.youtube.com/watch?v=4HCE1P-m1l8
ちなみにtensorflowの公開をしますとか、言っていてからもう一年ぐらい
経過しているのかもしれません。すみません、じぶんは阿呆なので
もう少し理解するまでお時間が必要です。噛み砕いて提供できるまでには
結構、時間が必要かもしれません。
じぶんを機械学習したいこの頃でした・・・(´・ω・`)。
 

タグ

08, 2016, 5, AI, API, cloudplatform-jp, com, googleblog, html, https, Pi, Raspberry, tensorflow, オープン, お利口, きゅうり, けが, こと, これ, サーフィン, サイト, システム, ソース, そこ, それ, ネット, ホント, もの, ライブラリ, , , 今回, 仕分, , 判別, 勉強, 勝手, 大体, 存在, 学習, , 提供, 検索, 機械, 答え, 自分, 花形, 記事, 開発,

ビックデータと機械学習仲良しこよし・・・か!!

2016.12.13

Logging


機械学習の精度を上げるには大量のデータを瞬時に捌ける
サーバが必要になるという事を気付いた・・・。
そういやそうだ。学習すればするほど過去のデータも
見直さないといけなくなる。
Gさんは良い商売しているなと機械学習やビックデータを処理する
環境を無料で与えているけど、よくよく見ると制限があり
それ以降は有料になっている。
有料だけど月々の費用はかなり安いところが
ほんと、凄いところです。
でっ!!
ビッククエリーのPHPバージョンの使い方ですけど
Gさんのライブラリを読み込んでSQLを発行して返却値を
もらうだけ・・・凄く簡単。
詳しくはこちら
まずはライブラリ読み込みしてオブジェクトをインスタンスする。

次にSQLを発行する。

最後に発行した情報の返却値を抽出する。

じゃ機械学習はどうしたら良いのか・・・。
勉強中です、GさんがAPI系版出しているだけど、お高いです?。
https://cloud.google.com/prediction/docs?hl=ja
そちらは比較的に優しい、優しいと言っても難しいですけど・・・。
Gさんがオープンソースで提供されているサービスに比べたら優しいという事です。
https://www.tensorflow.org/
機械学習をちょちょいと使えるようになればカッコイイですけどね。
自分には程遠い感じがします、千里の道も一歩からというけれど・・・
今のところ、簡単な機械学習ならっていう感じでニュートラルな機械学習は
難しいですね_(:3」∠)_。
http://qiita.com/tags/TensorFlow

タグ

API系版, Gさん, PHPバージョン, SQL, インスタンス, オブジェクト, サーバ, ビッククエリー, ビックデータ, ライブラリ, 使い方, 千里, 月々, 有料, 機械学習, 機械学習仲良しこよし, 瞬時, 程遠い感じ, 精度, 返却値,

SSH.NETでSFTPとSSHの接続を確立させるまでの過程。

2016.12.11

Logging

SSH.NETでSFTPとSSHの接続を確立させるまでの過程。
ソースコードは下記です、あくまでも触りなのでココからご自分で考えて作り変えてください。ちなみにSSH.NETのライブラリを入手するには拡張機能からNuGet Package Managerという拡張機能を追加するとツールのNuGetパッケージマネージャーが現れるので、ソリューションのNuGetパッケージ管理からSSH.NETと検索しインストールすることによりライブラリが使用できます。

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.IO;
using Renci.SshNet;
using Renci.SshNet.Common;
using Renci.SshNet.Sftp;
namespace ftp
{
    public partial class Form1 : Form
    {
        String Host = "168.192.11.1";
        int Port = 22;
        String RemoteFileDIR = "/root/";
        String LocalDestinationDIR = "C:\\Users\\hoge\\Documents\\BACKUP\\";
        String Username = "admin";
        String Password = "hogehoge";
        public Form1()
        {
            InitializeComponent();
        }
        private void button1_Click(object sender, EventArgs e)
        {
            ssh_cmd();
        }
        private void dl(string filename) {
            using (var sftp = new SftpClient(this.Host, this.Port, this.Username, this.Password))
            {
                sftp.Connect();
                using (var file = File.OpenWrite(this.LocalDestinationDIR + filename))
                {
                    sftp.DownloadFile(this.RemoteFileDIR + filename, file);
                }
                sftp.Disconnect();
            }
        }
        private void ssh_cmd() {
            SshClient ssh = new SshClient(this.Host, this.Username, this.Password);
            ssh.Connect();
            string command = "cd /root && ls";
            string[] str_result;
            string str_results;
            char ptn ='\n';
            int i =0;
            var result = ssh.RunCommand(command);
            //MessageBox.Show(result.Result);
            str_results = result.Result;
            str_result = str_results.Split(ptn);
            ssh.Disconnect();
            for ( i = 0; i < str_result.Length; i++) {
                //MessageBox.Show((str_result[i]));
                if (str_result[i] != "")
                {
                    dl(str_result[i]);
                }
            }
        }
    }
}

タグ

Collections, ComponentModel, data, Drawing, Generic, Linq, Manager, net, NuGet, Package, SFTP, SSH, System, Tasks, Text, Threading, using, インストール, コード, ココ, こと, ご自分, ソース, ソリューション, ツール, パッケージ, マネージャー, ライブラリ, 下記, 使用, 入手, 拡張, 接続, 検索, 機能, 確立, 管理, 追加, 過程,

画面キャプチャ動画を取るなら無料版のBandicamで十分かも。

2016.12.07

Logging


画面キャプチャ動画を取るなら無料版のBandicamで十分かもしれない。
特に仕事用途(共有)で使う場合は無料版のロゴ付きで十分過ぎると 自分は思っています。
操作を動画で説明したいときはこれで十分かなと思います。
大体、静止画のキャプチャで操作の説明は事が足りると思いますがどうしても説明が難しいことがあります。
こういう場合は、操作を動画で撮って送るという方法もありかなと 思っています。
ちなみに画面キャプチャ動画が撮れるソフトを作ろうと 考えています。考えただけで進んでいませんが
こういう方法で作れるじゃないかな?
Visual Studio2015の話ですが、画面キャプチャを動画にする 方法があります。aviに変換し保存するのにフリーのライブラリを使用して
ゴニョゴニョすれば出来るらしいです。例えば、AForge.NET Framework を 使用する方法やDirectShowを使う方法があります。
ちょっとググればGithubで公開していますので ソースを参考にして作ってみるのも良いかもしれないですね。
追記:2020/02/05
ちなみに今、YOUTUBEで投稿しているときに使っているのはこちら
https://zip358.com/?p=8707

タグ

2015, AForge, avi, Bandicam, DirectShow, Framework, net, Studio, Visual, キャプチャ, こと, ゴニョゴニョ, これ, ソフト, とき, フリー, ライブラリ, ロゴ, , 仕事, 使用, 保存, 共有, 動画, 場合, 変換, 大体, 操作, 方法, 無料, 用途, 画面, 自分, , 説明, 静止画,

名前空間の概要がすごい(´Д`)、

2015.07.06

Logging

 

名前空間の概要 ¶

(PHP 5 >= 5.3.0)

名前空間とは何でしょう? 広義の「名前空間」とは、項目をカプセル化するもののことです。 これは多くの場面で見られる抽象概念です。 たとえば、たいていの OS はディレクトリでファイルをグループ化します。 この場合、ディレクトリがその中のファイルの名前空間として機能しています。 具体的に言うと、foo.txt というファイルは/home/greg/home/other の両方に存在することが可能ですが、それらふたつの foo.txt を同じディレクトリに配置することはできません。 さらに、/home/greg ディレクトリの外から foo.txt にアクセスするには、ディレクトリ名をファイル名の前につけて /home/greg/foo.txt としなければなりません。 プログラミングの世界における名前空間も、この延長線上にあります。

PHP の世界では、名前空間は次のふたつの問題を解決するための手段として用意されています。 ライブラリやアプリケーションの作者が、 クラスや関数といった再利用可能なコード部品を作ろうとするときにこれらの問題にぶちあたることになります。

  1. あなたが作成したコードと PHP の組み込みのクラス/関数/定数 あるいはサードパーティのクラス/関数/定数の名前が衝突する
  2. 最初の問題を解決するためには、Extra_Long_Names のような長い名前をつけなければならない

名前空間の概要がすごい・・。ぶちあたるって・・どういう言い回しなんだ。仮にもPHP日本語公式サイト、この言い回しは、あまり適切とはいえないものの。クスってなりました。確かに名前空間ぶちあたりそうな考えです。この解説を読むと結構わかりやすく書いているのではないかと感じました。シンプルで分かりやすい例えのように感じます。

タグ

foo.txt, greg, home, PHP 5, アプリケーション, クラス, サードパーティ, ディレクトリ, ディレクトリ名, ファイル, プログラミング, ライブラリ, 分かりやすい例え, 名前空間, 定数, 抽象概念, 概要, 組み込み, 言い回し, 関数,

プログラムのレベル、自己評価。自己嫌悪。自画自賛。

2015.05.01

Logging


例えば、ExcelVBAはたぶんソコソコ良い感じだと自分で思っています。Accessも基本VBAがベースなので同じくソコソコ良い感じだと思っています。今ままでVBAで本気を出したことはないけれど恐らく( `д´) ッ!となるレベルです。続いてWEB系のperlですが、これは普通ぐらい・・・ここ数年使ったことがありません。PHPですが、まぁこちらも普通レベルですね。仕事としてまぁ難易度高くなければそつなくこなす程度です。続きましてjqueryとかjavascriptですが大好物です。特にDOMが好きです。むかし凝ってましたが今は、かなり忘れてしまってます。WEB系はCMSをバリバリこなして一人前ですが、ググりゃ何とかいけるレベルです。そつなくこなしている程度です、なので一人前かどうかは分かりません。またまた、続いてソフトウェア系の開発言語にいきまして、Java言語、あまりにもこの言語でコードを書いた事がないので、ググりながらメソッドなどを調べたりライブラリを調べたりしないと言う感じで比較的に難しいです。続いてVB2005以上、こちらはまぁ出来るかなぁぐらいです。続いて続いてVC++ですが、VBが理解できれば応用は効きます。それぐらいの知識です、深くなく浅瀬です・・・・。ここまで書いて読者の皆さんは理解したと思いますが自分は総合的なプログラムレベルは言いませんが・・・昔は自分なんて全然駄目だと感じていたのですが、いろいろな人のコードを見てきた結果、どのレベルに自分がいるかこの頃、見えてきました。あと少しで自分の目標に達成しそうな気がします。あとは時間と努力の問題かなと思ってます(どのぐらい多くコードを書いて自分の身になるかだと思ってます)。
今後、この職業で飯を食うかは分かりませんが、副業としては確実に続けていきます。その方が気楽かなと思っています。
 

タグ

, ExcelVBA, javascript, Java言語, jquery, perl, VB2005以上, VC++, コード, ソフトウェア系, それぐらい, プログラム, むかし, メソッド, ライブラリ, 一人前, 基本VBA, 浅瀬, 自己嫌悪, 自画自賛, 難易度,