信頼はずっと、挑戦はもっと。

お問い合わせ
TEL:03-3496-3888

BLOG コアテックの社員ブログ (毎週月曜~金曜更新中)

LIST OF ARTICLES

記事一覧

  • テクログ

    Cloudwatch eventsでcronを使って 日か、曜日を指定するとき

    ひなっちです。Cloudwatch eventsでcronなんですが、地味に忘れて、ハマるんです。なぜか?普段、Linuxのcronタブに書いてる書き方とすこしちがうからです。Parameter ScheduleExpression is not valid. ↑これcron的には書き方正しいはずなのになーと今回、自分が少しはまったのが毎週金曜日、10時(JST)で処理を動かす場合でした。これを、そのまま素直にcronで書くと0 1 * * FRI * こうです。が、正解は0 1 ? * FRI * こうです。これ、ちゃんとマニュアルにも書いてあるんです。cron 式の日フィールドと曜日フィールドを同時に指定することはできません。一方のフィールドに値 (または *) を指定する場合、もう一方のフィールドで ? (疑問符) を使用する必要があります。https://docs.aws.amazon.com/ja_jp/AmazonCloudWatch/latest/events/ScheduledEvents.html#CronExpressionsほんと地味ーーーにはまるし、普段cronタブに慣れ親しんでいるとマニュアル読むほどのものじゃない気もして、辿りつくまでに時間がかかりました。。。。では!
  • テクログ

    素敵だら! Linux コマンド ~wget~

    こんにちはうなぎです。IT開発者にとって避けては通れない数ある Linux コマンドのうちから、厳選してご紹介する不定期コーナー“素敵だら! Linux コマンド”。年明け第一回目は「wget」!※つらいので今回から1コマンドずつ紹介することにしました。■wgetwget は何かをダウンロードしたいときに使うコマンド。ページを画像やCSSなども丸ごとダウンロードしたり、簡易的なクローリングもできちゃうパワフルなダウンローダーです。まずは通常の使い方から。wget http://example.com/ とすると、対象のページHTMLが `index.html` としてダウンロードされます。保存名を指定したいときにはwget http://example.com/ -O test.html `-O` オプションを使います。Linux で wget を使用するシーンとしては、.zip や .tar などの圧縮されたソースデータをダウンロードすることが多いのではないでしょうか。データが置いてあるホスティングサーバー上ではアクセスによる負荷を分散させるために、ダウンロードURLをミラーサイトにリダイレクトさせていることがあります。wget --trust-server-names https://sourceforge.net/projects/notepadplusplus.mirror/files/latest/download そんな時は、`--trust-server-names` を使えば正常にダウンロードできます。他にもWEB魚拓のように、あるサイトのページをまるっとダウンロードしたいときは、wget -k -p -w 3 http://abehiroshi.la.coocan.jp/ とすると、他のページや画像なども一緒にまとめてダウンロードしてくれます。`-k`  `--convert-links`ダウンロードしたHTMLやCSSのリンクを、ローカル内の相対パスに変換します。`-p` `--page-requisites`ページの表示に必要なファイルをすべてダウンロードします。`-w` `--wait`再帰的にダウンロードするとき、指定した秒数分間隔をあけて実行します。クローラー、スパイダー、すべてそうですが、再帰的なアクセス・ダウンロードするときには、必ず数秒の間隔をあけるなど、サーバーへの負荷を考慮してください!!!以上、2020年一発目は wget でした!
  • テクログ

    cURLのメモリリーク

    こんにちは、kaiです。最近新作ゲームをプレイ中に自宅PCのメモリ使用率が95%まで上がったことがあって(windows defenderの問題でした)、メモリリークって怖いな…と思う今日この頃ですが、それに関連して今回は担当していた案件で遭遇した問題について紹介します。取得したURLにPHPのcURL関数を用いてアクセスするプログラムを作成したところ、実行中、時間を追うごとにサーバーのメモリ消費量が増大していく現象が発生しました。プログラム側ではスタックし続けるような処理を実装していないので、調査したところ、curlの古いバージョンにはキャッシュを蓄積し続けるバグが存在しておりプログラム実行中にはメモリが解放されずに消費されていくことが分かりました。そこで暫定の対応ではありますが、curl利用部分を個別のプログラムとして切り出し、そこにURLを分割して渡すことでメモリ消費を抑える形に改修しました。追々バージョンアップや別の方法に変えたいところですね…まだ記事作成時点でテスト中ですが、結果や追加対応などはまた報告できればと。外部要因の不具合はなかなか出くわさなかったので個人的には良い経験になったと思います。ではまた。・参考URLhttps://qiita.com/digitalpeak/items/4b39fdcb8fae7d09f406https://blog.eviry.com/entry/2019/07/23/160715_1
  • テクログ

    NetBeansを使ってのちょっとした便利機能

    お久しぶりです。まーくんです。複数のプロジェクトファイルを同時並行で開いていると、どのファイルがどのプロジェクトのかわからなくなることありませんか。まーくんは最近ありました。その時に便利なNetBeansの便利な機能があったので紹介します。▼デフォルトの状態だとこんな感じの横一列(別々のプロジェクトで1ファイルを開いている状態)▼便利な機能を使うとこんな感じでそれぞれのプロジェクトごとに複数行でファイルがわかれてくる。やり方はツールタブ→オプションのモーダルを開く→外観選択→複数行タブにチャック→1プロジェクトにチェック→ついでに同じプロジェクトのファイルと同じ背景色を選択をするだけ。これだけでとてもみやすくなるので、ぜひ試してみてください。
  • テクログ

    【E2Eテスト】codeceptjsでシナリオが失敗したときのURLを取得する

    前提として1つのシナリオ内で1画面のテストをしている状況です。const event = require('codeceptjs').event; module.exports = function (options) {     event.dispatcher.on(event.test.failed, async function (test, error) {         let url = await test['steps'][0]['helper'].grabCurrentUrl();     }); } 変数urlに取得したいURLが入ります。これでテストが失敗したときに外部API経由でチャットツールに流して、エラーページのURLがすぐに確認する状況を作れます。参考記事https://codecept.io/hooks/#api
  • テクログ

    FuelPHPでのクーロンログ

    FuelでのログはView側では、大本(言い方)try {} catch () {}でくくられているため、基本全てのエラーが吐き出されるようになっています。そして、タスク(cron)実行する際にもログが出てほしいな~と思い、調べた結果です。タスクの場合Fuelの本体とは別のロジックとなっており、ログに吐き出すようにするには、コーダーさんが処理内にtry {} catch () {}などでくくらなければエラーを明示的に吐き出すことができませんでした。(なぜ・・・)参考サイトとしてリンクを貼りますが(https://qiita.com/notona/items/b821ed0ad04ac3ef8f80)以下のようなことが書かれておりました~~~~~php7 では一部のエラーが Error例外 として throw されるようになりました。そのため Error と ErrorException がどちらも実装しているインターフェースになっている Throwable でキャッチする~~~~~ざっくりいうと、エラーを拾う(出力させる)ためには、タスク処理をごっそりと「try {} catch (\Throwable $e) {}」でくくる必要がある。もしくは、エラー出力としcronに設定する際に0 0 1 * * [php path] [oil path] refine [task name] 2>> [output file name]`date +\%Y\%m\%d`.logのように、cronを設定する必要がある(この場合は try {} catch () {}の必要はない)ただ、oil深くまで潜ると。。。。ありました!!エラー時には、コンソールに表示させる記述が。こいつを、オーバライドして、ログに吐き出されるようにすれば、タスクが実行されて、try {} catch () {}でくくらなくても、うまくいく(はず)※やって見る方は自己責任でお願いします。