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

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

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

LIST OF ARTICLES

記事一覧

  • テクログ

    素敵だら! Linux コマンド ~ファイル内容の表示 その1~

    こんにちはうなぎです。IT開発者にとって避けては通れない数ある Linux コマンドのうちから、厳選してご紹介する不定期コーナー“素敵だら! Linux コマンド”。今回はファイル内容を表示する、読み取るコマンドをいくつかご紹介します。ぱっと思いつくだけでも、cat, less, tail, head, more などのコマンドがあり、また vi (vim) や emacs などのエディタを使用することもあります。コマンドごとに強みがあるので、用途に応じて使い分けられるようにしたいですね。■less, more引数にファイルを指定するか、標準出力に対してパイプを通すことで表示することができます。※less も more も基本操作性は変わらないので、機能が多い less を使うことをお勧めしますless, more いずれも一度にすべて読み込むわけでなく、一部だけを読み取って表示させるので、高速に動きます。表示中、`q` を押すことで終了します。less text.txt cat text.txt | less また、これは結構大事なことですが、これらのコマンドは読み取り専用なので、誤ってファイルを変更してしまったり、タイムスタンプを変えてしまったりすることがありません。less, more は開いたファイル中から特定の文字を検索することも可能です。※いずれもファイルを開いた状態で `/` に続いてキーワードを打ち込む※次の検索結果に移動するときは `n`ただ、ログのような巨大なファイルだと検索に時間がかかるので、そういう時には grep コマンドを使った方がよいです。grep による検索結果が多いようであれば上記のようにパイプを通せば、検索結果が流れることなく確認でき、かつその検索結果のなかからさらに検索することも可能です。
  • 画像:ブログサムネイル

    テクログ

    情報収集時に閲覧しているサイト一覧

    こんにちは、なかむです。Webディレクターは日々の情報収集も非常に大事な仕事です。情報収集ツールは、Feedlyを使って時間が空いてる時や通勤時にチェックをしています。Feedlyでどのようなサイトを閲覧しているのか公開していきます。解説はありません!それではどうぞ!WEB・コリスhttp://coliss.com/・ICS MEDIAhttps://ics.media/・Hongkiathttp://www.hongkiat.com/blog/・CSS Authorhttps://cssauthor.com/・freshtrax | btrax スタッフブログhttps://blog.btrax.com/jp/・Speckyboy Design Magazinehttps://speckyboy.com/・SeleQt【セレキュト】https://www.seleqt.net/・Designmodohttps://designmodo.com/articles/・Codropshttps://tympanus.net/codrops/・Photoshop Viphttp://photoshopvip.net/・phpspot開発日誌http://phpspot.org/blog/・Goodpatch Bloghttps://goodpatch.com/blog・CSS-Trickshttps://css-tricks.com/・バシャログ。http://bashalog.c-brains.jp/・creive [クリーブ]https://creive.me/・株式会社LIG[リグ]https://liginc.co.jp/・Web Design Trendshttps://webdesign-trends.net/・かちびと.nethttp://kachibito.net/・UX MILKhttps://uxmilk.jp/・U-Sitehttps://u-site.jp/・couldhttps://yasuhisa.com/could/・海外SEO情報ブログhttps://www.suzukikenichi.com/blog/・男子ハックhttps://www.danshihack.com/・Google Japan Bloghttps://japan.googleblog.com/WEBサービス、AI、プロダクト・BRIDGE(ブリッジ)https://thebridge.jp/・Service Safarihttps://www.service-safari.com/・Apppla[アプラ]https://www.appp.la/・WIRED.jphttps://wired.jp/・Ledge.aihttps://ledge.ai/・Techablehttps://techable.jp/広告、プロモーション・AdGanghttps://adgang.jp/読書・マインドマップ的読書感想文http://smoothfoxxx.livedoor.biz/・HONZhttps://honz.jp/・わたしが知らないスゴ本は、きっとあなたが読んでいるhttp://dain.cocolog-nifty.com/myblog/以上です!この他にもはてなブックマークやGoogle Newsを見ています。おすすめなどありましたら教えてくれると嬉しいです!それでは。
  • 画像:ブログサムネイル

    テクログ

    最近の積読の読み方

     七夕ですね。実際に笹にお願いを書いたのは幼稚園の頃が最初で最後だったと思います。何をお願いしたかも覚えていません。七夕のお願いって神頼み的なことだと思うのですが、大人になった私は「神様にお願いするレベルの内容って実現不可能だと思うので切り替えたほうが良いのでは?」という価値観になりました。  タイトルの「最近の積読の読み方」の話になりますが、積読になっている本を手が届く範囲に置いておき、ふとした瞬間に何気なく本を手に取ってパラパラ見ると欲しかった情報があったりします。なので積読は近くに置いてパラパラするのがベストプラクティスです。
  • テクログ

    Lambdaを試してみました

    お久しぶりです。在宅勤務になり、時間に余裕ができたのでAWSを色々試していました。今回はLambdaについて紹介したいと思います。処理の内容はS3のimagesにjpgの画像をアップすると、別のバケットにリサイズされた画像がアップされ、画像のアップロードパスと登録日時がdynamoDBに登録されます。まず、Lambda上でPillowを使えるようにするために、EC2で下記を実行しました。sudo yum -y install gcc openssl-devel bzip2-devel libffi-devel wget https://www.python.org/ftp/python/3.8.1/Python-3.8.1.tgz tar xzf Python-3.8.1.tgz cd Python-3.8.1 sudo ./configure --enable-optimizations sudo make altinstall pip3.8 install pillow -t . 上記で作成されたPILとPillow.libsとPillow-7.1.2.dist-infoとlambda_function.pyをzipで固めてアップロードします。次にLambdaのトリガーの設定ですが、S3を選択し、下記内容を入力し、追加をクリックします。バケット sample イベントタイプ すべてのオブジェクト作成イベント プレフィックス-オプション images/ サフィックス-オプション .jpg トリガーの有効化 チェック 次にdynamoDBで画像管理テーブルとautoincrementがないためidを管理するテーブルを作成します。テーブルを作成後、idsテーブルにtable_nameがs3_images、idが0を登録します。・s3_images id 主キー   数値型 upload_path 文字列型 created_at  文字列型 ・ids table_name 主キー 文字列型 id                数値型 次にS3で下記の二つのバケットを作成します。sample sample-resize 最後にlambda_function.pyは下記の内容です。import boto3 import os import sys import uuid from urllib.parse import unquote_plus from PIL import Image import PIL.Image import datetime s3_client = boto3.client('s3') dynamodb = boto3.resource('dynamodb') def resize_image(image_path, resized_path):   with Image.open(image_path) as image:     image.thumbnail(tuple(x / 2 for x in image.size))     image.save(resized_path) def get_id(table_name):   table = dynamodb.Table('ids')   data = table.update_item(     Key = {       'table_name': table_name     },     UpdateExpression = 'ADD id :id_val',     ExpressionAttributeValues = {       ':id_val': 1     },     ReturnValues = "UPDATED_NEW"   )       res = table.get_item(     Key = {       'table_name': table_name     }   )   return res['Item']['id'] def insert_dynamodb(id, upload_path):   table= dynamodb.Table('s3_images')   now = datetime.datetime.now()   table.put_item(     Item = {       'id': id,       'upload_path': upload_path,       'created_at': now.strftime("%Y-%m-%d %H:%M:%S")     }   ) def lambda_handler(event, context):   for record in event['Records']:     bucket = record['s3']['bucket']['name']     key = unquote_plus(record['s3']['object']['key'])     tmpkey = key.replace('/', '')     download_path = '/tmp/{}{}'.format(uuid.uuid4(), tmpkey)     upload_path = '/tmp/resized-{}'.format(tmpkey)     s3_client.download_file(bucket, key, download_path)     resize_image(download_path, upload_path)     s3_client.upload_file(upload_path, '{}-resized'.format(bucket), key)           id = get_id('s3_images')     insert_dynamodb(id, upload_path) これでS3のsampleバケットのimagesにjpgの画像をアップすると、sample-resizeバケットにリサイズされた画像がアップされます。Lambdaの設定は一部割愛しましたが、以上となります。
  • 画像:ブログサムネイル

    テクログ

    UIデザインのススメ

    マークアップエンジニアのひこです。たまにデザインを作ったりもするのですが、最近特にグラフィックデザインとUIデザインの違いみたいなものを感じています。かっこいいデザイン、きれいなデザイン、使いやすいデザイン・・・色々ありますが最終的には「サイトの目的達成」が一番重要かとおもいます。「商品を買ってもらう」「問合せしてもらう」「会員登録してもらう」などなど・・・。目的がわかると何を重視すればいいかがわかってくるので、ビジュアルを優先するのか操作感を優先するのかetc・・・。ビジュアルを優先する時はターゲットの性別・年齢・タイプなどを決め、対象者に人気のある類似サービスなどからヒントを得られますが、操作感を優先するとなるとどうすれば操作感が良くなるかがなかなかわかりません。そんな状態だったので勉強の為に本を1冊買ってきました。D.A.ノーマン著 誰のためのデザイン?結構分厚くて専門用語も出てくるので、読むのにかなりのカロリーを必要としました。が、これを読むと「なぜこのデザインは使いにくいのか」を言語化することができるようになってきます。まだ1回しか読んでいないので理解度もまだまだですが、リピートして完全に理解できるようになりたいと思えるいい本でした。オススメです!
  • テクログ

    git clone 時に出た 「the remote end hung up unexpectedly」に辛勝した話

    どうも!エンジニア歴2年目に突入したわいです。連投になって申し訳ないんですけど、先日ハマった沼から抜け出すために苦悩したことを備忘録として書き留めます。ウダウダ書いていますが、結果だけ知りたい方はまとめまで読み飛ばしてください。何が起きたか開発環境を CodeCommit から git clone したときに、下記のエラーに阻まれた。(いろいろあって開発環境を消してしまった…)FATAL ERROR: Remote side unexpectedly closed network connection fatal: the remote end hung up unexpectedly fatal: early EOF fatal: index-pack failed 1行目のエラーメッセージはなぜかコロコロ変わったりした。開発環境がないので、このままだと仕事ができないとかなり焦り、先輩に相談。>どうやら、リポジトリの容量がでかすぎるらしい試しに、先輩にもcloneし直してもらうと、、成功したあわよくばと思ったが、自力で解決するしかなくなった、、正直、Git Extensions のぬるま湯に1年間浸かりつづけていたので、Git が全くわかっていない。とりあえず、ガンガン試していく作戦に出た。何を試したかこれらの記事を参考にさせていただきました。ありがとうございます。https://stackoverflow.com/questions/6842687/the-remote-end-hung-up-unexpectedly-while-git-cloninghttps://cithukyaw.wordpress.com/2014/09/08/fix-for-the-fatal-error-early-eof-on-git-clone/https://qiita.com/cacahuatl/items/4d763e98f3934e3569ca① 「http.postBuffer」の設定を変更するgit config --global http.postBuffer 524288000 >結果は変わらなかったさらに2倍にしてみるgit config --global http.postBuffer 1048576000 >結果は変わらなかった② 「core.compression」を設定するhttps://git-scm.com/docs/git-configgit config --global core.compression 0 >結果は変わらなかった>設定値を -1, 9 と変えてみたが、結果は変わらなかった③  ssh接続のタイムアウトを設定する「Remote side unexpectedly closed network connection」で検索すると、sshのタイムアウトっぽいことが出てきたので試してみた~/.ssh/configServerAliveInterval 60 ServerAliveCountMax 3 >結果は変わらなかった④  一度にcloneする量を減らす(shallow clone)git clone --depth 1 <my_repo_URI> >結果は変わらなかったいくら調べても他の解決法が出てこないので、この時点でかなり詰んだと思った⑤  有線接続に変える在宅になってから、家の Wi-Fi で仕事をしていたことに先輩の一言で気づいたclone中の「MiB/s」が2倍近く増えたが、、>結果は変わらなかった>①~④のどれも結果は変わらなかった絶望の淵に立たされていたときに、一筋の光が差し込んだ⑥  masterブランチよりも軽いブランチをcloneするgit clone -b <smaller_branch> <my_repo_URI> >結果は変わらなかった一度にcloneする量を減らす(shallow clone)git clone -b <smaller_branch> --depth 1 <my_repo_URI> >clone成功!!現在、<smaller_branch>の最新のコミットだけ取得している状態なので、<smaller_branch>の全履歴を取得git fetch --unshallow >またもや、同様のエラーコミット数を制限して少しずつ履歴を取得git fetch --depth 8 # コミット数:8は任意 >fetch成功!!残りの履歴を取得git fetch --unshallow >fetch成功!!⑦  masterブランチを含め、他のブランチ情報を取得する.git/config の<smaller_branch>を * に変更する[remote "origin"]     url = <my_repo_URI>     fetch = +refs/heads/*:refs/remotes/origin/* git fetch >fetch成功!!これですべての履歴が取得できた>やっとの思いで、開発環境が復活!!まとめ結局、必要だったコマンド。git config --global http.postBuffer 524288000 git clone -b <smaller_branch> --depth 1 <my_repo_URI> git fetch --depth 8 git fetch --unshallow .git/config[remote "origin"]     url = <my_repo_URI>     fetch = +refs/heads/*:refs/remotes/origin/* git fetch 有線接続では以上のコマンドでcloneできた。Wi-Fi の場合、最後の git fetch だけがうまくいかなかった。>いきなり、* で fetch するのではなくて、別のブランチを一度 fetch して、再度 * で fetch したらいけたうーん、Gitムズイ、、そもそも、alpineでDocker環境を作ってたら、こんなことには、、他にいい方法があれば教えてください!以上、わいでした。健闘を祈る!!