C#SFTPでダウンロードするプログラムの作り方。

2016.12.06

Logging


C#SFTPでダウンロードするプログラムの作り方。
いろいろ調べた結果、こんだけのコードでSFTPでダウンロードする事が
判明。タダシ!!ライブラリが必要なので下記のリンクからTamir.SharpSSH.dll
のライブラリを参照してあげてください。そうすることでSFTPのダウンロードが
可能になります。FTPでの接続方法とかは結構出回っていますが、SFTPの接続プログラムって
あまり落ちてません。ちなみに、その他のライブラリを使う方法にWinSCPのライブラリを
使う方法や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 Tamir.SharpSsh;
namespace ftp
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        private void button1_Click(object sender, EventArgs e)
        {
            Sftp sftp = new Sftp("192.168.11.1", "id", "pass");
            sftp.Connect();
            sftp.Get("/www/html/hoge.mp4", "C:\\Users\\hoge\\Documents\\hoge.mp4");
            sftp.Close();
            MessageBox.Show("キタ━━━━(゚∀゚)━━━━!!");
        }
    }
}

https://ja.osdn.net/projects/sfnet_sharpssh/downloads/SharpSSH/1.1.1.13/SharpSSH-1.1.1.13.bin.zip/

タグ

Collections.Generic, Documents, Form, FTP, hoge, InitializeComponent, object sender, quot, SFTP, Sftp sftp, sftp.Close, System.Text, users, using, using System.ComponentModel, using System.Drawing, using System.Linq, using System.Threading.Tasks, WinSCP, タダシ,

AccessVBAのSQL文で抽出しクエリ出力しCSVファイルで吐き出すコード。

2016.06.17

Logging

Option Compare Database
Private Sub csvconvert_Click()
Dim Path As String
Path = "C:\Users\zip\Desktop\test.csv" 'ファイルが存在すること。
DoCmd.TransferText acExportDelim, , "任意のテーブル名", Path, True
End Sub

Access、VBAのSQL文で抽出しクエリ出力しCSVファイルで吐き出すコード。
まず、フォームにボタン配置とテーブル(吐き出したいデーブル名)を用意してください。なお、SQL文を変更してselect文以外にもJOINしたり、検索を結果をクエリに出力することも可能です。

出力した結果は既存のCSVに吐き出すという処理まで記載しています。
今回、このようなコードを記載したのには訳があります。
こういうコードをやってみたいなと思っても検索したコードはエラーコードばかりでうまく処理されなかったのでそれでは意味が無いと思い。
今回の記載に至りました。

この頃思うのですが、昔の技術者の考え方は古すぎる悩んで考え覚える。なんて効率が悪いでしょうか。おそらく大手の会社ではこのようなスタンスを取っている会社は少ないと思います。いまは、教えて覚えての反復で即戦力をという考えでないと時代に置いてけぼりになりますが地方ではまだ、昔ながらの古い体質があります。業種によれば、そういう教え方がベストかも知れませんがIT業界は、もうその時代は終わっているように思えます

2021/11/18 追記:嫌気が差して出来ないようにしたのを放置していた事を忘れてました?

2022/09/08 追記:概要は教えるべきだが後は考えるべきというか🤔、プログラム教えて理解するものじゃないというのが今の回答かも。技は教えても良い派です。この頃思うのはどこにコメントを入れるべきなのかという事が悩ましい🙄。そして昔のコードは何だこれが多い😱。今も適当だけども…。

タグ

access, CSV, csv&quot, Dim Path As String Path, DoCmd.TransferText acExportDelim, Option Compare Database Private Sub csvconvert_Click, path, quot, SQL文, True End Sub, UserszipDesktop, VBA, クエリ, クエリ出力しCSVファイル, スタンス, デーブル名, 即戦力, 反復, 嫌気, 追記,

ANA旅割逆算日導きサービスモバイル版:最終

2016.05.04

Logging

<!DOCTYPE html>
<html>
    <head>
        <title>ANA旅割逆算日導きサービス(mobile)</title>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link rel="stylesheet" href="jquery-mobile/jquery.mobile-1.4.5.min.css">
    <link rel="stylesheet" href="http://fonts.googleapis.com/css?family=Open+Sans:300,400,700">
    <script src="jquery-mobile/jquery.js"></script>
    <script src="jquery-mobile/jquery.mobile-1.4.5.min.js"></script>
    <style>
        .ui-page{
           background:#73cbe6;
        }
    </style>
    <script>
        $(function(){
            $("#ckday").click(function(){
                //alert($("#day").val().replace(/\-/g,'\/'));
            $.ajax({
                type: 'POST',
                url: "../ana_calendar/json.php",
                data:{day:$("#day").val().replace(/\-/g,'\/')},
                dataType: 'json',
                success: function(obj){
                    var str =   '<ul id="ana_listview" data-role="listview">\n';
                    str = str + '<li>予定日:' + obj.anaday + '</li>\n';
                    str = str + '<li>75日[旅割]の予約期日:' + obj.day75 + '</li>\n';
                    str = str + '<li>55日[旅割]の予約期日:' + obj.day55 + '</li>\n';
                    str = str + '<li>45日[旅割]の予約期日:' + obj.day45 + '</li>\n';
                    str = str + '<li>28日[旅割]の予約期日:' + obj.day28 + '</li>\n';
                    str = str + '<li>21日[旅割]の予約期日:' + obj.day21 + '</li>\n';
                    str = str + '</ul>\n';
                    $("#ana_api").html(str);
                    $("#ana_listview").listview().listview('refresh'); ;
                    }
                });
            });
        });
    </script>
    </head>
    <body>
        <div data-role="page" data-title="ANA旅割逆算日導きサービス(mobile)">
          <!--ヘッダー領域-->
          <div data-role="header">
            <h1>ANA旅割逆算日導きサービス(mobile)</h1>
          </div>
          <div role="main" class="ui-content">
              <input type="date" id="day">
              <button id="ckday" class="ui-btn">逆算する。</button>
              <span id="ana_api"></span>
          </div>
          <div data-role="footer">
            <h3>Copyright zip358.com</h3>
          </div>
        </div>
    </body>
</html>

ANA旅割逆算日導きサービスモバイル版:最終として webから逆算日を導きだすサービスを公開します。
ほんと・・・簡単なものですので 最初からwebで作れたんじゃねぇっていう疑惑が あると思うです。
webゴニョゴニョ…(ノ゚д゚(; ̄Д ̄)っていう誘惑は モバイル版のアプリを作る時からありましたが アプリ作るよって言ったので、有言実行ということで 作ってみました。
作った結果ですけど・・・ ウェブで作れるものはウェブで作ったほうが手間暇かからないという事がわかりました。 http://zip358.com/tool/ana_calendar/?[PC]
zip358.com/tool/ANAmobile/?[モバイル] ?

タグ

1.0, 1.4.5, 8, ANA, charset, content, css, device-width, DOCTYPE, gt, head, href, html, http, initial-scale, jquery, jquery-mobile, link, lt, meta, min, mobile, name, quot, rel, stylesheet, title, UTF-, viewport, Width, サービス, モバイル, 旅割, 最終, 逆算,

指定時間になったら自動的に復帰(スリープ/休止状態)

2015.11.18

Logging

rtcwake -m mem -s 3600
rtcwake -m disk -s 3600
rtcwake -m mem -t $(date +%s -d "2015-11-18 06:30")

上記のコマンドで指定時間になったら自動的に復帰(スリープ/休止状態)する
事ができます。ちなみに3600とは3600秒(1時間後)という意味です。
menはスリープ状態を指し、diskはサスペンドを指します。
スリープ状態では電源ボタン等で指定時間内でも復帰が出来ますが
サスペンドモードでは電源ボタンを押してもパソコンは起動しないので
注意が必要です。
———————
自分はローカルサーバーを立ち上げているのですが
平日など自分が使わない時間帯などはスリープ状態にしています。
そうすることで、電気代の節約をしています。
ローカルサーバーと言っても使わない時間帯は余計な電力は
使いたくないですから(。>?<。)。
Ubuntuなどはこの方法ではうまく行かないと思います。
Ubuntuの事はあまり知らないので分からないのですが・・・・。
※リナックス(Linux)、CentOSの話です。

タグ

```, -m, -s, -t, 06, , 11, 18, 2015, 30, 3600, D-, date, disk, mem, men, quot, rtcwake, こと, コマンド, サーバー, サスペンド, スリープ, パソコン, ボタン, モード, ローカル, 上記, , 休止, 余計, , 平日, 復帰, 必要, 意味, 指定, 時間, 注意, 状態, 節約, 自分, 起動, 電力, 電気, 電源,

昨日の続き、cronPHP(´Д`)、一つのジョブから複数のPHPファイルを実行させる方法。

2015.06.25

Logging

<?php
//5分刻みに対して有効な無限クローン 処理が負荷の場合どうなるかは知りません。
date_default_timezone_set('Asia/Tokyo');
class cron{

    public function d_m($obj)
    {
            if($obj->m==="*")return true;
            if(preg_match("/,/",$obj->m))return $this->comma($obj->m,date("m"));
            if((int)$obj->m === (int)date("m"))return true;

            return false;
    }

    public function d_d($obj)
    {
            if($obj->d==="*")return true;
            if(preg_match("/,/",$obj->d))return $this->comma($obj->d,date("d"));
            if((int)$obj->d === (int)date("d"))return true;

            return false;
    }

    public function d_H($obj)
    {
            if(preg_match("/\*\/[0-9]{1,2}/",$obj->H)){
                $H = explode("/",$obj->H);
                if((int)$H[1]>0 && ((int)date("H") % (int)$H[1])===0)return true;
            }else{
                if($obj->H==="*")return true;
                if(preg_match("/,/",$obj->H))return $this->comma($obj->H,date("H"));
                if((int)$obj->H === (int)date("H"))return true;

            }
            return false;
    }

    public function d_i($obj)
    {
            if(preg_match("/\*\/[0-9]{1,2}/",$obj->i)){
                $i = explode("/",$obj->i);
                if((int)$i[1]>0 && ((int)date("i") % (int)$i[1])===0)return true;
            }else{
                if($obj->i==="*")return true;
                if(preg_match("/,/",$obj->i))return $this->comma($obj->i,date("i"));
                if((int)$obj->i === (int)date("i"))return true;

            }
            return false;
    }

    //曜日 0=日曜日 6=土曜日
    public function d_w($obj)
    {
            if((int)$obj->w[date("w")]===1)return true;
            return false;
    }

    public  function comma($c="",$t=""){
        if($c==="")return false;
        if($t==="")return false;
        $flg = false;
        foreach(explode(",",$c) as $cc){
            if((int)$cc===(int)$t)$flg = true;
        }
        return $flg;
    }


    public function d_command($obj){
        if($obj->command){
            exec($obj->command . " > /dev/null &");
        }
        return true;
    }

}
if ($argv[1]) {
   $filename = $argv[1];
    if(is_file($filename)){
        $jsn = json_decode(file_get_contents($filename));
        $cron = new cron();
        try {
            foreach($jsn as $obj){
                if($cron->d_m($obj)){
                    if($cron->d_d($obj)){
                        if($cron->d_H($obj)){
                            if($cron->d_i($obj)){
                                if($cron->d_w($obj)){
                                    $cron->d_command($obj);//波動拳{{{{
                                }
                            }
                        }
                    }
                }
            }
        } catch (\Throwable $th) {
            print $th->getMessage();
        }
    }
}

 
この頃、ネタがないので手抜き投稿です。気づいた人どのぐらいいるのだろうか?
Qittaに公開しました。https://qiita.com/question909/items/8f1df9b62ab4fba76243

タグ

39, 5, Asia, class, comma, cron, cronphp, date, default, function, gt, if, int, lt, match, obj, php, preg, public, quot, retu, return, set, this, timezone, Tokyo, true, クローン, ジョブ, ファイル, 一つ, 処理, 分刻み, 場合, 実行, 方法, 昨日, 有効, 無限, 複数, 負荷,

クロンを改良しました。前のクロンPHPは恐らくBUGってて。

2015.06.23

Logging


クロンPHPって言っても月や曜日判定はしていません。今回、その判定も行うように変えようと再度、コードを改良しました。前回のコードの約半分ぐらいのコードになってます。土曜日までには、月や曜日の対応を行うようにします。
ちなみにどういう機能をするのかと言いますと、さくらサーバではクロンの制限があります。その制限数以上、使おうとおもって考えたのが、一つのPHPを叩いてクロンがしている事を模倣することでした。
※昨日の話は撤回はしないものの、SEOよりSNSでSEOという考え方に変えました。よくよく考えてみるとアクセス数が多いほど、検索上位表示される確率も増えるのでやはり大事かなとボット。ボットらしくない振る舞いしたボットなら何とか成るかも知れないとも思ってます。

追記2022/09/06:クーロン制限突破方法を記載しています、こちらを参照ください。クーロン制限突破!

command":"cd /home/user/www/user_dir/site/; /usr/local/bin/php cron.php "cron.json"
<?php
//5分刻みに対して有効な無限クローン 処理が負荷の場合どうなるかは知りません。
date_default_timezone_set('Asia/Tokyo');
class cron{

    public function d_m($obj)
    {
            if($obj->m==="*")return true;
            if(preg_match("/,/",$obj->m))return $this->comma($obj->m,date("m"));
            if((int)$obj->m === (int)date("m"))return true;

            return false;
    }

    public function d_d($obj)
    {
            if($obj->d==="*")return true;
            if(preg_match("/,/",$obj->d))return $this->comma($obj->d,date("d"));
            if((int)$obj->d === (int)date("d"))return true;

            return false;
    }

    public function d_H($obj)
    {
            if(preg_match("/\*\/[0-9]{1,2}/",$obj->H)){
                $H = explode("/",$obj->H);
                if((int)$H[1]>0 && ((int)date("H") % (int)$H[1])===0)return true;
            }else{
                if($obj->H==="*")return true;
                if(preg_match("/,/",$obj->H))return $this->comma($obj->H,date("H"));
                if((int)$obj->H === (int)date("H"))return true;

            }
            return false;
    }

    public function d_i($obj)
    {
            if(preg_match("/\*\/[0-9]{1,2}/",$obj->i)){
                $i = explode("/",$obj->i);
                if((int)$i[1]>0 && ((int)date("i") % (int)$i[1])===0)return true;
            }else{
                if($obj->i==="*")return true;
                if(preg_match("/,/",$obj->i))return $this->comma($obj->i,date("i"));
                if((int)$obj->i === (int)date("i"))return true;

            }
            return false;
    }

    //曜日 0=日曜日 6=土曜日
    public function d_w($obj)
    {
            if((int)$obj->w[date("w")]===1)return true;
            return false;
    }

    public  function comma($c="",$t=""){
        if($c==="")return false;
        if($t==="")return false;
        $flg = false;
        foreach(explode(",",$c) as $cc){
            if((int)$cc===(int)$t)$flg = true;
        }
        return $flg;
    }


    public function d_command($obj){
        if($obj->command){
            exec($obj->command . " > /dev/null &");
        }
        return true;
    }

}
if ($argv[1]) {
   $filename = $argv[1];
    if(is_file($filename)){
        $jsn = json_decode(file_get_contents($filename));
        $cron = new cron();
        try {
            foreach($jsn as $obj){
                if($cron->d_m($obj)){
                    if($cron->d_d($obj)){
                        if($cron->d_H($obj)){
                            if($cron->d_i($obj)){
                                if($cron->d_w($obj)){
                                    $cron->d_command($obj);//波動拳{{{{
                                }
                            }
                        }
                    }
                }
            }
        } catch (\Throwable $th) {
            print $th->getMessage();
        }
    }
}
mは月
dは日
Hは時
iは分
wは日曜日から土曜日 0はOFF、1はON
commandは実行コマンド
[
    {
        "m":"*",
        "d":"*",
        "H":"*",
        "i":"*/10",
        "w":[1,1,1,1,1,1,1],
        "command":"cd /home/user/www/user.com/site/; /usr/local/bin/php hoge1.php"
    },
    {
        "m":"*",
        "d":"12,23,28",
        "H":"*",
        "i":"*/15",
        "w":[1,1,1,1,1,1,1],
        "command":"cd /home/user/www/user.com/site/; /usr/local/bin/php hoge2.php"
    }
]

タグ

-Command, 06, 09, 2022, BUG, cd, ho, php, quot, SEO, SNS, アクセス, クーロン, クロン, コード, こちら, こと, サーバ, さくら, ボット, 一つ, 上位, , 今回, 再度, 判定, 制限, , 前回, 参照, 土曜日, 大事, 対応, 撤回, 改良, 方法, 昨日, 曜日, , 検索, 模倣, 機能, 確率, 突破, 約半分, 考え方, 表示, 記載, , 追記,

PHPの正規表現には否定がないみたいだ( ゚д゚ )。

2015.06.17

Logging

DEMO https://zip358.com/tool/url-chk.php
上記のコードを記述するとURLとパラメータを分ける事ができます。最初、正規表現の否定があるだと思っていたのですが調べているうちに正規表現には否定というものが存在しないみたいな事を書いている記事に行き着きました。おそらくPHPの正規表現には否定というものは無いのだと思います。よくよく考えてみると文字の中から文字を抽出する事が正規表現の目的ですので、否定がないのも何となく理解できます。ちなみに、仕事でこういう事を書かないといけない事がありました、その時は否定があるものだと思ってゴリゴリ試していたのですが、結局うまく行かず違う方法で対応しました。結構な駄目プリを魅せつけてしまったので結構凹みました。
話は変わって、昨日はブログをお休みしてました、その訳は法事とかそういう事がある日だったことです。自分は出席したわけではないのですが、そういう事がある日は何の報告もなくブログをお休みします。
追記:こんなコードでなくて切り分けは出来ているのですけどね・・・(ifのところで

<?php
if(preg_match("/(.*)\?(.*)/",$_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'],$m)){
    print(strip_tags($m[0])."<br>");
    print(strip_tags($m[1])."<br>");
    print(strip_tags($m[2])."<br>");
}

タグ

-m, $_SERVER, demo, HTTP_HOST, if, lt, lt;br&gt, php, php if, preg_match, print, quot, REQUEST_URI, strip_tags, パラメータ, 否定, 正規表現, 法事, 追記, 駄目プリ,