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

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

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

LIST OF ARTICLES

記事一覧

  • at CORETECH

    午後休をとって、子供のお誕生日のお祝いをしました!

    秋、ありませんでしたね。こんにちわ。パグです。そうかそうか、もう1年経ったのか・・・好き!!(キティちゃんのYoutubeの真似)10月は娘がお誕生日だったので、去年は時差出勤を使って早帰りをしましたが、今年は午後半休をとって早帰りをして、お祝いしました。もちろん一日有給を取っても良いのですが・・・私は育休明けより時短勤務で、10時〜17時(休憩1時間+6時間)が定時となっています。その為、午後お休みにすると、13時に帰れるのです!なんだか有給0.5日でそんなに早く帰れるなら、半休でいいやってなりませんか?私だけ?そんな訳で午前中は仕事をして、午後からデパートに行って食材を買い込み、準備しました。去年はALL手作りにこだわって、こんな感じに。→去年の様子https://core-tech.jp/blog/article256/14時からのお買い物+料理だと微妙に遅い時間になってしまって、子供のお腹が空きすぎて大変だったので、今年は半手作りでちゃちゃっとハロウィン+誕生日をお祝いしました。10月のハロウィンシーズン特有のケーキや器は、本当に可愛いですね!やはり・・・かぼちゃくらいじゃアンパンマン様の求心力には勝てませんでしたけど・・・娘はエビが大好きなので、ガーリックシュリンプやフライドチキンなど、大喜びで食べてくれました。時短勤務制度についてもう少しお話しすると、国で定められている時短勤務の対象年齢は子供が3歳になるまで、ですが、コアテックでは、未就学児までを対象としているので、もう少し早く帰って、子供と過ごしたいパパ、ママは3歳を過ぎても時短勤務のまま働くことも可能です。子供が大きくなるまで、お誕生日のお祝い当日を、家族でゆっくり過ごせる環境で働いてみませんか?https://core-tech.jp/jobs/では。また〜!
  • テクログ

    IT業界で長年やってるのに、なんなのか答えられない単語について語る2

    こんにちわ。パグです。今日もモヤモヤ理解してるけど説明できない内容について語ります。1はこちら→プロトコルについてhttps://core-tech.jp/blog/article445/今日は「セッション」についてです。OSI参照モデルのセッションではなく、HTTPのセッションです。はい、じゃあ説明していきます。セッションってなんなの?って聞かれた時になんて答えますか?セッションとはとかで調べたり、先輩に聞いたりして、・通信に先立って、2台のホスト間で必要なデータをやり取りすること・WEBページを開いて離脱するまでの1連の流れのこと(参考リンク)https://www.seohacks.net/basic/terms/session/https://wa3.i-3-i.info/word1791.htmlこういった説明をよくされるのではないでしょうか。この二つは、実は同じ話をしているのですが、内容を理解していないと全然異なるものに感じます。そのためセッションという言葉の意味が曖昧になります。セッションを理解する前に、WEBブラウザが表示されるまでの仕組みについて説明します。WEBサイト、というのは、ユーザー(のPCやスマホ)からどこかのWEBサーバーにリクエストを投げます。WEBサーバーからはこのリクエスに応じたページを返信して終了します。例えば、私が、どこかのサイトで買い物をしたいとします。ブラウザにURLを入れるか検索サイトでアクセスすると、このサイトのトップページが表示されます。そこで買い物をする場合にどういったやり取りがなされるかというとーーーーーーSTARTーーーーーー私:トップページが見たいサーバー:ほらよ(トップページ返す)ーーーーーー私:これ買いたいサーバー:ほらよ(カート画面返す)ーーーーーー私:クレカはこれねサーバー:ほらよ(決済画面返す)ーーーーーー私:購入できたから、画面閉じるーーーーーーENDーーーーーーWEBは通常このような流れで、サーバーからは「ほらよ」と画面が返された時点で一回毎のやり取りは終了します。ここに今どういった状態であるかを保存する機構を持たないためです。でも上記のような買い物をしたい、のような動作の場合、トップページからカート画面へ遷移する時に、どの商品を持って遷移したか、とか、決済画面に行く時に、どのユーザーであるのか、などをサーバー側がわかっていないと、適切な画面を返すことができません。ですが、HTTPの通信には、このような情報を保持する箇所がありません(※1)。じゃあ現在の技術ではどのようにして現状の状態を保持しているのかというと、ここでやっと「セッション」がでてきます。「セッション」とは一連のやり取りの中で、今の状態を維持したまま相互に通信されている状態のこと、と理解しましょう。例えば、STARTからENDまでの流れを「1つのセッション」として説明すると、STARTからENDまで私がログインしていて、この商品を買って、このカードで買うという現状状態を保持した状態で、サーバーと私が通信している、この現状状態を保持した状態での通信が1つのセッションです。たまに、セッションをクッキーのようなものやキャッシュのようなものと誤解されている方がいますが、それはクッキーであり、キャッシュであって、セッションは保存するところの名称ではありません(※2)。通信に必要な情報を保持したまま通信を行なっている状態の方をセッションと呼びます。このセッション中に、どこに情報を保存するかというと、通常はクッキー+何か(RDSやKVSやmemchacedなど)またはクッキーに直接本体を突っ込む。または、ファイルで持っている。など色々と種類があります。いずれも、暗号化された状態で、たとえその実体を盗まれたとしても、中身が見えないようにした状態で保存している必要があります。最初に出てきた・通信に先立って、2台のホスト間で必要なデータをやり取りすること・WEBページを開いて離脱するまでの1連の流れのこととはつまり同じことを指していて、どちらの言葉も使って説明すると・・・「WEBページを開いて離脱するまでの1連の流れの中で、通信に先立って、2台のホスト間で必要なデータをやり取りすること」→これが完璧なセッションの説明となります。新人に聞かれた際にはドヤ顔で答えてあげてください。クッキーやキャッシュと混同して混乱している新人さんがいたら、「それはセッションの保存領域のことでセッションのことじゃないからぁ(ドヤァ)」と説明してあげてください。———(※1)ログイン情報とかでない場合は、POST、GETでいけるんちゃうかって考える人もいると思うんですが、今回はあくまで「セッション」の説明だということに注目してください。(※2)今回はsessionStorageの説明ではありません———以上になります。いずれ。また。
  • テクログ

    IT業界で長年やってるのに、なんなのか答えられない単語について語る

    こんにちわ。パグです。私はスタンドアロン型のシステムのSEを7年。WEBシステムで7年。ほぼ15年IT業界にいるわけなんですけど、探究心がほんとないんですよね。でも、IT業界って探究心がなくても意外と仕事ができちゃったりするんですよ。でも結局は表面上の理解しかしてないわけなので、設計する時にめちゃくちゃ考えるんですよ。なので、今回は、ねえ、それってなんのこと?って聞かれた時に、ドヤ顔で答えられるほど自分で理解したことについて書きます。今日は「プロトコル」についてです。プロトコルってわかりますか?IPとTCPとかFTPとかPOPとか色々種類があるあれですよ。じゃあさ、プロトコルってなに?って言えますか?プロトコルってなんですか?って新人に聞かれた時に、最もわかりやすいな、と私が思った回答はこれです。プロトコルとは、規約のこと。規約とは、なんの規約なのか。コンピュータ同士が通信を行うための規約のこと。なんでそれが必要なのか?例えば、コンピューターって、出たての頃は、各メーカーで規約が異なったわけなんですよ。すると、送信元と受信先で同じ端末を持ってないと、通信できないじゃないですか。それじゃ不便だよねってなって、世界的に標準的な規約が決まりました。これがRFCという形式で技術仕様が公開されていて、その通りに製品を作ると異なるメーカー同士でのやり取りが可能になるわけです。RFC準拠しないとどうなるか?別に怒られたりはしません。RFCに準拠しない場合、通信ができなくなります。名指しするとあれなので、わかるように最近困ったRFC準拠してない事例を挙げるととある携帯キャリアがメールアドレスの作成仕様をRFC準拠してない形で許可していました。これはすごく昔、もう10年以上とか前に独自で出していたもので、キャリアメールとは、機種変更をしても大抵引き継がれるので、このせいで、この頃にRFC準拠してない形式で作られたメールアドレスに対して送信ができないという事象が発生しました。メールサーバー側で、RFC準拠してないメールアドレスをリジェクトしていたためです。この時、対策としては、メールアドレスの前後にクオートを入れて、文字列として認識させることで、送信できるようになったのですが、エンドユーザーに、そのメールアドレス変えてよ。なんてなかなか言えないので大変に困ったのを覚えています。ね。RFC守らないと困るでしょ。なので、現在のコンピュータ、ミドルウェア、ソフトウェアのほとんどがこの規約を遵守して作られています。さて、最初の話に戻ります。つまりプロトコルとは、ルールのことです。こういう風に送ってね。こういう風に解析してね。というルールのこと。ちなみにHTTPもWEBのプロトコルになります。プロトコルは、単語じゃなくて略称なので、全て語尾にPがついています。HTTP(HyperText Transfer Protocol)FTP(File Transfer Protocol)IP(Internet Protocol )SMTP(Simple Mail Transfer Protocol)はい。今日はここまでです。バイバイ〜
  • テクログ

    CloudWatch Logsエージェントがローテートさせるとtimestamp is more than 2 hours in future.で止まってしまう件について

    こんにちわ。パグです。本日はCloudWatch Logsエージェントのログがtimestamp is more than 2 hours in futureで止まってしまう件について書きます。現在の環境はFuelPHPで、主にFuelPHPのローテートログをCloudWatchエージェントでPUSHさせたいって内容になっています。が、恐らく他の環境のログの場合で起きた事象もこれに近しいのではないかと思います。CloudWatchLogsエージェントは導入済みで、ローテート時にうまく動かない人向けなので、そもそもCloudWatchLogsにログが反映されていない場合は別の要因によるのではないかと思います。[/server/fuelphp/logs] datetime_format = %Y-%m-%d %H:%M:%S file = /path/to/fuel/app/logs/20*/*/* buffer_duration = 5000 log_stream_name = {instance_id} initial_position = start_of_file log_group_name = /server/fuelphp/logs 他にマルチラインの設定などが必要かと思いますが、簡単に書くとこんな感じに設定。CloudWatch側では、log_group_nameで検索ができるようになりますが、翌日「 timestamp is more than 2 hours in future.」とエラーが出ておりPUSHイベントが動いていません。色々調べていて、皆大好きStackOverflowを見て見ると、以下のような記事が。https://stackoverflow.com/questions/40604940/cloudwatch-logs-acting-weirdhttps://forums.aws.amazon.com/thread.jspa?threadID=243092この記事の人に激しく同意>Yes I'm experiencing the issue too. Is there a way to reset the state file without doing this?うん。私もそう思うわ。それやらないでResetしたいんだよぉぉぉぉ。はい。じゃあ。本題です。awslogsのPUTイベントが失敗する原因は以下です。PutLogEvents オペレーションの制約に従って、次の問題によりログイベントまたはバッチがスキップされる場合があります。以下本家のマニュアルから抜粋https://docs.aws.amazon.com/ja_jp/AmazonCloudWatch/latest/logs/WhatIsCloudWatchLogs.html注記1.データがスキップされた場合、CloudWatch Logs エージェントはログに警告を書き込みます。2.ログイベントのサイズが 256 KB を超過した場合、ログイベントは完全にスキップされます。3.ログイベントのタイムスタンプが 2 時間以上未来の場合、ログイベントはスキップされます。4.ログイベントのタイムスタンプが 14 日以上過去の場合、ログイベントはスキップされます。5.ログイベントがロググループの保持期間よりも古い場合、バッチはすべてスキップされます。単一の PutLogEvents リクエストでログイベントのバッチが 24 時間実行されている場合、PutLogEvents オペレーションは失敗します。上記の3がこの「 timestamp is more than 2 hours in future.」というエラーにあたります。タイムスタンプが実行時間より2時間以上未来日になっているので、スキップしますとのことで、最初はUTCと日本時間のズレのせいかと考えたのですが、どうもズレている時刻が異なります。実行タイムスタンプの調べ方はStackOverflowに書いてある通りで「/var/lib/awslogs/agent-state」をsqlite3で検索(JSON形式で保存されているので実行された体の時刻を調べます)調べるストリームIDは/var/log/awslogs.logに出ています。2019-09-28 06:01:02,041 - cwlogs.push.stream - INFO - 12879 - Thread-1 - Removing dead reader [77cbf636732d4f124469c8ccb0f71abe, /logs/2019/09/27.php] 2019-09-28 06:01:02,041 - cwlogs.push.stream - INFO - 12879 - Thread-1 - Removing dead publisher [77cbf636732d4f124469c8ccb0f71abe, /logs/2019/*/*.php] 2019-09-28 06:01:02,044 - cwlogs.push.stream - INFO - 12879 - Thread-1 - Starting publisher for [77cbf636732d4f124469c8ccb0f71abe, /logs/2019/09/28.php] 2019-09-28 06:01:02,044 - cwlogs.push.stream - INFO - 12879 - Thread-1 - Starting reader for [77cbf636732d4f124469c8ccb0f71abe, /logs/2019/09/28.php] 上記の77cbf636732d4f124469c8ccb0f71abeです。(PATHはサイトの詳細が記載してあるので少し削りました)これを検索します。[root@server]# sqlite3 /var/lib/awslogs/agent-state SQLite version 3.7.17 2013-05-20 00:56:22 Enter ".help" for instructions Enter SQL statements terminated with a ";" sqlite> select * from push_state where k="8deaef1856dda2abe912ceedc4180f53"; 上記のkの部分にストリームIDを入れると、JSONからPUSHした時にイベントが出てきます。8deaef1856dda2abe912ceedc4180f53|{"start_position": 248, "source_id": "8deaef1856dda2abe912ceedc4180f53", "first_timestamp": 1570412666000, "first_timestamp_status": 1, "sequence_token": "49599891918873079124975725871068904036184047788058782002", "batch_timestamp": 1570412666866,  "end_position": 369}|2019-10-06T21:00:13|2019-10-07T01:44:32 このFirstTimestampとbatchtimestampが明らかに前日になっています。前日になっていますが、9時間ズレとかではありません。なのでUTCの問題ではありません。なんでかなーと調べていくと、書き込まれない時に、ローテートされた後のログストリームIDがずっと変わらないではありませんか。2019-09-28 06:00:58,041 - cwlogs.push.reader - INFO - 12879 - Thread-1346 - Reader is leaving as requested... 2019-09-28 06:01:02,041 - cwlogs.push.stream - INFO - 12879 - Thread-1 - Removing dead reader [77cbf636732d4f124469c8ccb0f71abe, /logs/2019/09/27.php] 2019-09-28 06:01:02,041 - cwlogs.push.stream - INFO - 12879 - Thread-1 - Removing dead publisher [77cbf636732d4f124469c8ccb0f71abe, /logs/2019/*/*.php] 2019-09-28 06:01:02,044 - cwlogs.push.stream - INFO - 12879 - Thread-1 - Starting publisher for [77cbf636732d4f124469c8ccb0f71abe, /logs/2019/09/28.php] 2019-09-28 06:01:02,044 - cwlogs.push.stream - INFO - 12879 - Thread-1 - Starting reader for [77cbf636732d4f124469c8ccb0f71abe, /logs/2019/09/28.php] 2019-09-28 06:01:02,045 - cwlogs.push.reader - INFO - 12879 - Thread-1348 - Replay events end at 384. 2019-09-28 06:01:02,045 - cwlogs.push.reader - INFO - 12879 - Thread-1348 - Start reading file from 74. 2019-09-28 06:01:02,045 - cwlogs.push.batch - WARNING - 12879 - Thread-1348 - Skip event: {'timestamp': 1569618001000, 'start_position': 74L, 'end_position': 153L}, reason: timestamp is more than 2 hours in future. 2019-09-28 06:09:30,216 - cwlogs.push.batch - WARNING - 12879 - Thread-1348 - Skip event: {'timestamp': 1569618569000, 'start_position': 153L, 'end_position': 229L}, reason: timestamp is more than 2 hours in future. ダメだった時のログはこんな感じで。Removing dead publisherしてるのにStarting publisherのストリームIDが変わらない。77cbf636732d4f124469c8ccb0f71abeこの場合、翌日になっているのにずっとタイムスタンプ上9月27日の朝6時とかになっているので、9月28日のPUSHとならずに、スキップされてしまいます。原因は、FuelPHPのログって、一番上位に<?php defined('COREPATH') or exit('No direct script access allowed'); ?> こんな感じの固定文言が出ているんですけど、こいつが前日とまったく同じなものだから、Startを前日のログから検索してしまって、日付がリセットされないーって内容でした。なので、FuelPHPはCoreの LogsClassをOverwriteして2019-10-01 08:26:02<?php defined('COREPATH') or exit('No direct script access allowed'); ?>タイムスタンプを突っ込んでやりました。2019-10-07 06:00:08,256 - cwlogs.push.stream - INFO - 14088 - Thread-1 - Removing dead reader [729a61c49dafeeb9472f9bc030510546, /logs/2019/10/06.php] 2019-10-07 06:00:08,261 - cwlogs.push.stream - INFO - 14088 - Thread-1 - Starting reader for [8deaef1856dda2abe912ceedc4180f53, /logs/2019/10/07.php] すると、ログに設定した日付を判別して、勝手にローテートされるようになりました。うまくローテーションがかからなくてログの一部が翌日になったら送れなくなった人はお試しください。(Sitemapって、エラーじゃないやんけとか、いわない。)ではでは〜。
  • at CORETECH

    エンジニア達の装備品紹介

    こんにちは。パグです!突然ですが、DQウォークやってますか?最近街中を見渡すとプレイしている人多いですよね〜。RPG風ゲームの醍醐味と言えば、個人的には装備品のレベルアップかなと思うのですが。コアテックのエンジニア達も年々装備品をレベルアップさせているようです、本日は少しだけ、そんなエンジニア達の装備をご紹介させていただきますー。(一部雑に塗ってます)Lv.1(入社1年目:職業すっぴん:Yくん)コメント:何もないですが、大丈夫ですか…感想:うん!何もないね!まごうことなきすっぴんだね〜。コアテックに入社してすぐこの装備が与えられます。RPG的にいうと、ヒノキの棒と布の服です。Lv.2(入社2年目:職業僧侶:Yくん)コメント:あ、ディスプレイ消した方が良いですか?感想:(こやつ、こなれてきたな…)ディスプレイ3枚欲しいなぁ…ってボソッと呟いてたので、あげちゃいました。レベルアップ!!装備品的には鋼のつるぎと鎖帷子くらいにはなってる。Lv.3(入社3年目:職業盗賊:Tさん)コメント:ちょっと汚いですが…感想:うん!大分年季入ってきたね!彼もディスプレイ3枚派。過去4枚の人がいましたが・・。いる?ディスプレイそんないる?まあでも、使うのであれば、あげましょう。ディスプレイ。ポケモン達はなんなの?使役してるの?たまに放ったりするの?なんで全員こっち向いてないの?とか色々思う。そんな中堅冒険者の机。装備品的には、悪魔のつめとホーリーローブくらいにはなってる。そして・・・Lv.7(入社7年目:職業遊び人:私)2年前からMacになりましたー!じゃーん!元々Windows派だったのですが、ruby とか入れると超絶微妙なので、Mac欲しい〜!使ってみたい〜!と希望してみたところ支給されました。Macもディスプレイもう一枚貰えます。私はディスプレイ1枚で足りる方なので、1枚はチャット用と化してます。装備品的には、多分、水の羽衣とキラーピアスくらいにはなってる。ロトのつるぎが欲しいものですな!!グリンガムのムチとかさ!!!コアテックでは、入社時にマシンをWindowsかMacで選べます…更に、初期からデュアルディスプレイを支給しています!リーダー以上の場合はラップトップからも選べたりします。お好みの装備(環境)で、開発作業も捗りますね。基本的にエンジニアってさ、延々スライム狩りしてて、いきなりたまにアークデーモンとか出てきてドキドキする感じあるよね。そんな魔物狩りが楽しいコアテックでは絶賛社員募集中ですよ…!https://core-tech.jp/jobs/レベルアップして新しい装備品を手に入れましょう〜!ではまた!!
  • at CORETECH

    時短ママエンジニアの一日

    こんにちわ!パグです。社内ではSE+PLとして働いていますが、産休、育休を経て、現在絶賛子育て中でもあります。保育園のお友達ママさんとかですと、あんまりSEの人っていないので、皆一日どうやって作業分担しているんだろう?って育休中に調べてみたのですが、「実際にこうやって仕事と、家事育児スケジューリングしています〜」っていう具体例のあるサイトが同業で見つからなかったので、ちょっと書いてみようかなって思います。ある日の一日/***********************************/6:00起床、朝食、弁当準備、洗濯したりしなかったり7:00子起床、保育園準備、自分のお出かけ準備8:30保育園送りの途中まで一緒に行って、送りは家族にお任せして自分は通勤〜!9:30コアテックに到着着いてから30分以上は、チャットとかQiita見たりとか、だらだらしたいので、始業の30分前に着くくらいで出かけてます。買い物が必要な場合はAmazonFreshかPrimeNowで買い物を済ませます。10:00お仕事開始作業分担したり、話しかけたり話しかけたり話しかけたりたまにPG書いたりしてます。14:00お昼ご飯15:00午後のお仕事再開明日の準備したり、午後は自分の仕事してます。17:00〜18:00退勤退勤前に作業指示出してない人がいれば作業お願いして帰っています。リリース前などは18時頃までいたりします。19:00保育園お迎え+保育園から帰宅夕飯準備19:30夕飯、風呂準備、掃除、洗濯したりしなかったり20:00Amazon様で買い物している場合はこの辺りで届きます。20:30風呂21:30〜22:00子供と一緒に就寝/***********************************/どうでしょうか。ちなみに17時すぎると周りの人に帰れ帰れと言われます(涙)。ワーカホリック気味な私なので、帰れって言われても帰らないせいで18時までいたりします。子供は平日は保育園でたーーーーーーーっぷり遊んでくるので、私は平日は、寝る前に本を読むくらいしかしてないです(もちろんご飯やお風呂は一緒にしています)。なので、メインは家事です。平日に掃除とか洗濯とかしておいて、休日は土曜日も日曜日も子供をお出かけに連れて行きます。買い物を外ですることはあまりありません。時短です。食器は食洗機を駆使しています。時短です。掃除はものをだいたい捨てます。時短です。かなり時短してると思いますが、結構洗濯した日はスケジュール的に足が出てしまうことが多いのですが、皆さんどうやってこのマルチタスクをこなしているんでしょうか?うーん謎!私は入社して今年で7年目なので、結婚〜出産〜を経ての今なのですが、新婚旅行には長期のお休みをいただけたり・・・子供が熱を出しても真っ先に帰れと言っていただけたり・・・人生のイベント的な時にとっても良い環境なのではないかと思います。コアテックは・・・子育て中のパパママ社員も募集中ですよ・・・!https://core-tech.jp/jobs/