タグ

ブックマーク / www.ncaq.net (17)

  • PowerShellのスクリプトを書く時の諸注意

    先日Windows向けの作業のちょっとした自動化のためにPowerShellのスクリプトを書いたので、少し躓いたポイントを書きます。 大人しくLinux版のPowerShellもインストールします WSL2Emacsから快適に編集するためにシンタックスなどのエラーレポートなどがやはり欲しいですね。 Powershell - LSP Mode - LSP support for Emacs を使えば普通にLSPが利用可能ですが、インストールするためにpwshが実行ファイルとしてPATHに認識されている必要があります。 しかしWSL2上で作業しているのですから、 Windows上のpwsh.exeを使えば多重にインストールする必要がなくなるのではと考えました。 そこでlsp-pwsh-exeにpwsh.exeを追加してみたのですが、 Windows上のPowerShellをWSL2上で動かす

    PowerShellのスクリプトを書く時の諸注意
    igrep
    igrep 2023/07/30
    確かPowerShell 5じゃないと使えない機能があったよな、と思ったらやっぱりブコメで指摘している人がいた
  • 経験5年のHaskellユーザがScalaを仕事で半年使ってみた

    haskell-scala-java ちょっと前までScalaを書いていたので、 Haskell好きな人がScalaを書いた感想を書きます。 タイトルは経験15年のOCaml ユーザーが Haskell を仕事で半年使ってみた - camlspotter’s blogの模倣です。 あくまで1ユーザの感想です。 Scalaに慣れてしまうと違和感を忘れてしまうと思ったので、当時箇条書きで雑にメモしていたものを参照して書いています。 逆にScala使いがHaskellを知るメモに役立つかもしれません。 Haskell歴 when: 2013年から知って学び始めましたが、格的に使い始めたのは2015年からで、5年ほど使っています where: どの言語を使っても良くて新しい言語を学ぶ必要がなければ基的にHaskellを使っています what: 趣味OSSプロジェクトの大半 現在一番スターもらっ

    経験5年のHaskellユーザがScalaを仕事で半年使ってみた
  • 海外からDDoS攻撃してくるカメラをシャットダウンしてしまうのは不正アクセスなのか?自首してみたが返答がない!そして泥沼のDDoSへ

    海外からDDoS攻撃してくるカメラをシャットダウンしてしまうのは不正アクセスなのか?自首してみたが返答がない!そして泥沼のDDoSへ 顛末を記録した雑多なログになっているので整理されていない部分が多々あります. 2万文字を超えているので気合を入れて読むか適当に読み飛ばしてください. これでも不要な調査データを省いたりしてスリム化したのですが超巨大化してしまいました. 2018-11-07から自宅のネットワークの調子が悪すぎる 自宅のネットワークが死んでいました. J:COMの回線現在98%パケットロスするという状態になっています pic.twitter.com/Vfe0O3p5j2 — エヌユル (@ncaq) 2018年11月7日 今日の私 14時 サーバが落ちていることが通知される,サーバにDHCPがアドレス振ってくれてない 15時 ucomがついに死んだかと思いjcomに移行する 1

    海外からDDoS攻撃してくるカメラをシャットダウンしてしまうのは不正アクセスなのか?自首してみたが返答がない!そして泥沼のDDoSへ
    igrep
    igrep 2018/11/19
    Open resolverつらいな。。。
  • Haskell Day 2018に参加しました

    Haskell Day 2018 - connpass 発表はせず, 聞き専です. やっぱり遅刻しました 8時30分に起きる予定が9時30分に起きてしまったので, 会場に着いたのが来10時のはずが10時53分になってしまいました. 一応メンターやるつもりだったんですが立候補する時間はとうに過ぎてしまいました. あまり手を挙げて質問する人が居ないのでどっちにしろメンターとして活動するのは無理だった感が出てきました. ハンズオン あれ?show 5 丸めとか四捨五入気にしなくていいって...あれ? #HaskellDay pic.twitter.com/4z3JqKosDQ — taashi (@taashi_s) 2018年11月10日 を見てバグをGitHubのissueに立てました. Ex5に「誤差を気にしなくて良い」と書いているにも関らず実際は気にする必要がある · Issue #7

    Haskell Day 2018に参加しました
  • doctestを実行するようにしたのですが, 全部指定するとTravis CIが通らない

    これまでhaddock形式のコメントで使い方を書く時にdoctestの形式でコメント書いていました. しかし, 実際doctestは実行していませんでした. いい加減実行してテストしておこうと思ったので導入しました. Travis CIのコマンドを変えずにテストを自動実行して欲しいのでコマンドラインでの実行はやりたくないですね. Stack(Cabal)と連携して実行するようにしたいです. package.yamlに書くことにします. doctest-discoverを導入してみました しかし公式の導入方法だとだと引数にソースファイルを全指定する必要があるようですね. (勘違い) それはファイル指定に漏れが発生しそうなのでイヤですね. そこでdoctest-discoverを使うと, ファイル一覧を自動生成してくれるようですね. package.yamlに以下のように指定します. test

    doctestを実行するようにしたのですが, 全部指定するとTravis CIが通らない
  • Re:Haskellで書いてみたらC++の10倍遅かった 5倍程度になりました - ncaq

    10倍は遅すぎませんか? の虫: Haskellで書いてみたらC++の10倍遅かった を読みました. 10倍は差が出過ぎなのではないかと思いました. C++ソースコード まずC++のソースコードが完全なものではないので補完しました. #include <algorithm> #include <array> #include <iostream> #include <random> template <typename Random> bool coin_toss(const unsigned int try_count, const unsigned int length, Random &r) { unsigned int count{}; int prev{}; std::uniform_int_distribution<> d(0, 1); for (unsigned int i

    Re:Haskellで書いてみたらC++の10倍遅かった 5倍程度になりました - ncaq
  • HaskellのGHCによるビルドをLLVMのリンカーLLDで高速化することが出来なかった

    リンクが遅い 現在SYAKERAKEをHaskellとYesodで書いています. ゲーム販売webアプリケーションSYAKERAKEを支える技術, HaskellとYesodで作られています - ncaq 開発上常に問題が発生していて, それはビルドに時間がかかるということです. コンパイルが必要になる時はまあ仕方がないです. 質的に時間がかかることに対してはハードウェアの更新で対応するしかないです. しかし, 差分ビルドが有効になっていても, ちょっとした1つのファイルの変更でかなり時間がかかってしまうという問題が発生しています. どうもビルドの様子を見ていると, ファイルのコンパイル自体は1つのファイルなのでそんなに時間がかかっていませんが, リンクに時間がかかっているようです. ここで私は1つの記述を見つけました. GHC now tries to use the gold and

    HaskellのGHCによるビルドをLLVMのリンカーLLDで高速化することが出来なかった
    igrep
    igrep 2018/02/05
  • WebMoneyがつらい

    電子マネーWebMoney(ウェブマネー)がつらい. 私はWebMoneyを個人顧客として使ったことはありません. 決済手段として導入しようとしていてとにかく仕様が地獄. 怒りのあまり文章が整ってないですし順序も支離滅裂です. 私の怒りを整理するために書いているのであまり参考にはならないかもしれません. 仕様書が簡単にアクセスできる場所にない 「問い合わせ」をしないと仕様書が見れません. 普通にweb上にパブリックに公開していません. 我々の場合, 詳細な仕様書が来たのは契約後でした. なので私は契約する前にWebMoneyの仕様書を確認することが出来なかったので, 契約することを止められませんでした. 仕様書がPDF WebなんだからHTMLで提供してほしい. コピーも難しいしコード例もとても見づらい. 動作確認環境が古すぎる Linux glibc2 (kernel 2.4/2.6)に

    WebMoneyがつらい
    igrep
    igrep 2018/01/26
    “CGIの設置を要求してくる”えっ??? こちら側のサーバー側の仕様に介入してくるの...!?
  • Haskellによるwebスクレイピングの方法をdic-nico-intersection-pixivを例に書く

    Webスクレイピング Advent Calendar 2017 - Adventarの19日目の記事です. この記事では実際のwebスクレイピングの成果である, ncaq/dic-nico-intersection-pixiv: ニコニコ大百科とピクシブ百科事典の共通部分の辞書で書いた時の思考のログから, Haskellでwebスクレイピングを行う時の知見を抽出していきます. コアのソースコードは dic-nico-intersection-pixiv/Main.hs at master · ncaq/dic-nico-intersection-pixiv の1ファイルにまとまっています. なぜHaskell? webスクレイピングに絡んだ特別な理由はないです. 単に私の1番得意な言語がHaskellだからというだけの選択ですね. map, filter, foldのような高階関数が強く,

    Haskellによるwebスクレイピングの方法をdic-nico-intersection-pixivを例に書く
    igrep
    igrep 2017/12/19
    文字列の変換の話ありがたい。
  • Stackage Serverのちょっとした便利な使い方, Hoogleをブラウザのカスタム検索エンジンに追加しましょう, よく使うパッケージをブックマークする時はPackageRのURLにしましょう

    Stackage Serverのちょっとした便利な使い方, Hoogleをブラウザのカスタム検索エンジンに追加しましょう, よく使うパッケージをブックマークする時はPackageRのURLにしましょう Haskellは関数が独立しているので, OOPLなどのメソッドと違い, 関数の名前で検索をかけることが容易です. というわけで, Hoogle Hayoo! Haskell API Search Hoogle Search :: Stackage Server と言ったHaskellの関数を検索するサービスが複数ありますが, 私は今はStackage Serverに付属のHoogleを使っています. HackageよりStackageの方がHaddock生成が早かったり, デザインが優れている所を気に入っています. さて, Stackage ServerのHoogleはトップページにアクセ

    Stackage Serverのちょっとした便利な使い方, Hoogleをブラウザのカスタム検索エンジンに追加しましょう, よく使うパッケージをブックマークする時はPackageRのURLにしましょう
  • ゲーム販売webアプリケーションSYAKERAKEを支える技術, HaskellとYesodで作られています

    ゲーム販売webアプリケーションSYAKERAKEを支える技術, HaskellとYesodで作られています Haskell (その3) Advent Calendar 2017 - Qiitaの3日目の記事です. この前「Haskellで書かれたwebサービスって何がある?」と聞かれて, HackageとかStackageのようなHaskellに関連したサービスぐらいしかパッと出せませんでした. なので, webアプリケーションであるSYAKERAKEがHaskell製であることと, これを構成するライブラリなどを書いていこうと思います. SYAKERAKEがどういうサービスかはサイトを見ていってください. 半分このサービスの宣伝です. お許しください. この記事を読むことで, 小規模ながらもプロダクションレベルのwebアプリケーションがHaskellで作れるということがわかっていただけ

    ゲーム販売webアプリケーションSYAKERAKEを支える技術, HaskellとYesodで作られています
    igrep
    igrep 2017/12/03
    Setup.hsを使う方法、なるほどね。その他いろいろ事例としてありがたい。
  • 私のHaskellコーディングスタイルガイド, 改行出来るポイントを紹介

    Haskell (その3) Advent Calendar 2017 - Qiitaの2日目の記事です. Haskellは各構文を文ではなく式として扱えるため, 適当に書いていくと, どんどん一行が長くなっていきます. その結果, ワンライナーのようなコードが作られることがよくあります. この目のチカチカを避けるためか、どうか、出来るだけ間隙を狭くするために、Haskellプログラマーは無意識にワンライナーになります。例えば上の例だと 2 のケースをだらだらーと一行に書きたがるのですね。その結果、一行500文字の Haskellコードなどが産み出されるのです。私は出来るだけ長くプログラム書くキャリアを続けたいんで、フォントは大きいんですよ。何ポイントか知らないけど、30inch のモニタでウィンドウいっぱいいっぱいにして190文字位しか一行に出せないんです。500文字のためには30inch

    私のHaskellコーディングスタイルガイド, 改行出来るポイントを紹介
  • HaskellのStateの必要性が, プログラミング言語の処理系を書いた時にわかったので, Stateの良さを語ります

    HaskellのStateの必要性が, プログラミング言語の処理系を書いた時にわかったので, Stateの良さを語ります Haskell (その3) Advent Calendar 2017 - Qiitaの1日目の記事です. Haskell初心者の頃はStateが何故必要なのかわからなかった 私はHaskellを書き始めてから2年ぐらいはStateの存在意義がわかりませんでした. こんなものは無くて良いと考えていました. Haskellは純粋関数でシステムを構成して, 引数と返り値だけでものごとを構成しています. 私はそこに魅力を感じてHaskellを学びました. そこで, Stateのような変数をエミュレートするような仕組みを導入したら, せっかく変数なしにシステムを構築してるのが台無しになってしまうと考えていました. つまり, Haskell初心者の頃の私は, 常にa -> Worl

    HaskellのStateの必要性が, プログラミング言語の処理系を書いた時にわかったので, Stateの良さを語ります
  • Haskellを書くときはstylish-haskellとhlintを使って労せずして綺麗なコードを書きましょう

    3年前ぐらいからHaskellを書くときには, stylish-haskellとhlintを使ってコードを書いています. これらを使うと, 私のようにツールに頼ってコードを書いているだけでも「コードが綺麗」と褒めてくれるようになります. しめしめ. 他にHaskellを書く時に良いツールがあれば是非教えてください. jaspervdj/stylish-haskell: Haskell code prettifier stack install stylish-haskellでインストール可能です. stylish-haskellはコード整形ツールです. このツールは importの揃え プラグマの揃え, 及び不要なプラグマの削除 無意味な空白の削除 レコードの縦揃え パターンマッチの揃え などをしてくれます. 詳しくは公式サイトを見るのが良いと思います. この記事いる? この中でもimpo

    Haskellを書くときはstylish-haskellとhlintを使って労せずして綺麗なコードを書きましょう
    igrep
    igrep 2017/10/07
    “hlintを使用すると無意味な記述を防ぐだけでなく,知らない標準ライブラリの関数を教えてくれるため,初心者Haskellプログラマは少し知識を深めることが可能”
  • haskellプログラムのimportの別名が多くなる問題にはclassy-preludeを使いましょう

    classy-preludeというhaskellパッケージの紹介です. importの別名が多くなってしまう問題 haskellでは多くのデータ構造に対する関数がほぼ同じ意図を持っているのにも関わらず, 違うモジュールで違う型で定義されています. lookup, insert, length, member, updateなどですね. データ構造に対する典型的な関数たちは多く被っています. 例えばlookup関数は単なる関数で, baseの Data.List では, lookup :: Eq a => a -> [(a, b)] -> Maybe b と定義されています. unordered-containersの Data.HashMap.Lazy では lookup :: (Eq k, Hashable k) => k -> HashMap k v -> Maybe v と定義されて

    haskellプログラムのimportの別名が多くなる問題にはclassy-preludeを使いましょう
    igrep
    igrep 2017/09/17
    classy-prelude, 想像以上classyなんだなぁ。
  • これからのHaskellプロジェクトではcabalではなくpackage.yaml(hpack)を使いましょう

    sol/hpack: hpack: An alternative format for Haskell packages hpackとは hpackとは, cabalファイルを生成してくれるツールです. package.yamlファイルからcabalファイルを生成します. JavaScriptに対するAltJSのようなものです. hpackは何が良いのか yamlである hpackのフォーマットであるpackage.yamlyamlフォーマットです. 独自のフォーマットを採用しているcabalとは違い, 様々なエディタが普通に対応しており, プログラムからも扱いやすくなっています. ボイラープレートを自動生成してくれる default-language: Haskell2010のような現代では当たり前の記述を自動生成してくれるため, わざわざ書かなくて済むようになります. exposed

    これからのHaskellプロジェクトではcabalではなくpackage.yaml(hpack)を使いましょう
    igrep
    igrep 2017/07/31
    そういえばずるずると使っていなかったなぁ。
  • yesodで全てのモデルにcreatedAt, updatedAtを作りたかった話

    User email Text name Text createdAt UTCTime updatedAt UTCTime のように, それぞれのモデルに生成時間と更新時間を付けたい. 役に立つことがあるかもしれない 全てのモデルにつけることで一貫性を保ちたい 問題 単純にFormを userForm :: Form User userForm = renderBootstrap3 BootstrapBasicForm $ User <$> areq emailField "email" Nothing <*> areq textField "name" Nothing <*> lift (liftIO getCurrentTime) <*> lift (liftIO getCurrentTime) <* bootstrapSubmit ("submit" :: BootstrapSubm

    yesodで全てのモデルにcreatedAt, updatedAtを作りたかった話
    igrep
    igrep 2016/12/05
    Railsのやつも結局使い道ほぼなかったもんなー。デバッグ時にちょっと便利なくらい?
  • 1