Articles

  • このエントリーをはてなブックマークに追加

    今日はコマンドラインのワンライナーのお話。
    とある ZIP を解凍すると中に大量の ZIP が居たときに幸せになれるコマンドを紹介します。

    find コマンドだけを使うパターン


    $ find . -name '*.zip' -exec unzip -d data {} \;
    

    *.zip を検索し、 unzip コマンドを実行しているだけです。{} の部分にヒットしたファイルが渡されます。
    -d で展開先を指定しています。上記の例では、解凍先を data ディレクトリに指定しています。また、ディレクトリが存在しなければ作成もしてくれます。

    find コマンドと xargs コマンドを使うパターン


    $ find . -name '*.zip' | xargs -n1 unzip -d data
    

    find コマンドでヒットしたファイル群を xargs コマンドに渡して unzip を実行しています。xargs-n1 を指定することで該当ファイルが見つかるたびに unzip が実行されます。

  • <2018/06/19 23:45>
  • シェル芸
  • シェル芸shellcommandコマンドワンライナーxargsfindunzipzip解凍
  • このエントリーをはてなブックマークに追加

    シェルスクリプト、 Google Apps Script を使って「全角を 2 文字、半角を 1文字とカウントし、指定文字数ごとに区切り文字を挿入するスクリプト」を実装しました。

    経緯

    とあるマスタデータのフィールドに、指定文字数ごとに "\n" を挿入していく事案が発生しました。笑
    ここで言う「文字数」とは、 JavaScript でよくある、「全角だろうが半角だろうが 1 文字は 1 文字!」ではなく、
    「全角は 2 文字、半角は 1 文字」とした文字数です。(そのテキストは等幅フォントで表示しており改行位置が揃うようになるため)

    依頼を受けた時点では少なくとも過去分だけ対応すればよかったので、その時点で入力済みデータをぼく(開発側)のほうでシェルスクリプトで対応してしまっていました。さらに、未来のデータ入力については、「担当者がよしなに頑張ってくれるだろう」と
    ぼくは何も考えていませんでした。笑

    結局のところ、入力ミスを防ぐため、「データ入力時にも改行コードを自動的に挿入してあげてほしい」という話になったので、
    あとから Google Apps Script で同様の処理をするツールを作ることになってしまったわけです。(;´Д`)
    こんなことなら最初から GAS で対応しておけばよかった。笑

    前段が長くなりましたが、本題です!(短い)

    続きを読む

  • <2017/09/23 13:23>
  • ツール
  • Java ScriptShell ScriptJSシェルスクリプトスクリプト便利ツールTool
  • このエントリーをはてなブックマークに追加

    ping 送信とは?

    おさらいっぽくなりますが、 ping を各サービスに通知すると、
    「私のサイトを更新したから見に来てね!」っていう連絡をサービス(ランキングサイトなど)側に
    教えてあげられるわけです。そうすると、早くインデックス登録されたりするわけですね。

    ランキング系サイトの場合は、更新してからそれほどタイムラグなく最新記事を一覧に表示させることが
    できるようになります。

    有名ブログサービスの場合

    Ameblo, livedoor blog, JUGEM などの有名サービスの場合は
    各ランキングサイトに自動で ping が送れるようになる設定箇所があったりしますよね。
    WordPress なんかのCMSを使っている場合もプラグインがあったりして便利ですよね。

    これは、ブログ更新のたびに自動で各サービスに「更新したよ」通知を飛ばしてくれるようにするものです。
    ところが当サイトのように Django で自前で実装したり、
    まあ他のフレームワークを使ってたりしていて、いずれにせよ ping 送信の仕組みなんて導入してない!
    って場合は ping 送信するのが手作業だったり不便極まりないです。(´・ω・`)

    ランキング系のサイトには、 ping の代理申請っていうのがあって、ワンポチするだけなんですが、
    それでも自分から何かアクションを起こさないといけないっていうのはやや面倒なものです。

    そこで、以下のようなスクリプトを組んで、みんな大好き crontab に登録することで自動化しちゃいました。笑

    ping 送信なんてどうせ curl で一撃でしょ?

    そう、きっと curl で何も考えずにリクエスト投げればいいだけだ!
    ってことで

    続きを読む

  • <2017/05/21 13:00>
  • ツール
  • shellscriptツールping送信ブログ更新通知自動化ワンライナーcurlxml
  • このエントリーをはてなブックマークに追加

    ほんとにたまにしか使わないので、ワンライナーでちょちょっとやりたいときに
    いつもググってしまって効率悪いので、自分用のメモとして残す。

    1900年から2017年まで出力

    $ for i in {2017..1900}; do echo $i; done;
    2017
    2016
    2015
    2014
    2013
    2012
    2011
    2010
    2009
    2008
    2007
    2006
    2005
    2004
    2003
    2002
    2001
    2000
    1999
    1998
    1997
    1996
    1995
    1994
    1993
    1992
    1991
    1990
    1989
    1988
    1987
    1986
    1985
    1984
    1983
    1982
    1981
    1980
    1979
    1978
    1977
    1976
    1975
    1974
    1973
    1972
    1971
    1970
    1969
    1968
    1967
    1966
    1965
    1964
    1963
    1962
    1961
    1960
    1959
    1958
    1957
    1956
    1955
    1954
    1953
    1952
    1951
    1950
    1949
    1948
    1947
    1946
    1945
    1944
    1943
    1942
    1941
    1940
    1939
    1938
    1937
    1936
    1935
    1934
    1933
    1932
    1931
    1930
    1929
    1928
    1927
    1926
    1925
    1924
    1923
    1922
    1921
    1920
    1919
    1918
    1917
    1916
    1915
    1914
    1913
    1912
    1911
    1910
    1909
    1908
    1907
    1906
    1905
    1904
    1903
    1902
    1901
    1900
    

    おわり。笑

  • <2017/02/06 19:27>
  • プログラミング
  • シェルスクリプトシェルスクリプトshellscriptone linerワンライナー数字出力

Tag List

pythondjangoプログラミング個人サイトredmineスプレッドシートチームマネジメントチームビルディングJenkinsスケジュールCentOS6PythonPyenvmod_wsgiDjangopyjamatemplate所感ブログサイドバーpillowlibjpegImageFieldApache本番環境CentOS日常Sitemap.xmlサイトマップ自動生成管理画面一覧Object名前WEBフロントエンドsyntaxhighlightシンタックスハイライトjavascriptcsshtml画像テストVagrantVMVirtualBOXサーバーローカル環境エラーrestframeworkoauth-toolkitinvalid_clientログインリダイレクト元のページ認証テンプレートエンジンpyjadedate日付フォーマットmailformFormViewお問い合わせフォームgit自己紹介複数リポジトリメールアドレス設定追加FormCSSタグオプションフィールド名変更さくらのVPSさくらのSSLRapidSSLWHOIS代行opensslhttps証明書csrpem中間証明書MySQLINSERTUPDATEDUPLICATE KEY UPDATEレコードの有無シェルスクリプトシェルスクリプトshellscriptone linerワンライナー数字出力アイキャッチeyecatchfacebooktwitterwebfrontendフルスタックAngularAureliareactJSJavascriptRSSfeedatomblogrankingランキングリーダーreader写真日記photoイタリアVeniceベネチアベニスベネツィアAtomフィードブログランキングpubdateupdateddatesiteウェブサイト高速化mod_deflateapachegooglepagespeedinsights静的コンテンツ圧縮HTMLloadingindicatorブラウザキャッシュコンテンツ静的cachecontentcache-controlJavaScriptmax-age縮小scsscompasssasscompressdjango-htmlminPNGJPGprogressivebaselineオンラインサービスAndroidアンドロイドアプリスライドショーフォトフレームGoogle Apps ScriptSlack自動通知ミーティングMTGアジェンダ議事録GASGoogleSearchConsoleGoogle Search Consoleウェブマスターツール所有権確認Analyticsアナリティクスドキュメントルート直下静的ファイルHTMLファイル2.2apache2.2restartgraceful再起動SIM格安SIMOCNモバイルONE無線LANWi-Fi公衆無料アクセスポイントGmailSMTPメール送信者mail_fromSSHKeyChainキーチェーンmacOS SierraYosemiteSierraターミナルパスフレーズ病院整形外科整体痛み膝痛恥ずかしいレントゲン生活習慣病楽天カード楽天カードスーパーポイントアッププログラム期間限定ポイント賢い使い方ポイント利用crontablinuxcronMTAメール送信sendmailさくらVPSSitemap自動通知manage.pyping_google楽天カフェカフェ渋谷ブロガー超高速インターネットツールping送信更新通知自動化curlxmltagタグクラウドJadeSSLhttpdmod_rewritepipパッケージ2.7homebrewbrew形態素解析英語tree-tagger翻訳品詞インストールchrome拡張huluhappen動画東京竹林風景スナップ写真新宿御苑非日常森林都会はてなはてブブックマークブログ一覧登録ボタンslackextensionsSlack View Optimizer表示最適化ポップアップ非表示容量シェアOCN モバイル ONEMNP予約番号HuluHulu Auto Account SelectorChromehappyonプロフィール選択イベントハンドラ要素監視jQueryonmouseoverMacZIPコマンド削除__MACOSX.DS_StoreSQLiteWindowsRaspberryPiRaspbianCIfirefoxaddonschatworkfinderファインダーLibraryIntelliJIDEAAndroid StudioIDEプリインストールPHPWordPressワードプレスやりたいことadd-onVVVVirtualBox環境構築ローカルWordCamp Tokyo 2017WordCampTokyo2017WPワードキャンプセッションコントリビューターコミッター貢献公開鍵秘密鍵リモートアドオンFirefoxJava ScriptShell Script便利ツールToolXcodeiOSライセンスlicenseGenericView前後の記事次の記事前の記事新しい記事古い記事WP-CLIクライアントコマンドラインCLIper-site cacheframeworkサイトキャッシュパスワード解析ハックWindows7OphcrackPHP5.6yumepelremiLet's Encrypt認証局CAHTTPScerbot-autophpunit10月2017年githubGnuPGgpg署名コミットカスタムフィルタマークダウン記法バッククォート11月OSSフレームワークHulu View Modifier画面調整Chrome ExtensionアップデートGoogle Driveドライブ権限移譲Proxyプロキシ踏み台Dynamic ForwardポートフォワードPortポートIdentitiesOnlyconfigログインできないauthenticationlocateupdatedbファイル検索高速aliaslsカラー表示エイリアスscreenbgdisownjobsLinuxプロセスバックグラウンドフォアグラウンドサクラソメイヨシノ染井吉野バラ科バラ目練馬石神井川プログラマフリーランス初日入場環境構築質問コツトラブルシューティングQuerySetクエリSQLデバッグ3ヶ月気づいたことスキルセットマインド契約コミュニケーション常駐エンジニアプロパー2018年ふるさと納税返礼品カツオタタキ高知県室戸市サイト内検索検索フォームAND検索クエリセットGoogle Analytics検索クエリシェル芸commandxargsfindunzipzip解凍オープンソースコントリビューションOsaka海外仲間振り返り展望勉強会もくもく会GolangGo 言語Apache 2.0ふわラボfuwalabCONCATIFNULLNULL空文字列文字列結合連結登壇コントリビュート写真日記軽井沢紅葉避暑地長野旅行ぶらり旅PECLモジュールmodulePIXTAイラストPowerShellアーカイブクリエイターEPSAdobeStock障害起動できないServerInnoDBmy.cnfバックアップibdfrmインポート復元データファイルdaemon自動起動centoschkconfigrun levelランレベルFTPSFTPdirect所有者ownerchownレンタルサーバーさくらのレンタルサーバー文字コードUTF8utf8mb42018仕事業務委託勉強イベント2019謹賀新年正月抱負utf8絵文字スクレイピング自然言語処理機械学習mecabバージョンアップ2.1upgradePyJadePugpypugjsXCodeSwifterrorStory BoardストーリーボードFLEXISPOT電動昇降デスクレビューリモートワーク在宅ワーク
profile picture

自己紹介的な何か

@wkmettyでついったーやってます。時々。 6年間勤めたゲーム会社を2018年2月に退職しフリーランスのプログラマに。 WordPress Core, WP-CLI コントリビューター。 お仕事募集中です。