画像をタイル状に分離して一括ダウンロードさせるジェネレーター
2019.09.07
画像をタイル状に分離して一括ダウンロードさせるジェネレーターを
作ってみました。画像は自動的に削除されます?
あることをすれば他人の画像がアップした画像も削除されます。
ちなみに一括ダウンロード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
タグ
1, 14, 30, 358, 4, 5, 64, archives, base, button, Chrome, com, demo, ex, html, https, index, m-yabe, tool, www, zip, アップ, オンリー, コード, こちら, こと, サーバー, サイト, ジェネレーター, ソース, タイル, ダウンロード, はい, ファイル, ブラウザ, ページ, 一括, 下記, 他人, 保存, 処理, 分離, 削除, 動作, 参考, 問い合わせ, 変更, 強制, 格納, 生成, 画像, 表示, 複数, 追記, 選択,
TinyMCE 5.0でオリジナルプラグイン作成するはググれば何とかなるが?
2019.07.27
TinyMCE 5.0で独自のプラグインを開発するにあたって
ググれば4.0で作成する方法は山ほど例題があるのだけど5.0は
非常に少ないtinymce.windowManager.openを使用してのプラグインは
5.0でも案外簡単に見つかるのだけど、tinymce.windowManager.openUrlを
使用しての情報はググってもない。
唯一、公式サイトが記載しています。
しかし残念なことに全て英語で書かれています。
日本語で記載しろよという話だけど・・・・。
で!!tinymce.windowManager.openUrlで
何が出来るかと言えば外部ファイルを
読み込みが出来てそのレスポンスを受け取る事が出来るのです。
英語が嫌いでも原文で英語を読め!!ですよ・・・。
答えはそのページに書いているのですね。
※ちなみに会社でこの機能(e.windowManager.openUrl)を
使用し開発中です。
たぶん、自分みたいに困っている人もいると思うので
基本的な部分を記載しています、なお自作プラグインの作り方は
理解しているという前提で記載しています。
まず例としてPHPファイルを読み込みたいのなら
自作プラグインのPHPファイルに下記の記載を行います。
<!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">
<link rel="stylesheet" href="/tool/bootstrap/css/bootstrap.css">
<script src="/tool/jquery/jquery-3.4.1.js"></script>
</head>
<body>
<form method="post">
<input type="text" name="L_japan" class="form-control">
<input type="text" name="L_English" class="form-control">
<input type="button" name="submitbtn" value="恩恵を受ける"class="btn btn-primary">
</form>
<script>
var chageJson = function(data) {
console.log(data);
var JsonData = [];
for (i = 0; i < data.length; i++) {
JsonData[data[i].name] = data[i].value
}
//console.log(JSON.stringify(data));
return JsonData;
}
$("[name=submitbtn]").on("click",function(){
data = chageJson($("form").serializeArray());
window.parent.postMessage({ mceAction: 'customAction',data:data});
window.parent.postMessage({ mceAction: 'close' });
});
</script>
</body>
</html>
PHPファイルはこのような感じでjavascriptが大事ここで、
submitを行っています。
当然、JSON形式で返却しましょう。公式ページにも書かれいますが
mceActionで制御しましょう。
プラグイン側のJSは下記のようになります。
(function() {
tinymce.create('tinymce.plugins.language_boon', {
init : function( ed, url) {
console.log(ed);
act =function(ed)
{
ed.windowManager.openUrl(
{
type: 'panel',
title: '恩恵を受ける',
url:url + "/language_boon.php",
onMessage:function(api, details){
console.log(api, details);
console.log('オレオレjapan', details.data.L_japan);
console.log('オレオレEnglish', details.data.L_English);
}
});
};
// window.addEventListener('message', function (event) {
// console.log(event);
// var data = event.data;
// console.log(data.data);
// if(ed.settings.id == data.data.id_){
// console.log('オレオレjapan', data.data.L_japan);
// console.log('オレオレEnglish', data.data.L_English);
// }
// });
ed.ui.registry.addButton('language_boon',{
title : '恩恵を受ける',
text: '恩恵',
onAction:function(){act(ed)}
});
},
getInfo : function() {
return {
longname : 'tinymce.plugins.language_boon',
author : 'taoka',
authorurl : 'https://zip358.com',
infourl : 'https://zip358.com',
version : '1.0'
};
}
});
tinymce.PluginManager.add('language_boon', tinymce.plugins.language_boon);
})();
公式ページは下記のリンクより
https://www.tiny.cloud/docs/ui-components/urldialog/#urldialoginstanceapi
サンプルサイトはこちら
https://zip358.com/tool/editor/
著者名 @taoka_toshiaki
※この記事は著者が30代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
4.0, 5.0, open, openUrl, TinyMCE, windowMan, windowManager, オリジナル, こと, サイト, ファイル, プラグイン, ページ, レスポンス, 事, 会社, 何, 作成, 使用, 例題, 全て, 公式, 原文, 唯一, 外部, 嫌い, 山ほど, 情報, 方法, 日本語, 機能, 残念, 答え, 簡単, 英語, 記載, 話, 開発,
Standard PHP Library(SPL)というライブラリーには便利な関数が入っている。
2019.04.07
The Standard?PHP?Library (SPL) は、標準的な問題を解決するためのインターフェイスやクラスを集めたものですと公式ページに書かれている通り
便利な関数です。例としてspl_autoload_registerを紹介。
ぐぐるとどんな機能なのか書かれているので割愛してます。
<?php
spl_autoload_register(function($name){
include __DIR__ . DIRECTORY_SEPARATOR ."class" . DIRECTORY_SEPARATOR . $name . '.php';
});
$class_demo = new class_demo();
著者名 @taoka_toshiaki
※この記事は著者が30代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
autoload, class, demo, DIR, DIRECTORY, function, include, Library, lt, name, new, php, register, SEPARATOR, SPL, Standard, The, インターフェイス, クラス, ため, ページ, もの, ライブラリー, 例, 便利, 公式, 割愛, 問題, 機能, 紹介, 解決, 通り, 関数,
javascriptでテキストファイルやCSVファイルを読み込む方法。
2018.11.13
javascriptでテキストファイルやCSVファイルを読み込む方法は下記になります。
この他に、jqueryだとajaxを使用して読み込む方法などもありますが、あえて
javascriptで記述しています。
rt();
function rt(){
var xmlHttp = new XMLHttpRequest();
xmlHttp.open("GET","xxx.txt",true);
xmlHttp.send(null);
xmlHttp.onload = function(){
var data = xmlHttp.responseText;
}
}
追記:アクセス数が結構あるのでサンプルを作りました。
下記のコードをお試しください。
デモページはこちらになります。
https://zip358.com/tool/demo13/ 【改良前】
https://zip358.com/tool/demo13/index2.php 【ちょっと改良】
https://zip358.com/tool/demo13/index3.php 【もうちょっと改良】
https://zip358.com/tool/demo13/index4.php 【もっと改良】
https://zip358.com/tool/demo13/index5.php 【もっともっと改良】2022年度版
※文字の中にカンマ区切りがあるのには対応してません?
"use strict";
var csv = {
load:async function(filename,id){
await fetch(filename).then(data=>data.text()).then((res)=>{
let result = (res.split("\r\n").map(value=>{
return "<tr>" + (value.split(",").map(val =>{
return "<td>" + val.slice(1, -1) + "</td>";
})).join("") +"</tr>";
})).join("");
if(result){
document.getElementById(id).innerHTML = result;
}
}).catch(m =>{
console.error(m);
});
return true;
}
}
csv.load("xxx.csv", "table");
"use strict";
var csv = {
load:async function(filename,id){
const res = await fetch(filename);
const data1 = await res.text();
let separate1 = /\r\n/;
let separate2 = ",";
let data_tbl = (data1.split(separate1)).map(function(value){
return (value.split(separate2)).map(function(value1){
return value1.slice(1, -1);
});
});
var str = "";
for (const key in data_tbl) {
str+=`<tr>`;
for (const key1 in data_tbl[key]) {
str+=`<td>${data_tbl[key][key1]}</td>`;
}
str+=`</tr>`;
}
document.getElementById(id).innerHTML = str;
return "OK";
}
};
csv.load("xxx.csv", "table");
"use strict";
var csv = {
load: function (filename, id) {
fetch(filename).then(
Response=>{
return Response.text();
}).then(data1 =>{
let separate1 = /\r\n/;
let separate2 = ",";
let data_tbl = (data1.split(separate1)).map(function(value){
return (value.split(separate2)).map(function(value1){
return value1.slice(1, -1);
});
});
var str = "";
for (const key in data_tbl) {
str+=`<tr>`;
for (const key1 in data_tbl[key]) {
str+=`<td>${data_tbl[key][key1]}</td>`;
}
str+=`</tr>`;
}
document.getElementById(id).innerHTML = str;
return "OK";
}).catch(error=>{
console.log("失敗しました" + error);
})
}
};
csv.load("xxx.csv", "table");
"use strict";
var csv = {
load: function (filename, id) {
var xmlHttp = new XMLHttpRequest();
xmlHttp.open("GET", filename, true);
xmlHttp.send(null);
xmlHttp.onload = function () {
if (xmlHttp.status === 200) {
let separate1 = /\r\n/;
let separate2 = ",";
let data1 = xmlHttp.responseText;
let data_tbl = (data1.split(separate1)).map(function(value){
return (value.split(separate2)).map(function(value1){
return value1.slice(1, -1);
});
});
var str = "";
for (const key in data_tbl) {
str+=`<tr>`;
for (const key1 in data_tbl[key]) {
str+=`<td>${data_tbl[key][key1]}</td>`;
}
str+=`</tr>`;
}
document.getElementById(id).innerHTML = str;
}
};
}
};
csv.load("xxx.csv?123", "table");
"use strict";
var csv = {
load: function (filename, id) {
var data = {};
var xmlHttp = new XMLHttpRequest();
xmlHttp.open("GET", filename, true);
xmlHttp.send(null);
xmlHttp.onload = function () {
if (xmlHttp.status === 200) {
let separate1 = /\r\n/;
let separate2 = ",";
let data_org = xmlHttp.responseText;
let data_en = data_org.split(separate1);
for (let d in data_en) {
data[d] = data_en[d].split(separate2);
}
//data load
var t = document.getElementById(id);
var h = "<table>";
for (var o in data) {
h += "<tr>";
for (var r in data[o]) {
h += "<td>";
h += data[o][r].slice(1, -1);
h += "</td>";
}
h += "</tr>";
}
h += "</table>";
t.innerHTML = h;
}
};
}
};
csv.load("xxx.csv", "table");
著者名 @taoka_toshiaki
※この記事は著者が30代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
358, ajax, com, CSV, data, function, GET, https, javascript, jquery, new, null, onload, open, quot, responseText, rt, send, too, true, txt, var, xmlHttp, XMLHttpRequest, xxx, zip, アクセス, コード, こちら, サンプル, テキスト, デモ, ファイル, ページ, 下記, 他, 使用, 方法, 記述, 追記,
jQueryの基礎1
2018.11.11
世の中、javascriptへの原点回帰が進んでいますが、だからといって、jqueryが無くなるかといえばそうでもない気がします。トイウコトデ、jqueryの基礎的なデモページを作成しました。
ご参考程度どうぞ。これから毎週1回以上、プログラムのデモ的な内容をUPしていきます。自分の勉強や復習の意味合いも兼ねています。プログラム言語はPHP、JS、C#が主の掲載となります。
追記:2021年、jqueryは使わなくなってきています、そのうち使わなくなる可能性があります。
https://zip358.com/tool/demo1/demo1.php
$(function () {
$(".alert.alert-danger").html("未記入です");
$("input").keyup(function () {
if ($(this).val()) {
$(".alert.alert-danger").eq($("input").index(this)).html($(this).val());
} else {
$(".alert.alert-danger").eq($("input").index(this)).html("未記入です");
}
});
$("input").blur(function () {
if ($(this).val()) {
$(".alert.alert-danger").eq($("input").index(this)).html($(this).val());
} else {
$(".alert.alert-danger").eq($("input").index(this)).html("未記入です");
}
});
$("input").focus(function () {
if ($(this).val()) {
$(".alert.alert-danger").eq($("input").index(this)).html($(this).val());
} else {
$(".alert.alert-danger").eq($("input").index(this)).html("未記入です");
}
});
});
著者名 @taoka_toshiaki
※この記事は著者が30代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
1, 2021, alert, alert-danger, eq, function, html, if, input, javascript, jquery, JS, keyup, php, quot, this, UP, val, うち, これ, ご参考, デモ, トイウコトデ, プログラム, ページ, 世, 中, 作成, 内容, 勉強, 原点, 可能性, 回帰, 基礎, 復習, 意味合い, 掲載, 毎週, 気, 自分, 言語, 記入, 追記,
大量アクセス元&高知&鳥羽&専門校
2018.02.22
大量アクセス元&高知&鳥羽&専門&端末。
Not Foundのページに大量アクセス。
著者名 @taoka_toshiaki
※この記事は著者が30代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
Chrome拡張機能、第二弾は思いのほか動作不安定?
2018.01.22
Chrome拡張機能、第二弾は思いのほか動作不安定?
リンクバッチというChrome拡張機能をリリースしたのは
良いのですが、挙動不審がかなりひどい感じです、何故、そうなっているのかは
理解できているのですが、対応が出来ていないのです。
おそらくFunctionの中で動作を行えば良いような話なんだけども・・・。
悩ましい。
もうひとつのアットマークシェアは結構便利かなと
自分は思っています、誤作動もなく動いています・・・何せ基となるコードは数行ですからね。
リンクはそれぞれこちらのリンクになります。
Linkbat(ページ内のリンクURLを一括CSV形式コピー)
https://chrome.google.com/webstore/detail/linkbat/cekdkbkcfjingdkcmkoklifflabieakb?hl=ja
@Share(ページのタイトルとURLをコピーします、貼り付けてSNSなどでシェアできます)
https://chrome.google.com/webstore/detail/share/bibjpcaelhbbmpjbcgcjkagnhpfmfcai?hl=ja
著者名 @taoka_toshiaki
※この記事は著者が30代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
Chrome拡張機能, function, Linkbat, アットマークシェア, かなりひどい感じ, コード, フランケンシュタイン, ページ, もうひとつ, リンク, リンクバッチ, 一括CSV形式コピー, 中公新書, 思いのほか動作, 批評理論入門, 数行, 解剖講義, 誤作動,
非公式土佐電つぶやきBOTが完成したが速攻ロックされた件。
2017.07.31
非公式土佐電つぶやきBOTが完成したが速攻ロックされた件だけど
正直な所、少し予想はしていました。
世の中、よく思わない人々がいることは確かなことです。
今回の非公式土佐電つぶやきBOTの制作経緯ですけど・・・
作ろうと構想をねってから5年ほど月日が流れていたモノなんですね。
何故、ここまで時間がかかったかというと土佐電交通の時刻表が簡単に
プログラムで抽出することが不可能なんです。
なので・・・。
当初は人力でデータを入れ込もうと考えていました。
これが一番、長引く原因になったわけです、データを登録しようと
何度も頑張ってみたのですが、情報量が多いので途中で挫折すること何度か。
結局これでは埒が明かないので、
他の方法を考えた結果、WEBストライピングするという事です。
要はサイトのデータ抽出することで解決したのですが、
公式ページはあんな感じなので、よくある電車検索サイトから
データ抽出してきました。
路面電車の時刻表を検索できるサイトを
探すのに手間がかかりましたが、抽出事態は、一日ぐらいで
コーディングする事で何とかなりました。
ちなみにある大手の検索できるサイトからデータを抽出しています。
今回、作って思ったことは
公式ページがPDFじゃなく電車の時刻表が検索でき時刻表が表示されるサイトを作ったら
良いのにと思いました。バスアプリは作っているのに・・・。
https://twitter.com/tosaden_net
{非公式}土佐電時刻表検索を始めました。
https://tosaden.net/
著者名 @taoka_toshiaki
※この記事は著者が30代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
5, BOT, web, ここ, こと, これ, サイト, ストライピング, データ, プログラム, ページ, もの, ロック, わけ, 不可能, 世, 中, 予想, 事, 交通, 人々, 人力, 今回, 他, 件, 何度, 何度か, 何故, 公式, 制作, 原因, 土佐, 埒, 完成, 少し, 当初, 情報, 感じ, 所, 抽出, 挫折, 方法, 時刻表, 時間, 月日, 検索, 構想, 正直, 登録, 簡単, 経緯, 結果, 要, 解決, 途中, 速攻, 電, 電車,
AMP (Accelerated Mobile Pages)HTMLしなさいと勧められる。
2017.07.12
AMP (Accelerated Mobile Pages)HTMLしなさいと勧められるので
WordPressのAMPを導入しました。
さて、「AMPってなんでですかー?」って事だけど
簡単に言えばグーグルが進めているモバイル(スマホ)の表示速度を
改善させるあらたなHTMLなどの記述を指すみたい。
ちなみにアクセルレイテッド モバイル ページと読むそうですよ。
アクセルレイテッドとは加速を意味するものだとか、、。
ほぼHTMLとCSSだけしか許さないので
当たり前のごとく表示速度は速いですが、javascriptの記述に
制限があるので、殆どのWordPressのプラグインjsは動かないと
言っても良いです。
※ちなみにAMPに広告を表示させたい場合などは
プラグインを若干、編集しないといけない場合があります、
また、そのままJSをコピペで貼っても表示されないので
AMP用の記述などが必要になりますが、恐らくAMPじわじわ浸透していく
だろうなぁと感じます。最終的にJSなどがサーバサイドで動かすように
なるじゃないのかなぁと思っています(今はクライアント側で動いているけど)。
著者名 @taoka_toshiaki
※この記事は著者が30代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
Accelerated, amp, css, html, javascript, JS, mobile, Pages, WordPress, アクセル, カー, グーグル, コピペ, じわ, スマホ, テッド, プラグイン, ページ, もの, モバイル, レイ, 事, 制限, 加速, 場合, 導入, 広告, 当たり前, 必要, 意味, 改善, 殆ど, 用, 簡単, 編集, 若干, 表示, 記述, 速度,
明日、JSコードを書きます。
2017.06.09
明日、JSコードを書きます、そしてそのサンプルコードを
公開します。JSでもゴリゴリと書くと便利なんだよというところを
実感したいのですけど・・・・。
じぶん、JSはググる程度の知識しかなく、いままで
ゴリゴリ書いたことがないのですね、そんな自分がサンプルコードを
書いてみます。JSで何が出来るかと言えば動的なページが作れたり
するわけです。一昔前はFlashで行っていたことがFlashには
脆弱性があるとか何とか言われてJSにあれよあれよと取って代わり今では
JSサイトが殆どでFlashサイトなんて見かけなくなりました。
実際、FlashのActionScriptでコードを書いたほうが
簡単で書きやすいと思っているのですが、いまはJSが覇王です・・・。
だだ、あと数年もすればオブジェクト指向になっているでしょうと思いたい。
実際、そんな動きが出てきています。
著者名 @taoka_toshiaki
※この記事は著者が30代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
ActionScript, B01AZ5A9H8, Flash, Flashサイト, JSコード, JSサイト, オブジェクト指向, サンプルコード, じぶん, フロントエンドエンジニア, ページ, 動き, 実際, 必須知識, 殆ど, 脆弱性, 覇王,
僭越ながらSSL化しました。
2016.12.26
僭越ながらSSL化しました。
今まで、httpとhttpsが共存していたサイトだったのですが
先日、httpsに一本化しました。
SEO的にどうでるのかさっぱりわからないですけど
気分的に落ち着いた感じです。
ちなみに昔作ったデモサイトなどは
起動しないや不具合が出ているまま放置しています。
(※サーバ移行時に階層が変わったため)
大体のモノは動いていると思いますが
何らかの影響が出ているかもしれません。
もしそういうページを見つけたらツイッターにご連絡ください。
著者名 @taoka_toshiaki
※この記事は著者が30代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
B00PHC4480, HTTPS環境構築, jp, SEO的, SSL入門, SSL化, サーバ移行時, ツイッター, デモサイト, ページ, 影響, 感じ, 昔, 階層,
仕事の基本、暮らしの基本:しごとのきほん くらしのきほんを買った。
2016.05.23
買った(*・д・) pic.twitter.com/p57c93bAU9
— 田岡 寿章@taoka_toshiaki🦌 (@taoka_toshiaki) May 22, 2016
実行するかは別として、こう言う本すきなんですね。
パッケージからすきで中を開けると
左のページに一行の言葉があり
右のページにその言葉の意味することが記載されてます。
読んでいて、スッと頭に入ってくる感じが
良いなと思います。
著者名 @taoka_toshiaki
※この記事は著者が30代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
jp, いまいち, きほん, くらし, しごと, パッケージ, ページ, ベーシックノート, 一行, 仕事, 右, 基本, 左, 感じ, 暮らし, 松浦弥太郎, 言葉, 頭,
ほっといひといきゆずごごちジュースが旨い(ほっと一息柚子心地)
2016.03.21
「ほっといひといきゆずごこち」ジュースが旨い(ほっと一息柚子心地)です。
土佐れいほく産のゆずを使用したジュースなんですけどすっきりとした味わいで、飲んだ後、口の中が柚子の香りがしてホント、良い感じのジュースです。お値段は130円前後だと思います。
オススメ度は高めですが、蜂蜜アレルギー方や蜂蜜が嫌いという方にはオススメできませんが?
もっとこう言う地産の商品が全国的に有名になれば良いのになどと思います・・・・。
因みにさめうらフーズのホームページから162円(税込)で販売しています。
高知県の嶺北の良心市やスーパーなどにも卸してみているみたいなので、そちらで購入すると少しだけ安く購入することが可能ですよ。高知市内からはかなり遠いです。高知県人が言う田舎に当てはまります・・・?
http://www.sameurafoods.jp/?[さめうらフーズ公式ページ]
著者名 @taoka_toshiaki
※この記事は著者が30代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
130, 162, http, jp, sameurafoods, www, アレルギー, イキ, おすすめ, かなり, ごこち, こと, さめうら, ジュース, スーパー, そちら, フーズ, ページ, ホームページ, ホント, ゆず, れいほ, 一息, 中, 使用, 値段, 公式, 口, 可能, 商品, 土佐, 地産, 嫌い, 少し, 嶺北, 市, 市内, 後, 感じ, 方, 有名, 柚子, 田舎, 県人, 税込, 良心, 蜂蜜, 販売, 購入, 高め, 高知, 高知県,
映画、マネー・ショート華麗なる大逆転を観てきましたので #映画レビュー
2016.03.05
映画、マネー・ショート華麗なる大逆転を観てきましたので感想なんかを残しときます。
映画を観る前にこの映画、実話とは思っていなかったので映画の冒頭にこの映画は事実を基にして作られたとか書かれていたので、いきなり興味度が上がりました。サブプライム住宅ローン問題によってバブル崩壊した内容をコミカルに描かれていて良かったと思います。
そして、そんなバブル崩壊にマネーを稼ぎだしたアウトローな人物がいたとは驚きですね。
全体を通してテンポが良く飽きのこない映像になっていたと思います、だたストリー展開が早いので理解できない人がいる可能性が高いです。
簡単にいえばCDS(クレジット・デフォルト・スワップ)で稼いだという話です。公式ページに書かれている通りに暴落した時に保険金をもらう契約して儲けたという話というだけ理解していればそんなに難しい話ではないと思います。ちなみに社会派の映画なかではアウトローな映像作りになっているかもしれませんが自分は好きです。もしかしたら好き嫌いが別れる映画なのかもしれません。
最後にオススメ商品は水らしいですねw。
?
著者名 @taoka_toshiaki
※この記事は著者が30代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
CDS, アウトロー, クレジット, コミカル, サブ, ショート, ストリー, スワップ, デフォルト, テンポ, なか, バブル, プライム, ページ, マネー, レビュー, ローン, 事実, 人, 人物, 住宅, 保険金, 全体, 公式, 内容, 冒頭, 前, 可能性, 問題, 基, 契約, 実話, 展開, 崩壊, 感想, 映像, 映画, 時, 暴落, 理解, 社会, 簡単, 興味, 話, 逆転, 通り,
WordPressのhttps対応化しました。ページのデザインが崩れる。
2015.08.07
Wordpressのhttps対応化しました。ページのデザインが崩れるため、今までhttpで表示させていましたが対応策がネットに掲載されていたので速攻ためして見たところページの崩れもなく表示されています。サイトのSSL化はこれで一応、完結とします、一部、プラグインがHTTPを参照しているのを除き、殆どのURLはSSLを参照しているので、おそらく大丈夫ではないかと思います。なお、SSL化するに当たってURLはDBを一括置換し、httpsに変換することをお忘れなく。
参照にさせて頂いたサイトのURLです。
※ちなみにFirefoxの警告表示にはまだ、未対応です。
追記:下記の方法で対応、Wordpressフォーラムより引用
functions.phpに下記の内容を記載したらできました。
ありがとうございます。
function override_server_https_env(){
$_SERVER[‘HTTPS’] = ‘on’;
}
add_action(‘after_setup_theme’, ‘override_server_https_env’);
著者名 @taoka_toshiaki
※この記事は著者が30代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
'after_setup_theme', 'override_server_https_env', db, Firefox, function override_server_https, functions.php, https対応化, ON, override, SSL化, url, WordPress, Wordpressフォーラム, サイト, デザイン, ところページ, ネット, プラグイン, ページ, 一括, 一部, 下記, 参照, 完結, 対応策, 崩れ, 殆ど, 警告表示, 速攻,
CURLでページを抽出するのは簡単なのだけど・・・POSTして
2015.05.13
curlでページを抽出するのは簡単なのだけど、いま自分がやりたいことはSSLのサイトにデータをPOSTしてその結果を加工して表示させたいわけなのですが・・・。どうもPOSTする際にデータがうまく渡せてなくてエラー結果のページが表示されるのです。未だ問題が解決せず・・・・。うまく行かない・・・時間だけが流れてしまうので今日のトコロはやらない方法ですが、うまく行けばそのサイトを公表します。結構便利なサイトになるかと思っているのですが当分、無理な感じがします。
著者名 @taoka_toshiaki
※この記事は著者が30代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
1, curl, POST, POSTする際, SSH, SSL, エラー結果, サイト, データ, トコロ, ページ, 当分, 方法, 時間, 未だ問題,
プロフェッショナルの言葉[NHK]。
2014.08.18
プロフェッショナルの言葉っていう本があるのですけど、かなりお経みたいな表紙で気にいって購入しました。中身は暇な時にパラパラめくって読んでいるというスタンスです、ちなみに右側のページにプロフェッショナルの言葉が書いてあり、左側のページに言葉の意味するところを箇条書きでかかれています。右側のページだけ読むでも良いし、左側のページを読んでもっとその言葉の意味する処を理解するのも良いですね。あと、プロフェッショナルの言葉は結構ありますので自分の気に入った言葉が見つかるかもしれません。
このプロフェッショナルの言葉の元ネタはNHKの「プロフェッショナル仕事の流儀」という番組です、各業種でお仕事をされているプロフェッショナルの方々に焦点をあてた番組です。それがプロフェッショナルの言葉の元ネタです、著名人の言葉のまとめみたいな本です。
著者名 @taoka_toshiaki
※この記事は著者が30代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
4478300593, asin, jp, NHK, お仕事, お経, かなり, スタンス, ソレ, ところ, ネタ, プロフェッショナル, ページ, まとめ, 中身, 仕事, 処, 右側, 左側, 意味, 方々, 時, 暇, 本, 業種, 気, 流儀, 焦点, 理解, 番組, 箇条書き, 自分, 著名人, 表紙, 言葉, 購入,