アンフォローが多発しているのでアンフォローした人には自動でお礼コメントする。

2021.07.15

Logging

アンフォローが多発しているのでアンフォローした人には自動でお礼コメントするようにプログラミングコードを書いて五分間で処理を実行するようにcrontabに設定しました。ソースコードの一部を記載しますのでご自分の環境に合わしてご自由にお使いくださいませ。尚、TwitterOAuthライブラリを使用しておりますが、ライブラリの導入などに関しては割愛しております。

何故、こんなコードを書いたのか余談。フォロワーさんが外れるのはあまり嬉しいことではないですよね。離れていく人を食い止めようとは思いませんが、最後のお礼コメントぐらい言わせてくださいなという考えの元、今回のお礼コメントをするPHPのコードを書きました。相変わらずソースコードにコメントはありません、悪しからず?。

尚、一回目は一部コメントアウトして実行ください?

<?php
require_once("../vendor/autoload.php");

use Abraham\TwitterOAuth\TwitterOAuth;

if ($argv[0]) {
    require_once "./tw-config.php";
    $f_data = @file_get_contents("followers.dat");
    $f_data = $f_data?explode(PHP_EOL,$f_data):[];     

    date_default_timezone_set('Asia/Tokyo');
    $connection = new TwitterOAuth(CONSUMER_KEY, CONSUMER_SECRET, ACCESS_TOKEN, ACCESS_TOKEN_SECRET);
    $response = $connection->get("followers/ids", array(
        'screen_name' => 'zip358com',
        'count'=>1000
    ));

    $unFolloewers = array_diff($f_data,$response->ids);
    $data = @implode(PHP_EOL,$response->ids);
    file_put_contents("followers.dat",$data);

    if($unFolloewers){
        foreach($unFolloewers as $key=>$val){
            $response = $connection->get("users/show", array(
                'user_id' =>$val
            ));
            $text = "@".$response->screen_name. " さん 今までフォローありがとうございました(¯―¯?)。{フォロー解除されました? ([atmark]zip358comより自動投稿)}";
            print $text;
            $connection->post("statuses/update", array("status" => $text . " \n"));
        }
    }
}

タグ

aut, crontab, lt, once, php, quot, require, TwitterOAuth, vendor, アウト, アン, お使い, お礼, コード, こと, コメント, ご自分, ソース, フォロー, フォロワー, プログラミング, ライブラリ, , 一部, , , 今回, 何故, 余談, 使用, , 処理, 割愛, 多発, 実行, 導入, 最後, 環境, 自動, 記載, 設定,

メガネかけたら

2020.08.03

Logging

メガネかけたら、『誰、お前は?』『お前は誰だ?』状態になります。
マスクをすると一段と不審者みたいな人になる。
でも、メガネをかけないと狐の目ぐらい細い瞳になっているみたいです。

視力は両目で0.7ぐらいです。メガネを掛けるとシャープに見えるようになります。片眼では0.5ぐらいです、パソコンのディスプレイとか観る場合はメガネを掛けることは無いだけど、遠くの何かを識別しないといけない仕事などにはもう付けない、アウトだ。

遠くは、いい具合にぼやけて見えてしまいます。これで今まで困ったことはないのだけどね・・・悪化すると困るだろうね。

因みにパソコンの前で寝落ちとかして、目が覚めるとたまに世界がぼやけて見えるときがあります、数十秒続いて回復するのですが、はじめてなった時はこのままぼやけた世界のままかと焦りました?

遠くを見ることと自然を見ることは本当に意味があるだって、そして、視力検査のまえに遠くを見る、近くを見るの数分間続けると視力検査の時に視力がある程度、改善された状態になります。嘘だと思って試してみてください。

タグ

0.5, 0.7, アウト, お前, こと, これ, シャープ, たま, ディスプレイ, とき, パソコン, まえ, マスク, まま, メガネ, 不審者, 世界, 両目, , 仕事, 何か, 具合, , 回復, 場合, 悪化, 意味, 数分, 数十, , 本当, 検査, 片眼, 状態, , , , 自然, 落ち, 視力, , 識別, 近く, 遠く,

WPの記事を検索し一括カテゴリ変更する方法。

2020.05.25

Logging

WPの記事を検索し一括カテゴリ変更する方法は下記になります。ワードプレスのwp-load.phpを読み込み、下記のようなソースコードのファイルをcommandで実行すると、カテゴリが任意のカテゴリに変更されます。

重要点はwp_set_post_categoriesの引数です。arrayの配列の数値ですが、この数値をカテゴリIDのナンバーに変更することによってカテゴリが更新されます。

企業でご使用する場合はカテゴリ更新部分を一度、コメントアウトしCSVか何かでうまく記事が抽出できているか確認した後に、更新するようにお願い致します、当然ながら不具合等の苦情は受け付けません。自己責任でご使用くださいな。

尚、この下記のコードの意味がわからないという方は下記のURLからそれぞれのワードプレスようのメソッドが何を意味しているか調べてくださいね。
https://elearn.jp/wpman/

<?php
require_once(__DIR__ . '/../wp-load.php');
if ($argv[0]) {
    $args = array(
        'post_type ' => 'post',
        'posts_per_page' =>-1,
        's' => '映画'
    );
    $posts = get_posts($args);
    foreach ($posts as $val) {
        $href =  get_permalink($val->ID);
		$title = get_the_title($val->ID);
		$cnt++;
		echo $cnt.":".$title."\n".$href."\n";
		wp_set_post_categories($val->ID,array(1,2,3));
    }
}

タグ

-Command, 39, array, categories, CSV, DIR, ID, lt, once, php, POST, require, set, url, wp, wp-load, アウト, お願い, カテゴリ, コード, こと, コメント, ご使用, ソース, それぞれ, ナンバー, ファイル, プレス, メソッド, ワード, 一度, 一括, 下記, 不具合, 任意, 企業, , 何か, 使用, 場合, 変更, 実行, 引数, 当然, , 意味, 抽出, 数値, , 方法, 更新, 検索, 確認, 自己, 苦情, 記事, 責任, 部分, 配列, 重要点,

はてな?リモートワークとお仕事。

2020.04.13

Logging

リモートワークになれば仕事が増えるのか?自分はその逆で仕事が減る、仕事ができない人はデスクワークではいらなくなる。ある一定の基準を満たしていないとアウトになる。そして中小企業が消えていくような時代になると思います。何故、デスクワークの中小企業が減ってくるのか?

リモートワークになれば人材は世界中から人材を集められるから、別に日本で駄目だという制限がなくなる。別に下請けに仕事を頼まなくても良くなるから下請けは消えていくだろうなと思います。

リモートワークは良いところは本当に技術力があるひとが認められる社会になるということだけかなと思います。これからIT関係で言えばセキュリティに強い技術者が重宝される時代になると思います、また英語が話せる技術者も有利になるかなと思います。

タグ

IT, アウト, お仕事, こと, これ, セキュリティ, デスク, ところ, はてな, ひと, リモート, ワーク, 一定, 下請け, 世界, 中小企業, , 人材, 仕事, 制限, 基準, 技術力, 技術者, 日本, 時代, 有利, 本当, 社会, 自分, 英語, , 重宝, 関係, 駄目,

42Tokyo:フォーティツー東京に入れたらラッキー!?

2020.02.25

Logging

プログラマーってカッコいい職種ですよね(・(ェ)・)というイメージが動画で表現されているのですが、果たしてそうなのか?、一昔前はオタク的な職業でかつ異質な職種と知られていた職種がこんなカッコいい職業みたいになるなんて思ってもいなかったです。

42 Tokyo ConceptFilm|「Just coding. 42東京、はじまる。」

ちなみに地方のsier(エスアイヤー) 企業にはくれぐれも入らないようにという事だけは伝えたい。特に考え方が一昔前だとアウト。自分もいろいろ求職活動していて何かここ発展しそうだなと感じる職場が少ないなと感じます。それは県外から高知へ進出してきた会社も中にも少しだけ有るなと感じます。
https://type.jp/et/feature/8390 ←エスアイヤーに関してはひろゆき氏が語ってます。】

古い考え方だとIT業界は駄目な理由は、この業界だけに言えることなのかどうかは?(はてな)としても。IT技術は日進月歩です、そんな中で「私達の開発した技術は古い技術なので古いOSで動かしてください」とか言っていたら、それはもう、沈みゆく船に乗っているのと同じことなので、この業界に関しては新しい技術に挑み続けなければいけないのではないかと思っています。

なので、やはり考え方が古いと感じたら辞退したほうが良いと思います。これから先、世の中どうなるかわからないけれど、一つだけ言えることはどんな不況下でもスキルが高い人材は生きていけます。そしてそれがニッチだったら尚良しです、高確率で仕事にありつけるでしょう。

42 Tokyo About Piscine|「諦めないで、挑戦し続けること。」

ちなみに42Tokyoは、門は開いているけれど試験通過しないといけないらしいので、誰でも無料で学べるわけではないという事です。結構、試験通過するのが厳しいみたいですね。ただ入学出来ればスキルは身につけれそうな気がします。

やってみたい方はこちらにリンクを貼っときます。
https://42tokyo.jp/

タグ

42, 8390, et, feature, https, IT, jp, sier, Tokyo, type, アウト, イメージ, いろいろ, エス, オタク, くれぐれ, ここ, こと, それ, ツー, はてな, ひろゆき, フォーティ, プログラマー, ラッキー, , , , 企業, 会社, 動画, 地方, 少し, 技術, 日進月歩, , 東京, 業界, 求職, 活動, 理由, 異質, 発展, 県外, , 考え方, 職場, 職業, 職種, 自分, 表現, 進出, 開発, 駄目, 高知,

テキストを日本語ボイスに変換してくれるしょぼいWindowsソフトを作ったよ。

2020.01.21

Logging

VS2017のC#で、テキストを日本語ボイスに変換してくれるしょぼいWindowsソフト( 滑舌が悪いけどYOUTUBERしたい人用)を作ったよ。自分はかなり滑舌悪いくてどもるので、YOUTUBER向かないのですがユーチューバーしてみたい願望があったので、Gさんの「Cloud Text-to-Speech API」で適当に作ってみた。ちなみにまだYOUTUBERするかは決めてない!

APIですが月に0?100万文字までは無料枠なので、大量に使わない限り無料枠で収まると思います。これを他の人に提供しようとするとアウトだろうけど・・。
自分だけが使用するのには何とかその範囲内かと思います。

尚、ソースコードを提供します可変してお好みで使ってください。大量のテキストをボイス変換した場合、ビジーになるかもしれません。そこら辺の処理は入れてません。またGさんからダウンロードしたJSONファイルを置いている階層に合わしてください。

参考にしたサイトは下記になります。
https://cloud.google.com/text-to-speech/docs/quickstart-client-libraries?hl=ja#client-libraries-install-csharp

フォームのオブジェクトの配置は下記になります。画像を参照ください。

ソースコードは下記になります。

using System;
using System.IO;
using System.Windows.Forms;
using Google.Cloud.TextToSpeech.V1;
namespace テキストを日本語ボイスする
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        private void button1_Click(object sender, EventArgs e)
        {
            if(richTextBox1.Text.Replace("\r", "").Replace("\n", "") == "")
            {
                MessageBox.Show("文字を入力してください");
                return;
            }
            Environment.SetEnvironmentVariable("GOOGLE_APPLICATION_CREDENTIALS", "C:\\xxxxx\\xxxxx\\xxxxx\\xxxxx.json", EnvironmentVariableTarget.Process);
            TextToSpeechClient client = TextToSpeechClient.Create();
            SynthesisInput input = new SynthesisInput
            {
                Text = richTextBox1.Text.Replace("\r", "").Replace("\n", "")
            };
            VoiceSelectionParams voice = new VoiceSelectionParams
            {
                LanguageCode = "ja-JP",
                Name = "ja-JP-Wavenet-A",
                SsmlGender = SsmlVoiceGender.Neutral,
            };
            AudioConfig config = new AudioConfig
            {
                AudioEncoding = AudioEncoding.Mp3,
                SpeakingRate = f1(trackBar1.Value),
                Pitch = f2(trackBar2.Value),
            };
            var response = client.SynthesizeSpeech(new SynthesizeSpeechRequest
            {
                Input = input,
                Voice = voice,
                AudioConfig = config
            });
            DateTime dt = DateTime.Now;
            string dttimename = dt.ToString("yyyy-MM-dd-HH-mm-ss");
            using (Stream output = File.Create("voice-" + dttimename + ".mp3"))
            {
                response.AudioContent.WriteTo(output);
                Console.WriteLine($"Audio content written to file 'voice - " + dttimename + ".mp3'");
                MessageBox.Show("生成しました=>>voice - " + dttimename + ".mp3");
                System.Diagnostics.Process.Start(Directory.GetCurrentDirectory());
            }
        }
        private void trackBar1_ValueChanged(object sender, EventArgs e)
        {
            label3.Text = string.Format("{0:0.00}", f1(trackBar1.Value));
        }
        private void trackBar2_ValueChanged(object sender, EventArgs e)
        {
            label4.Text = string.Format("{0:0.00}", f2(trackBar2.Value));
        }
        private double f1(int a) {
            return Convert.ToDouble(a) / 100;
        }
        private double f2(int a)
        {
            return Convert.ToDouble(a) - 20;
        }
    }
}

変換したボイスはこんな感じです!

タグ

0, 100, 2017, API, Cloud, json, Text-to-Speech, VS, Windows, YOUTUBER, アウト, お好み, かなり, コード, これ, ソース, そこら辺, ソフト, ダウンロード, テキスト, ビジー, ファイル, ボイス, ユーチューバー, , , , 使用, 処理, 場合, 変換, 大量, 提供, 日本語, , , 滑舌, 無料, 範囲, 自分, 適当, 限り, 願望,

ちょっとした物。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, アウト, アクセス, インスタグラム, コード, こと, コメント, デフォルト, トークン, ところ, バージョン, プログラム, 下記, , 今後, 使用, 動作, 取得, 可能性, 場合, 方法, , 理解, 画像, 確認,

クローラーするサービスの基礎。

2016.11.19

Logging

クローラーするサービスの基礎のソースを載せときます。殆どサイボウズ・ラボの人が書いたコードです。
このサンプルソースをそのまま貼り付けても一階層のリンクしか取得できません。
再帰処理の部分をコメントアウトしているからです。ちなみにコメントアウトを外してもメモリオーバーでおそらく
大体のサーバでエラーが出力されます。どうしたら良いのかといえば、DBに1階層目のリンクデータ、2階層目のリンクデータという様に保存する機能を施す。次にajaxで階層を受け渡しながら、再帰処理を行う。
再帰処理が終わる要素はそれ以上、下階層がないことを判断する。そのためには保存したデータを検索することが重要になる。=(イコール)
新規にデータを登録しているうちは、再帰処理を終わらせないようにすることが大事になる。
これの機能を加えることで巡回する事が可能になる。ここで注意しないといけないのが、外部リンクを保存しないことです。外部リンクまで保存していると巡回は永遠に終わらないでしょう・・・。
トイウコトデ
ほぼ??コピペソースを貼っときます。

<?php
echo json_encode($obj);
exit;
function get_linkarray($link)
{
	$context = stream_context_create(array("http" => array("method" => "GET", "header" => "User-Agent: simplecrawler.library.php 0.0.1")));
	$resultR = array();
	$resultS = simplecrawler($context, $link, $link, parse_url($link));
	foreach ($resultS as $k => $v) {
		$resultR[] = $v;
	}
	return $resultR;
}
function simplecrawler($context, $link, $burl, $base, $linkArrayDat = array())
{
	$linkArrayPre = crawler_link(crawler_page($link, $burl, $base, $context), $link, parse_url($link));
	foreach ($linkArrayPre as $k => $v) {
		if (!isset($linkArrayDat[$v])) {
			$linkArrayDat[$v] = $v;
			//$linkArrayDat = array_merge($linkArrayDat, simplecrawler($context, $v, $burl, $base, $linkArrayDat));
		}
	}
	return $linkArrayDat;
}
function crawler_page($link, $burl, $base, $context)
{
	if (strpos($link, $burl) === 0) {
		$page = @file_get_contents($link, false, $context);
		return $page === FALSE ? null : $page;
	} else {
		return null;
	}
}
function crawler_link($page, $burl, $base)
{
	$linkArray = array();
	if ($page === null) {
		return $linkArray;
	}
	preg_match_all("/[\s\n\t]+href\s?=\s?”(.*?)”/i", $page, $href);
	for ($i = 0; $i < count($href[1]); $i++) {
		$link = $href[1][$i];
		if (preg_match("/^http(s)*\:\/\//", $link)) {
			$result = $link;
		} elseif (preg_match("/^\/.+$/", $link)) {
			$result = $base["scheme"] . "://" . $base["host"] . $link;
		} else {
			// echo $base["path"] . “\n”;
			$b = preg_split("/\//", dirname($base["path"]));
			$t = preg_split("/\//", $link);
			foreach ($t as $v) {
				$l = $v === "." ? true : ($v === ".." ? array_pop($b) : array_push($b, $v));
			}
			$result = $base["scheme"] . "://" . $base["host"] . join("/", $b);
		}
		$linkArray[$result] = $result;
	}
	return $linkArray;
}

タグ

, 2, ajax, db, アウト, イコール, うち, エラー, オーバー, クローラー, コード, ここ, こと, コメント, これ, サーバ, サービス, サイボウズ, サンプル, ソース, それ, ため, データ, トイウ, メモリ, ラボ, リンク, , , , , 保存, 再帰, 処理, 出力, 判断, 取得, 可能, 基礎, 外部, 大事, 大体, 巡回, 新規, 検索, 機能, 殆ど, 永遠, 注意, 登録, 要素, 部分, 重要, 階層,

ついに買わないといけない時がきました。まだ買わないけど。

2015.02.02

Logging


ついに買わないといけない時がきました。そう、メガネを買わないといけない時がきました・・・・。昨日、メガネ屋で視力検査をすると右0.5左0.5になってましたので両目で0.7届くか届かないところの微妙ラインな感じになっています。免許証の更新時にアウトになる可能性を秘めているので結構あぶない感じです。なので、誕生日前にはメガネを買う予定になりました・・・。視力検査した後にレンズの度数調整する器具で視力検査をするとめちゃめちゃハッキリくっきり見えたので驚きました。こんなにも違うのってぐらいよく見えたのでメガネってすごいなと。。。。ただ、免許証の書き換えだけの為に購入しないといけないのが結構痛い感じがしますね。ちなみに近視と乱視だそうで、とくに左目は乱視がひどくて全部、二重に見えたりしている状態でした。
トイウコトデ、今年からメガネデビューします(´Д`);→普段はかけないけどね。目が悪くなったら嫌だし・・・・。

タグ

, アウト, あぶない感じ, トイウコトデ, メガネ屋, レンズ, 両目, 乱視, 免許証, 全部, 可能性, 右0.5左0.5, 器具, 左目, 度数, 微妙ライン, 普段, 書き換え, 痛い感じ, 視力検査, 近視,