コーディング:プログラムコードを書くこと。

2016.07.03

Logging


コーディング:プログラムコードを書くこと。
誰でもプログラムは書くことは出来るのだけど、出来の良いコードが書けるかどうかは、センスとかやる気にも値するし 経験もモノを言う。
例えば、文字を出力する場合、一括出力するのが 大体、シンプルだと言えるけど、前職で働いていた時見たコードの 中には、その時その時に出力する方法で書いた。
これが悪いかどうかと言えば悪くはない。
何故なら、別にエラーを吐き出しているわけでもないのだから悪いコードでもない。ただ、玄人から見れば素人よりな書き方だねと思われるだけ。
ただ、それだけの事だけど書いている本人に 基本的に指摘しないのだ。
その人がナンセンスとは思わない、むしろ、自分は指導しない上司はナンセンスだと思うわけです。
基本的に自分の部下だったら、技は基本的に惜しみなく教えてあげるタイプです。
ちなみにプログラムの勘所は、全体を処理を理解して処理を分割する考え方が必要になります。
それが出来るか出来ないかは、少しセンスが必要になったり、経験が必要になったりします。
[画像提供元]フリー写真素材ぱくたそ

タグ

エラー, コーディング, コード, センス, たそ, プログラム, プログラムコード, 一括出力, 上司, 全体, 処理, 前職, 勘所, 少しセンス, 悪いコード, , 本人, 玄人, 素人, 部下,

CSVのデータ数万行とかをVBAでデータを加工するよりも

2016.05.30

Logging


CSVのデータ数万行とかをVBAでデータを加工するよりもPowerShellから加工するべし、、
まず、いま勤めてる会社、WEB会社なんですが
WEBシステムに使うデータの加工をする機会が結構あったりします。
時には数万行とかのデータを取り込んで
加工することがあるですね。
今まで数万行のデータは分割して
処理をしていたのですが、PowerShellで取り込んで処理する
方法があるみたいなので、これからはソチラで
加工しようかなとか思っています。
ちなみにExcelやPHPだとMバイトのデータを
扱うと処理が落ちる場合が結構あります。
とくにPHPだとファイルをアップロードする場合や
扱えるメモリの設定により処理落ちする事は
多々あります。
なので、PHP側でどうしても
処理を行いたい場合は事前にファイルを分割するか、
処理する時点でshellなどを使いコマンドラインで
ファイルを分割するかなどの方法を
取らないといけないのです。
ファイルをアップロードする時点で
処理を行うか前もって処理を行なったデータを
SQLで読み込むかなど、いろいろな方法があります。
 

タグ

CSV, Excel, Mバイト, php, powershell, SQL, VBA, WEBシステム, コマンドライン, ソチラ, データ, データ数万行, ファイル, メモリ, 事前, 処理, 処理落ちする事, 加工, 方法, 時点,

WEBプログラマでありソフト(アプリ)も経験あり。

2016.04.23

Logging

WEBプログラマでありソフト(アプリ)も経験あり。
一応、この頃、プログラマって言うようにしている。
昔はプログラマというのは、気の引ける感じがしていたのですが
この頃はプログラマっていうように意識しているようにしている。
前の職場をやめてレベルアップしたかというと
おそらくした。ここ一年で勘所ってやつが上手くなった
感じがする。むかしは人様のコードに新たな機能を追加するとか
苦手だったけど、この頃は苦手っていうのはなくなった。
ちなみに毎日のようにコードの追加作業をしていると
休日はコードを書くことが無くなった。
家に帰ってまでコードを書くことが無くなったのですね。
コードを書くことが嫌になったわけでもないですよ。
必要でもないのにコードを書くことはないなと
思うようになってしまったのですね。
ちなみにコードは感じるものだろうと・・・思うようになってしまったのです。
たぶん、教えても…。
デキる人はできるし、出来ない人はできない。と思うよう
なってしまったのです。
新人には質問されたら応えるで良いと思います(最初は説明しますが)。
この業種に限り、技は教えるけど、一から十まで処理を
教える必要ない業種なのかもしれないなと思います。
好きな人は自主的に勉強しますので
ちなみに自分も自主的に勉強してます。
※前の職場はプログラマというよりはシステムの運用が主でしたからね。
ブランクが4年ぐらいあって現場復帰したっていう感じなのです。

タグ

WEBプログラマ, アプリ, コード, システム, プログラマ, むかし, やつ, 人様, 休日, 処理, 勘所, 必要ない業種, 感じ, 新人, 機能, 現場, 経験, 職場, 追加作業, 運用,

非同期通信の2重ループは素人にはオススメしません。

2016.03.20

Logging

非同期通信の2重ループは素人にはオススメしません。
そして、2重ループでなおかつ、再帰処理だったら・・・
まさにややこしくなる事間違いないのでオススメ度は限りなく低いですね。
ただ、こういう事も出来ることを覚えていると
何かの役に立つことは間違いないです。
ちなみに再帰処理は、いろいろな言語で可能ですので
技として覚えていて損はないです。
再帰処理を追う方法はループせずに見るという
感覚を養うことが大事だと思います。
ようするに再帰処理を抜け出すひとつ前の値で
トレースすることが大事だと思われます(´Д`)。
ちなみに非同期通信の場合、非同期ですので
返ってくる順番はめちゃくちゃです。
何か番号を振って処理しないと、
うまく処理されないという事になるのでそこらへんも注意して組み立ててください。

追記2021:今では古くなったコードになったのでソースコードを削除致しました。
ただ、考えは間違っていませんがJSも進化して非同期処理も簡単に組み込めるようになりました。
これも時代の流れですね。async/await、promiseというキーワードでググってみると非同期処理の説明が書かれたサイトがありますのでそちらを参考に!!

https://qiita.com/_takeshi_24/items/1403727efb3fd86f0bcd

タグ

2, 2021, JS, いろいろ, おすすめ, コード, こと, ソース, そこら, トレース, ひとつ, べん, めちゃくちゃ, ループ, , , 何か, , 再帰, 処理, 削除, 可能, 同期, 場合, 大事, , 感覚, , , 方法, 注意, 番号, 簡単, 素人, 言語, 追記, 通信, 進化, 順番,

さくらのレンタル―サーバーのCRONでファイルの呼び出し方が

2015.10.06

Logging

/usr/local/bin/php -f /home/xxxxx/www/hoge.php
cd /home/xxxxx/www/;/usr/local/bin/php hoge.php
cd /home/xxxxx/www/ && /usr/local/bin/php hoge.php
cd /home/xxxxx/www/ | /usr/local/bin/php hoge.php

さくらのレンタル―サーバーのCRONでファイルの呼び出し方が変わっていた
今までは一行目の呼び出し方でファイルの実行が可能だったのですが
この頃、仕様が変わったのかは分かりませんが、さくらのヘルプにも書いているように
実行させたいディレクトリまで、まずは移動して
走らせたいファイルを実行するという事を行わないと実行されません。
(※実行される場合もあり?)
二行目から解説すると二行目は、移動できなくても次の処理を実行します。
三行目は移動できたら処理を実行します。
四行目は処理は実行されませんが、こういう書き方もあるよ的な
事で書いてます。「|」この記号で処理と処理を結ぶと
Aの処理で帰ってきた値などをBの処理に引き継ぐことが出来ます。
簡単にいえばパラメータを渡すことが出来ます。
WEBでShellをちょっとしたときに使う場合、上記の方法を
つかう事が多いと思います。
覚えていたら何かと役に立ちますよ!!
 

タグ

AM, bin, cron, home, local, php hoge.php, shell, usr, xxxxx, サーバー, さくら, ディレクトリ, パラメータ, ファイル, ヘルプ, レンタル, 処理, 呼び出し方, 書き方, 記号,

昨日の続き、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, クローン, ジョブ, ファイル, 一つ, 処理, 分刻み, 場合, 実行, 方法, 昨日, 有効, 無限, 複数, 負荷,

cronPHPを作ってみた朝の続き。

2015.06.24

Logging


 
cronPHPを作ってみた朝の続き・・・たぶん、コレだけで十分かと思います(稼働させてないのでどう動くかは不明?)。仕事帰って作りました。この頃、もっと勉強しないとなと思うこの頃です。いまの自分に足りないのは間違いなく技術力です、あとタイピングとか・・・かなり遅いので生産性がかなり低いです。英語を打つのに遅すぎる・・・・。日本語はまぁまぁ早いのですけど。キーを覚えているというよりは何となく覚えているので・・・・なぜ、タイピングできるのか自分でも不思議なのです。
 

追記2022/09/06:詳しくは、こちらを参照くださいませ

<?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();
        }
    }
}

タグ

06, 09, 2022, 39, 5, Asia, class, cron, cronphp, date, default, function, lt, nbsp, obj, php, public, set, timezone, Tokyo, いま, かなり, キー, クローン, こちら, コレ, ダイビング, 不思議, 不明, 仕事, 処理, 分刻み, 勉強, 参照, 場合, 技術力, 日本語, 有効, , 無限, 生産性, 稼働, 自分, 英語, 負荷, 追記, ,

jQueryでローディングって検索すると。

2015.05.20

Logging


 
jQueryでローディングって検索すると何やらいろいろヒットしました。なるほど、そういう事なのか、以外にも短いコードで書けるだなということが分かって目から鱗が落ちました。ロードされるまでGif動画を表示させてロード後切り替えているだけなんだ。jQueryってすごいですね。ちなみにjQuery.event.add(window,”load”,function(){…} こう書けばデータが読み込まれた後に処理が実行されます。ちなみにこの場合、HTMLや画像などのデータが読み込まれるまでGif画像を表示させる方法ですが、非同期通信を行っている間、ローディングのGif画像を表示させて普通に切り替える事も可能なんだということで、BBSもどきにその機能をつけてみました。コメントが表示されるまでローディング画像を表示させています。
https://zip358.com/tool/BBS

タグ

AM, BBSもどき, function, Gif動画, Gif画像, html, jQuery.event.add, load, window, コード, コメント, データ, ローディング, ローディング画像, ロード後, 以外, 処理, 方法, 機能, 短いコード, 非同期通信, ,

cronの設定数に制限があるさくらサーバーとかで制限以上に使う方法(´Д`)

2015.01.12

Logging

cronの設定数に制限があるさくらサーバーとかで制限数以上(cron設定を増やす方法
)に使う方法はないかなと考えた結果、自分はこうしました。
一つのPHPファイル(実行ファイル)から複数のファイルをキックすることに!(´Д`)
こうすれば、処理が遅くないファイルなら複数個でも実行できるのではないかと
思ったわけです。結果的に成功しているぽっいです。
※Shellで作れる人は作れるだろうけど自分には無理(´∀`*)ポッいのでPHPで制作しました。
ちなみにさくらレンタルサーバーの場合、php.iniにタイムゾーン設定を
加えてあげてください(date.timezone = Asia/Tokyo ←追加)。
そうしないと動かない恐れがあります。
作っていて思ったことですが、作る考え方はわかるものの、元々メソッドを覚えていない
人間なのでググってメソッド探しにまずヘタりました( ´Д`)=3。その後、完璧なハズとか
思ってソースを実行させるとエラーは出ないものの。思った通りうごかないという事象に
苦しめられること2時間、何でだろうとか思っていて検証してみた結果、メソッドの使い方が
間違っていたり、変数名が間違っていたりとなんとも言えない無情さに襲われましたが
何とか動作するようになったみたいなのでコードをうっぷします。
ソースコードを記載しときます。動作するとは
思いますが誤作動するかもしれないので保証はしません。なお、いつもながら
ソースにはコメントを記載しておりませんのでトレースしてください。
PHPファイルのDLはこちらから( ´Д`)=3?(最終更新日2015/01/12 11:07)
追記2
改良しました。{*改良版はこちら*}
※このPHPファイルを5分置きにキックしていますΣ(゚∀´(┗┐ヽ(・∀・ )ノ。

<?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();
        }
    }
}

タグ

, Asia, cron, date, ini, php, shell, timezone, Tokyo, いの, キック, こと, サーバー, さくら, ゾーン, タイム, パス, ファイル, ヘタ, ボツ, メソッド, レンタル, わけ, 一つ, , 人間, 処理, 制作, 制限, 場合, 完璧, 実行, , 成功, 方法, 無理, 結果, 考え方, 自分, 複数, 複数個, 設定, 追加,